결론
많은 것들이 이미 만들어져 있고, 그래서 비교적 간단하게 만들 수 있었다.
목차
1. 노드 연결
2. 블록 탐색 방법
3. 노드에서 정보 받아오기
4. 크롬 익스텐션 지갑
노드 연결
노드 연결은 도커로 배포하여 노드 3개 각각 클라우드를 풀노드를 만들어서 연결시켰다. genesis.json에 초기 설정(거버넌스 및 수량)을 할 수 있고, 블록 생성시간, peer 노드 또한 conifg 파일에서 수정이 가능하다. 자세한 사항은 도커 파일에 정리해두었다. 노드를 연결시키며 굉장히 편리하게 만들었으며, 많은 블록체인 메인넷들이 cosmos-sdk를 어림잡아 사용하는 이유를 알 수 있었다.
아래 링크는 도커로 노드를 연결한 방법이다. gcp로 각각 띄울 것이면, 도커는 필요 없고 내용에 도커를 제외한 나머지를 참고하면 될 것이다. 현재는 버전 0.2인데, 추후에 조금 더 간단하게 만들어볼 의향이 있다.
Docker Hub
hub.docker.com
블록 탐색 방법
노드를 생성하여, 각각의 노드가 블록 생성이 정상적으로 시작이 되고, 요구하는 포트 포워딩을 정상적으로 열어 두었으면, rpc, api 포트로 노드에 정보를 받을 수 있게 된다. 그렇다면 블록 탐색기를 만들 수 있는 기초가 생성이 된다.
노드에서 정보 받아오기
우선, 정보를 받아오려면 app.toml 파일에 cors 가 풀려있는지 확인하도록 하자. 그러고 나서 정보를 받아올 때는 총 두 가지 방법이 존재한다.
1. rpc, api 포트로 정보를 요청하여 백엔드에 DB를 두어 저장 하 client 웹사이트에 요청 시 받아오기
2. rpc, api 포트에 백엔드에 DB를 두지 않고 client 웹사이트에 요청 시 노드에서 정보 받아오기
이 두 가지에서 고민을 하였는데, client 쪽에서는 웹사이트에 뿌려지는 합쳐진 정보가 client 노드에서 주는 정보와 일치하지 않기 때문에 백엔드에서 어느 정도 정보 조합이 필요하다. 그래서 1번을 선택하였고 진행하게 된다. 뿌려지는 정보는 app.toml에 swagger를 켜서 확인하거나 rpc의 엔드포인트로 요청을 할 경우 기본적으로 제공을 한다. api 버전별로도 또 다르니 밑 링크의 api docs를 확인하도록 하자. 생각보다 docs 업데이트가 잘 안 되어 있고, 직접 입력해보며 값을 찾아야 하는 부분이 많으므로, 대처하는 방법이 중요합니다.
Cosmos: The Internet of Blockchains
Cosmos is an ever-expanding ecosystem of interoperable and sovereign blockchain apps and services, built for a decentralized future.
cosmos.network
크롬 익스텐션 지갑
크롬 익스텐션 지갑의 기능은 create, import, send, staking, voting으로 나눌 수 있습니다. 이는 각각 모듈은 문서에 나와있으므로 참고하여 만들어보았습니다. 하지만 문서에 나와온 대로 따라 해도 문서가 부실하거나 없는 부분이 많습니다. 각각 프로젝트마다 테스트 코드를 osmojs, cosmjs에 테스트 코드로 작성한 것들이 있으므로 소스코드 내부를 보면서 만들면 수월한 부분이 많습니다. 밑에 osmojs docs를 남겨놓겠습니다.
https://docs.osmosis.zone/osmojs
생각만 했었던 것들을 직접 만들어본 후기로는 많은 것들이 문서 업데이트가 되지 않아서, 헤매었던 기억이 있었고 상황마다 융통성 있게 해결할 필요가 있었던 대처 방법이 필요하다는 것을 깨닫게 되었습니다. 위 방법으로 비교적 간단한 블록 탐색기와 크롬 익스텐션 지갑을 만들어 볼 수 있다. 결과물을 아래에 노션 첨부하도록 하겠습니다. 감사합니다.
https://calm-dryosaurus-125.notion.site/3fd13ab5996049d49954dc2b2e31418f