처음 tendermint network를 구성할 때는 신뢰할 수 있는 몇 개의 validator를 두고 각 validator들의 config 파일들을 생성하게 됩니다(tendermint testnet 명령어를 활용하면 편할 것으로 보임). 각 machine에서 config 파일을 나눠가진 뒤 해당 디렉토리를 docker의 volume으로 로드하여 docker image가 실행되는 방식이 될 것 같습니다.
추후 live tendermint network에 node를 추가하는 방법
기존의 tendermint network에 node를 추가할 때는 기존 network의 genesis.json 파일과 seed로 사용할 node의 address가 필요합니다.
genesis.json 파일의 경우 기존 tendermint network node에 /genesis rpc response에서 가져올 수 있습니다. 해당 genesis.json 파일은 새로운 tendermint node를 시작할 때 config 파일로 사용하게 됩니다.
seed로 사용할 node의 address를 얻기 위해서는 우선 해당 node로부터의 /status rpc response에서 node_info object의 id에 해당하는 value를 가져와야합니다. node의 address는 ID@IP:PORT 와 같은 구조로 구성되며 이를 새로운 tendermint node를 실행할 때 seed list로 명시해주어야 합니다.
추후 live tendermint network에서 validator를 추가하는 방법
tendermint의 abci example에 있는 persistent kvstore는 특정 tx을 통해 새롭게 추가할 validator의 pubkey와 voting power를 입력받아 tendermint의 validator set을 변경합니다. 해당 내용을 참고해서 paust-db를 수정하면 될 것 같습니다.
persistent kvstore의 경우 따로 authentication없이 바로 validator set이 변경되므로 civil attack의 문제점이 있습니다. 따라서 paust-db에서는 해당 사항을 보완해야할 것으로 보입니다.
Reference
63
paust-db prototype을 docker로 패키징을 하여 배포를 할 경우 tendermint 설정과 관련해 추가로 개발이나 안내가 필요한 사항들을 정리해보았습니다.
다음의 tendermint network docs를 한 번 읽어보시면 이해하기 좋아보입니다.(https://tendermint.com/docs/tendermint-core/using-tendermint.html#tendermint-networks)
초기 tendermint network 구성방법
tendermint testnet
명령어를 활용하면 편할 것으로 보임). 각 machine에서 config 파일을 나눠가진 뒤 해당 디렉토리를 docker의 volume으로 로드하여 docker image가 실행되는 방식이 될 것 같습니다.추후 live tendermint network에 node를 추가하는 방법
/genesis
rpc response에서 가져올 수 있습니다. 해당 genesis.json 파일은 새로운 tendermint node를 시작할 때 config 파일로 사용하게 됩니다./status
rpc response에서 node_info object의 id에 해당하는 value를 가져와야합니다. node의 address는ID@IP:PORT
와 같은 구조로 구성되며 이를 새로운 tendermint node를 실행할 때 seed list로 명시해주어야 합니다.추후 live tendermint network에서 validator를 추가하는 방법tendermint의 abci example에 있는 persistent kvstore는 특정 tx을 통해 새롭게 추가할 validator의 pubkey와 voting power를 입력받아 tendermint의 validator set을 변경합니다. 해당 내용을 참고해서 paust-db를 수정하면 될 것 같습니다.persistent kvstore의 경우 따로 authentication없이 바로 validator set이 변경되므로 civil attack의 문제점이 있습니다. 따라서 paust-db에서는 해당 사항을 보완해야할 것으로 보입니다.