GentBG x PUSSTEEM - burning both STEEM and PUSS

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/gentbg-x-pussteem-burning-both-steem-and-puss Hello, this is @joviansummer(witness: @jswit), developer of GentBG project. I registered @gentbg account to PUSSTEEM about a week ago and donated some of my own PUSS token to @gentbg's EPUSS account. Now, @gentbg will burn STEEM and EPUSS at the same time. PUSSTEEM's boosting upvotes will help increasing baseline burning significantly. @gentbg's SP reward is delegate to @jsup to get automated upvotes, forming a baseline burning of liquid reward independent of other people's upvotes. Some may argue 100%(both liquid and SP reward) burning is much better, but I chose this approach to prevent @gentbg from becoming a spamming account. Constantly asking for upvotes via mentioning and commenting every week may eventually become a big annoyance to curators. That being said, anyone is welcome to participate in countering STEEM inflation by giving upvotes ...

스팀 API 노드의 개략적 구성, 그리고 full node의 의미

by joviansummer
original STEEMIT post: https://steemit.com/blog/@joviansummer/fcae32-api-full-node


아래의 내용은 제가 개념적으로 이해하고 있는 부분이고, 실제로 작업해 본 적은 없습니다. 그렇긴 하지만 스팀잇이 어떻게 동작하는지에 대해 약간의 이해도를 높일 수 있는 내용이지 않을까 싶어서 써 봅니다. 이 점을 감안해 주시기 바라며, 개인적인 추측이 많기 때문에 혹시 내용중에 잘못 알고 있는 부분이 있으면 댓글로 알려 주시면 감사하겠습니다.

스팀잇은 스팀 블럭체인을 이용한 웹 서비스입니다. 예를 들어 포스팅을 하면 하면 그 내용과 부가정보가 블럭체인에 기록되고, 열람을 하면 기록된 내용을 블럭체인으로부터 조회합니다. 증인 노드들이 블럭체인에 기록되는 내용을 유지하는 역할을 합니다.

블럭체인과의 상호작용 과정은 API 노드와의 통신으로 이루어집니다. API 노드는 블럭체인 데이터와 함께 이를 효율적으로 관리하기 위한 데이터베이스(DB)를 갖추고 있습니다. 스팀잇의 API 노드는 3개의 노드로 이루어집니다. 제가 여기서 사용하는 명칭이 정확한 공식 명칭이 아닐 수도 있습니다만, RPC 노드, AH 노드, Hivemind 노드입니다.

메인 노드는 RPC 노드이고, 계정 이력(account history) 관련 기능을 제공하는 것이 AH 노드이고, 커뮤니티 관련 기능을 제공하는 것이 Hivemind 노드입니다. 스팀잇이나 다른 스팀 관련 앱에서 사용하는 API 요청은 그 성격에 따라 위의 3개 노드에 의해 처리됩니다.

현재 API 노드 현황은 아래의 링크에서 확인해 볼 수 있습니다. @justyy님의 웹사이트입니다.

https://steemyy.com/node-status.php

현황을 보면 여러개의 API 노드 주소가 존재하는 것을 볼 수 있습니다. 이 노드들이 각자의 AH 노드, Hivemind 노드를 갖추고 있는 지는 불분명합니다. 제가 지금까지 서비스를 개발하고 운영하면서 추측하는 부분은, 이들중 대다수 또는 전부가 AH 노드, Hivemind 노드를 스팀 공식 노드인 api.steemit.com에 의지하고 있거나 또는 관련 기능을 제공하고 있지 않고 있는 것 같습니다.

저는 처음엔 막연하게 RPC 노드 하나로 모든 것을 할 수 있지만 성능 향상 측면의 이유로 노드를 추가로 구성했다고 생각했었습니다. 그래서 나머지 2개 노드가 없거나 장애가 발생해도 기본적인 서비스나 API 사용은 성능이 떨어질 뿐 RPC 노드에서 가능할 것이라고 생각했었는데, 실제로는 그런게 아니라 이 3개 노드중 하나라도 동작이 중단되면 실질적인 서비스 장애로 이어지는 것이 아닌가 추측됩니다.

노드를 3개나 구축해서 운영하는 것은 쉬운일이 아니고 비용도 무시할 수 없을 것입니다. 서버 임대 비용이 계속 발생하는 것은 물론이고 한번 구축하고 방치하면 되는 것이 아니라 지속적으로 점검하고 관리해 주어야 합니다. 그렇게 때문에 이것이 아무나 부담 없이 3개 노드를 구축하고 연동해서 운영할 수 있는 사안은 아닌 것 같습니다. 그보다는 공식 API 노드가 api.steemit.com 이외에 하나가 더 있으면 좋지 않을까 생각됩니다. api.steemit.com에 문제가 생기면 api2.steemit.com을 사용할 수 있다던가 이런 식으로 말이죠.

API 노드는 많을수록 좋겠지만, 확실하게 동작하는 노드(rpc + AH + Hivemind)가 독립적으로 2개만 있어도 서비스 안정성은 비약적으로 향상되지 않을까 생각합니다. 장애가 발생했을 때도 성격이 분명하게 구분될 것 같습니다. 둘중 하나가 멈추면 하드웨어 또는 실행중인 프로세스(process)에 문제가 있을 가능성을 생각할 수 있고, 양쪽이 동시에 멈추면 코드(code) 또는 설정(configuration)에 문제가 있을 가능성을 생각할 수 있겠죠.

최근에 스팀잇 재단에서 스팀 발전을 위한 DIP를 진행하고 있고 저도 미약하나마 제안도 했습니다만, DIP 예산의 일부를 할애하거나 또는 새로운 예산을 책정하여 재단측에서 스팀잇 미러(mirror) 사이트와 API 노드를 추가로 구축하는 것도 한 가지 방법이 될 수 있을 것 같습니다.

제가 전문 개발자가 아니고 @jsup 서비스를 개발하고 @jswit 증인 노드를 구축하는 과정에서 혼자 이것 저것 찾아보면서 머릿속에서 조합한 것이라 위의 내용이 100% 맞다고 확신할 수는 없습니다. 그래도 누군가에게는 참고가 될 수도 있지 않을까 싶기도 하고, 저 자신에게도 기억력에 의존하는 것보다는 관련 내용을 이렇게라도 기록해 두는 것이 좋을 것 같아서 정리해 보았습니다.

편안한 주말 되시기 바랍니다. 감사합니다.


@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다.

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

STEEM.NFT - 디지털 아트 보존 프로젝트

Posted through the AVLE Dapp (https://avle.io)

Comments

Popular posts from this blog

스티미언의 영향력 지수 계산

jsup/avle code update - you don't have to write post everyday

jsup/avle 보팅 코드 갱신 - 1일1포스팅 강박에서 벗어나기