Private Network Example - Hyperledger Besu
Last update: April 22, 2021 Quorum Developer Quickstart tutorial The Quorum Developer Quickstart uses the Hyperledger Besu Docker image to run a private IBFT 2.0 network of Besu nodes managed by Docker Compose. Warning This tutorial runs a private network
besu.hyperledger.org
Hyperledger Besu๋ Quorum Developer Quickstart๋ผ๋ ์ด๋ณด์ฉ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํ๋ค. ํด๋น ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด, Hyperledger Besu์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ๋น๋ํ๊ณ , ํ์ํ ๋คํธ์ํฌ(private network)์ ๊ธฐ๋ฐ์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ํ 4๊ฐ์ validator์ 1๊ฐ์ non-validator๊ฐ ์์ฑ๋๋ค. ์ด๋ non-validator๋ RPC๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ ธ๋์ด๋ค. ๊ธฐํ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ํฌํจํด Docker Compose ํ์ผ๋ ์ธํ ์ด ๋์ด์๋ค.
๊ทธ๋ฅ '์ด๋ฐ๊ฒ ์๊ตฌ๋'ํ๊ณ ๋์ด๊ฐ์๋ ์๋๋ค! ํด๋น ํ๋ก๊ทธ๋จ์ ํ์ํ(private) ๋ธ๋ก์ฒด์ธ์ ์ด๋ ํ ๊ณผ์ ์ ํตํด์ ๊ตฌ์ฑํ ์ ์๋์ง ์์๋ณด์.
1. docker-compose.yml
Prerequisites๋ฅผ ๋ชจ๋ ์ค์นํ๊ณ run์ด ๋๋๊ณ ๋๋ฉด, ์ง์ ํ ํด๋์ ์์ ๊ฐ์ด ์ค์น๊ฐ ๋๋ค. ๊ทธ ์ค ๊ฐ์ฅ ๋จผ์ ๋ณผ ๊ฒ์ 'docker-compose.yml'์ด๋ค. ์์ ๋งํ๋ฏ์ด Quorum Developer Quickstart๋ Hyperledger Besu์ ์ฌ๋ฌ ํ๋ฌ๊ทธ์ธ์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ ์ปจํ ์ด๋๋ก ๋น๋ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋์ ์ต์ ๋ค์ ๋ชจ๋ ์ค์ ํ์ฌ ์์๋๋ก ์คํ์์ผ์ฃผ๋ ๊ฒ์ด '๋์ปค ์ปดํฌ์ฆ(Docker Compose)'์ด๋ค. ๊ทธ๋ง์ ์ฆ, ์ด๋ค ์ต์ ์ผ๋ก ์ปจํ ์ด๋๋ค์ ์คํ์์ผฐ๋์ง ๋์ปค ์ปดํฌ์ฆ๋ฅผ ๋ณด๋ฉด ๋ชจ๋ ์ ์ ์๋ค๋ ๊ฒ์ด๋ค.
vi ์๋ํฐ๋ก docker-compose.yml์ ์ด์ด๋ณด๋ฉด ๊ฐ์ฅ ์ฒซ์ค์๋ yml ํ์ผ ํฌ๋งท์ ๋ฒ์ ์ด ์ ํ์๋ค. ๊ทธ ์๋๋ก x-besu-๋ก ์์ํ๋ ์ด๊ฒ ์ ๊ฒ ๋ณด์ด์ง๋ง, Page Down์ ๋๋ฌ "services: "๊ฐ ์ ํ ๊ณณ์ ์ฐพ์ ๋จผ์ ๋ณด์. ์ฌ๊ธฐ์ service๋ Docker์ ์ฌ๋ฆด ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์๋ฏธํ๋ค.
Quorum Developer Quickstart๋ ํ ์คํธ๋ฅผ ์ํด ์ด 4๊ฐ์ validator์ 1๊ฐ์ non-validator๋ฅผ ์์ฑํ๋ค. environment์์๋ ์๋น์ค์ ์ด๋ฆ๊ณผ Hyperledger Besu์ ๋ฒ์ ์ ์ ์ํ๊ณ ์๋ค. ์ฒ์ ๋์ปค๋ก runํ ๋, ์ต์ ์ผ๋ก ๋ฃ์ ๊ฐ์ธ 'latest'๊ฐ service.version์ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์๋ volumes ํญ๋ชฉ๋ค์ ๋ณด๋ "์๋ ๋ก์ปฌ๋ก ๊น๋ ค์์๋ค๋ฉด (':'๊ธฐ์ค์ผ๋ก) ์ค๋ฅธ์ชฝ์ ์๋ ์ฃผ์์์ ์ฐพ์์ผ ํ ๊ฒ๋ค์ ์ผ์ชฝ ์ฃผ์์ ์๋ค"๋ผ๊ณ ์ด์ผ๊ธฐํ๋ ๋ฏํ๋ค.
volumes์ ํญ๋ชฉ๋ค์ ๋ณด๋ ์๋ ํญ๋ชฉ๋ค์ ์ฐธ์กฐํ๋ ๋ฏํ๋ค. config, genesis ๋ฑ์ ๋จ์ด๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ณด๋ ๊ตฌ์ฑ ํ์ผ(configuration fille, ํ๋ก๊ทธ๋จ์ ๋งค๊ฐ ๋ณ์ ๋ฐ ์ด๊ธฐ ์ค์ ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ์ผ)์ธ ๋ฏํ๋ค. ์๋ ํ์ผ๋ค์ ์กฐ๊ธ ์ด๋ฐ๊ฐ ์ฐฌ์ฐฌํ ์ดํด๋ณด๋๋ก ํ์.
- config.toml
- permissions_config.toml
- static-nodes.json
- log-config.xml
- log-config.splunk.xml
- genesis.json
volume ๋ค์์ network์๋ ipv4_address์ ํด๋น ์ปจํ ์ด๋์ ํ ๋น ๋ IP ์ฃผ์๊ฐ 172.16.239.11์๋ค. ๊ทธ๋ฌ๊ณ ๋ณด๋ ๋์ปค์์๋ ์ด๋ป๊ฒ IP๊ฐ ํ ๋น ๋๊ณ , ์ด๋ค ๊ตฌ์กฐ๋ก ๋์๊ฐ๋ ๊ฑด์ง ๊ถ๊ธํด์ก๋ค.
๋์ปค์ ๊ฐ ์ปจํ ์ด๋๋ ๊ฐ์ ์ด๋๋ท ์ด๋ํฐ(veth, virtual ethernet๋ฅผ ๊ฐ๋๋ค. ๋ง์ฝ ๋์ ๊ฐ์ ์ต์ ์ ์ ํํ๋ค๋ฉด, docker ps -a๋ก ๋ดค์ ๋, ์ด 15๊ฐ์ ์ปจํ ์ด๋๊ฐ ์คํ๋๊ณ ์์ ๊ฒ์ด๋ค. ์ด veth๋ค์ด docker0์ ๋ฐ๋ก ์ฐ๊ฒฐ๋๋ ๊ตฌ์กฐ๋ผ ์๊ฐํ๋๋ฐ, docker-compose๋ก ๋ฌถ์ฌ ์์ด์์ธ์ง(ํ์คํ์ง ์๋ค) bridge๋ฅผ ํ๋ ๋ ๊ฑฐ์น๋ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
์๋ฌดํผ docker-compose.yml ์์ ํด๋น ์๋น์ค(์ปจํ ์ด๋)์ ์ด๋ค IP๋ฅผ ์ค์ง ์ ์ํ๊ณ ์๊ณ , Validator1์ ์ค์ ํ ๋น ๋์๋์ง๋ docker inspect [Validator1์ ์ปจํ ์ด๋ ID]๋ฅผ ์ ๋ ฅํด "NetworkSettings" ๊ฐ์ ํ์ธํด๋ณด๋ฉด ๋๋ค. ๊ฒฐ๊ตญ, docker-compose.yml ํ์ผ์ ๊ด๋ฒ์ํ๊ฒ ์ฌ๋ฌ ๊ฐ๋ค์ ์ค์ ํด ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์ปจํ ์ด๋๋ค์ด ์คํ๋ ์ ์๋๋ก ํด์ฃผ๋ ํ์ผ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ์ค์์ ์ด๋ค ์ค์ ๋ค์ ๊ตฌ์ฑ ํ์ผ๋ก ๋ฐ๋ก ์ ์๋์ด์์๋ค. ๊ตฌ์ฑ ํ์ผ๋ค์ ํ๋์ฉ ๋ณด๋๋ก ํ์.
2. configuration files
๋จผ์ /config/besu/config.toml์ ํญ๋ชฉ๋ค์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ๋ค.
ํญ ๋ชฉ | ์ค ๋ช |
rpc | rpc ๊ธฐ๋ฅ์ ๊ดํ ์ค์ ์ด๊ฐ๊ฐ |
ws | ์ ๋ชจ๋ฅด๊ฒ ์ |
graphql | graphql(API ๊ด๋ฆฌ) ์ค์ ์ด๊ธฐ๊ฐ |
metrics | ๋ชจ๋ํฐ๋ง ๋ชฉ์ ์ ํต๊ณ ์์ง ์ค์ ์ด๊ธฐ๊ฐ |
permission | private network์ด๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ๊ฐ์ ํ์ฉ ๋์ ์ ์ |
bootnodes | ์ด๋ค ๋ ธ๋๊ฐ ๋ถํธ๋ ธ๋์ธ์ง enode url๋ก ์ค์ |
static nodes | ๋์ ์ผ๋ก ์๋ก ๊ฐ์ ํ์ง ์์ ๋ฏธ๋ฆฌ ์ ์๋ ๋ ธ๋ |
bootnode, enode url ๋ฑ์ ๋จ์ด๊ฐ ๋ฏ์ค์๋ค.
๋จผ์ bootnode๋ ๊ฐ๋จํ ์ด์ผ๊ธฐํ๋ฉด ํน์ ์ด๋๋ฆฌ์ ๋คํธ์์ ์ฐธ์ฌํ๊ณ ์ ํ๋ ๋ ธ๋๋ค์ ์๋ก ์ฐ๊ฒฐ์์ผ ์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์๋ฅผ ๋ค์ด ์๋ ๊ทธ๋ฆผ์ node4๊ฐ bootnode์ ๋ถ์ผ๋ฉด bootnode๋ ํ์ฌ ๋ถ์ด ์๋ ๋ ธ๋ ์ ๋ณด(node1...node3)๋ฅผ node4์ ์๋ ค ์ค๋ค. node4๋ ์ด ์ ๋ณด์ ๋ฐํํด์ ๋ค๋ฅธ ๋ ธ๋๋ค๊ณผ ํต์ ํ๋ฉฐ p2p ๋ง์ ์ด๋ฃฌ๋ค. ๊ทธ๋ฆฌ๊ณ node4๋ ์์๋ก bootnode์ ๋ถ์ด ์ด ์ ๋ณด๋ฅผ ๊ฐฑ์ ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด bootnode๋ฅผ configure.toml์์๋ "enode://..."๋ก ์์ํ๋ url ์ฃผ์๋ก ์๋ ธ๋ค. ์ด๊ฒ์ ์ด๋๋ฆฌ์ ๋ ธ๋์ ์ฃผ์๋ฅผ ํ๊ธฐํ๋ ํ๋์ ์ฒด๊ณ์ธ๋ฐ, "enode://[๊ณต๊ฐํค]@[๋ ธ๋์ IP]:[๋ฃ๊ณ ์๋ ํฌํธ]"์ ํ์์ ๊ฐ์ง๊ณ ์๋ค. docker inspect๋ก IP ์ฃผ์๋ฅผ ์ ์ ์๊ณ , docker ps -a๋ก ์ด๋ ค ๋ฃ๊ณ ์๋ ํฌํธ ๋ฒํธ๋ ํ์ ํ ์ ์๋ค. ์์ ํ์์ permission ํญ๋ชฉ์, permission_config.toml๋ฅผ ์ฐธ์กฐํ๊ณ ์๋๋ฐ, ์ด๊ฒ์ vi ์๋ํฐ๋ก ์ด์ด๋ณด๋ฉด ํ์ฌ ์ฌ๋ ค์ ธ์๋ ๋ชจ๋ ๋ ธ๋์ ์ฃผ์๋ enode url ํํ๋ก ์ ํ์์ ๊ฒ์ด๋ค.
https://eth.wiki/fundamentals/enode-url-format
enode url์ ๊ณต๊ฐํค๋ผ๋ ๋จ์ด๊ฐ ๋์จ๋ค. ํ๋ถ ์์ ๋ ์ ๊น ๋ค์๋ ๊ธฐ์ต์ ๋์ง๋ง, ์์ธํ ๊ธฐ์ต๋์ง ์์ ๋ฟ๋๋ฌ ์ด๊ฒ ์ ํ์ํ์ง ์ฐพ์๋ดค๋ค. ์ค๋ช ์ด ๋๋ฌด ์ ๋์ด ์์ด, ์๋ ๊ธ์ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๋ฏ ํ๋ค. ๋๋จธ์ง ๋ชฉ๋ก์ ์๋ ํ์ผ๋ค๋ ํ๋ํ๋ ์ด์ด๋ณด๋ฉด์ ์ด๋ค ๊ฐ๋ค์ด ์ ํ์๋์ง ์ฐพ์๋ดค๋ค.
[Mastering Ethereum] 3์ฅ ํค์ ์ฃผ์ — Steemit
์๋ ํ์ธ์. ๊ฐ๋ฐ์ ๋ชจ๋๋ฆฌ์ ๋๋ค. ์์ฆ ์ฐธ์ฌํ๊ณ ์๋ ์คํฐ๋์์ Mastering Ethereum ๋ฅผ ๊ต์ฌ๋ก ํ์ฌ ๋งค์ฃผ ์คํฐ๋๋ฅผ ์งํํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ์ฃผ์ ์ ๊ฐ ๋งก์ ๋ถ๋ถ์ ์ ๋ฆฌํด์ ์ฌ๋ฆฝ๋๋ค. TIP ์ด๋๋ฆฌ
steemit.com
3. genesis.json
์ ๊ทธ๋ผ ์ฌ๊ธฐ๊น์ง ์์๋ฅผ ์๊ฐํด๋ณด์. docker-compose.yml ์ ๋ณด๋ฉฐ, ๋์ปค ์ปดํฌ์ฆ๊ฐ ์ต์ ์ ๋ง๊ฒ ์ปจํ ์ด๋๋ฅผ ์คํ์ํค๊ธฐ ์์ํ๋ค. ๋จผ์ bootnode์ธ validator1์ด ๋จผ์ ์ฌ๋ผ์จ๋ค. ๊ทธ ๋ค์์? ์ต์ด์ ๋ธ๋ก์ ์์ฑํด์ผ ํ๋ค. ๋ค๋ฅธ ๋ง๋ก ์ ๋ค์์ค ๋ธ๋ญ(Genesis block)์ด๋ผ๊ณ ํ๋ฉฐ, ์ด ๊ณณ์๋ ๋ค์ํ ์ค์ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ์ค์ ๊ฐ์ด ๋ค์ด๊ฐ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ด์ฉ์ ์ ์ํ๋ ๊ฒ์ด genesis.json์ด๋ค. ์ผ๋จ ์ด์ด๋ณด์.
cliqueGenesis.json, ibft2Genesis.json ๊ฐ๋ค. ์ด ๋ ์ค ํ๋๋ genesis.json์ผ๋ก ์ฌ์ฉํ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ณฐ๊ณฐํ ์๊ฐํด๋ณด๋, ์๊น docker-compose.yml์ volume์์ ํ์ผ์ ๋งค์นญ ์์ผ์คฌ์๋ ๊ฒ์ด ๊ธฐ์ต๋๋ค.
๋ด๊ฐ ์ง์ ์ค์ ํ ์ ์ ์์ง๋ง, default๋ก ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ibft2๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ ๋ฏํ๋ค. ๋ค์ ๋ณด๋ Besu์ Quorum Developer Quickstart ๋งํฌ ๊ฐ์ฅ ์ด์ฅ์ IBFT 2.0 ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ค๊ณ ๋์์๋ค. ์ ์ฌ์ง์ ๋ ธ๋ ๋ค๋ชจ๋ฅผ ๋ณด๋ฉด, ์ค๋ฅธ์ชฝ ๊ฒฝ๋ก genesis.json์ ibft2Genesis.json์ ๋์์์ผ๋จ์์ ์ ์ ์๋ค. Clique๋ IBFT 2.0์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ์ผ์ข ์ธ๋ฐ, ์ข ๋ ์์ธํ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
์๋ฌดํผ ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ genesis.json์ ibft2Genesis.json์ด๋ค! ์ต์ด์ ๋ธ๋ก์๋ ์ด๋ค ๋ด์ฉ๋ค์ด ์ ํ ์๋์ง ํ๋ํ๋ ๋ฏ์ด๋ณด์. ์ฌ์ง ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ ๊ฐ ์์ฑ ๊ฐ๋ค์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ฐพ์๋ดค๋ค.
Explaining the Genesis Block in Ethereum
Every blockchain has to start somewhere, so there’s what’s called a genesis block at the beginning. This is the first block, and in it the creators of Ethereum were at liberty to say “To start, the following accounts all have X units of my cryptocurr
arvanaghi.com
config: chainID
๋ด๊ฐ ์ด๋ ์ฒด์ธ์ ์ฌ๋ผ์ ์๋์ง ์๋ ค์ค๋ค. ์ด๋๋ฆฌ์ ๋ฉ์ธ๋ท์ chainID๋ 1์ด๋ค. ์ฌ๊ธฐ๋ 1337๋ก ๋์ด ์๋๋ฐ, ์ด๊ฑด private chain์ default ์ฒด์ธ ID๋ผ๊ณ ํ๋ค. (1-Ethereum mainnet, 2-Morden, 3-Ropsten, 4-Rinkeby, 5-Goerli, 42-Kovan, 1337-Private(default))
alloc
๋คํธ์ํฌ์ ๋ค์ด์์ ๋, ์ด๋ค ์ฌ๋์ ์ง๊ฐ์ ์ผ๋งํผ์ ๋์ ์ฑ์๋์ง๋ฅผ ์ ํ๋ค. ์ฌ๋๋ค์ ์ฃผ์์ ์ฑ์์ค ๊ธ์ก์ด ์ ํ์๋ค. ์์ ์์๋ private key๋ฅผ ๊ฐ์ด ๋ฃ์ด์คฌ๋๋ฐ, ๊ทธ ์ด์ ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ๋ค. ํด๋น ์ฃผ์๋ค์ /config/networkFiles ๋๋ ํ ๋ฆฌ์ member1, member2, member3 ํด๋์ key๋ก ์ ์ฅ๋์ด ์๋ค. ์ฌ์ค ์ฌ๊ธฐ์ "validator๊ฐ ๋คํธ์ํฌ์ member ์๋์๋?" ํ๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋์ ์ด๊ฒ ์ ๊ฒ ๊ณ ๋ฏผํ๋ค๊ฐ, npx quorum-dev-quickstart ์ฒ์ ์คํ ์,private transaction ์ต์ ์ y๋ก ํด๋ดค๋๋ ์ปจํ ์ด๋๋ก member๋ค์ด ๋ ์์ ํ์ธํ ์ ์์๋ค....!
์๋ฌดํผ ์ฌ๊ธฐ์๋ ๋คํธ์ํฌ ์์ ์ alloc์ผ๋ก member1, member2, member3์๊ฒ ์ด๋๋ฆฌ์์ ๋ฏธ๋ฆฌ ๋ชฝ๋ ์ฅ์ด์ฃผ๊ณ ์์์ ์ ์ ์๋ค.
difficulty
์ฑ๊ตด์ ์ด๋ ค์ด ์ ๋๋ฅผ ์๋ฏธํ๋ค. ์ฑ๊ตด, ํฉ์ ์๊ณ ๋ฆฌ์ฆ ๊ด๋ จํด์๋ ๋ฐ๋ก ๊ณต๋ถํด์ ํฌ์คํ ์ ํด๋ด์ผ๊ฒ ๋ค. ๊ฐ์๊ธฐ ์ฑ๊ตด ๋ฟ ์๋๋ผ ๋ธ๋ญ, ๋ฐ์ดํฐ, ๋ถ๊ธฐ ๋ฑ ๋ค์ํ ๊ฐ๋ ์ด ํท๊ฐ๋ ค์ ๋ช๋ช ์๋ฃ๋ค์ ์ฐพ์๋ดค๋ค.
๋ธ๋ก์ฒด์ธ์ ์ ์์ ๊ธฐ์ “๋น์ ๊ณต์๋ ์ดํดํ๋ ๊ธฐ๋ณธ์ ์ดํด”
์๋ ํ์ธ์ ๋ธ๋ก์ฒด์ธ ์๋ ค์ฃผ๋ ๋จ์ Ryan KIM ์ ๋๋ค.
medium.com
๊ฐ๋ฐ์๊ฐ ์ค๋ช ํด์ฃผ๋ ๋นํธ์ฝ์ธ ์ฑ๊ตด ๋ฐฉ๋ฒ (ft ์๋ฎฌ๋ ์ดํฐ, ๋ ธ๋ง๋์ฝ๋)
https://youtu.be/ElGBP90XZWE ์ธํธ๋ก ๋นํธ์ฝ์ธ ๊ฐ๊ฒฉ ์์น ์์ ์ฆ๋ช / ์ฑ๊ตด / ์ ์ฑ๊ตด์ ๊ทธ๋ํฝ ์นด๋๊ฐ ์ฐ์ด๋์ง ์์๋ด ๋ธ๋ก์ฒด์ธ์ ๋ฌด์์ธ๊ฐ? ๋ธ๋ก์ฒด์ธ = ๋ฐ์ดํฐ๋ฒ ์ด์ค. ๋ฐ์ดํฐ๋ ๋ธ๋ก + ํด์๋ก ์ฐ๊ฒฐ ๋
dfso2222.tistory.com
mixhash, nonce
mix hash์ nonce๋ฅผ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ธ๋ก์ด ์ ๋๋ก ์ฑ๊ตด๋์๋์ง ํ์ธํ๋ค. ๋ ๊ฐ์ ๊ฐ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ณต๊ฒฉ์๊ฐ ๊ฑฐ์ง nonce๋ก ๋ธ๋ก์ ์์กฐํ ๊ฒฝ์ฐ, nonce๊ฐ ๊ฑฐ์ง์์ ๋ฐ๊ฒฌํ๋ ๋ฐ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์ด๋ค. mixhash๋ nonce๋ฅผ ํ์ธํ๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ค์ง ์๋ nonce๋ฅผ ์ฐพ๊ธฐ ์ํ ์ค๊ฐ ๊ณ์ฐ์ด๋ค. ๋ฐ๋ผ์ ๋ธ๋ก์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ๋ ์๋ชป๋ ํผํฉ ํด์๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ฒฝ์ฐ ๊ฒ์ฌํ์ง ์๊ณ ํ ๋ฒ์ ๋ธ๋ก์ ์ญ์ ํ ์ ์๋ค..
parentHash
์ด์ ๋ธ๋ก ํค๋์ ํด์. ์ฌ์ค ์ ๋ค์์ค ๋ธ๋ก์์๋ ํด๋น ํญ๋ชฉ์ ์ ์ํ ํ์๊ฐ ์๊ฒ ์ง๋ง, ์ ๋ค์์ค ๋ธ๋ก์ ๋ค๋ฅธ ๋ธ๋ก๋ค์๊ฒ ์์ผ๋ก ์ด์ด์ง ๋คํธ์ํฌ์ ๋ธ๋ก์ด ์ด๋ค ํ์์ด์ด์ผ ํ๋์ง ์๋ ค์ค์ผํ๊ธฐ ๋๋ฌธ์, ๋น์๋์ง ์๊ณ ์ ์ ํ ์ฑ์๋๋ค.
coinbase
ํด๋น ๋ธ๋ก์ ์ฑ๊ตดํ์ ๋, ๋ณด์์ด ๋ค์ด๊ฐ ๊ณณ์ ๊ณณ์ ์ฃผ์๋ฅผ ์๋ฏธํ๋ค.
Timestamp
์ ๋์ค ํจ์๋ฅผ ์ด์ฉํด, ๋ธ๋ก์ด ์์ฑ๋ ์๊ฐ์ ๊ธฐ๋ก
'๐ป > ๋ธ๋ก์ฒด์ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Besu] ๊ธฐ์ ๋ฌธ์ ์์ฑ ์ ์ฐธ๊ณ ๋งํฌ (0) | 2021.11.10 |
---|---|
[๋ธ๋ก์ฒด์ธ] ์์ง์ ์ฌ์ดํธ ๋ชจ์ (0) | 2021.11.09 |
[Besu] ์ํฐํ๋ผ์ด์ฆ ์ด๋๋ฆฌ์ ํด๋ผ์ด์ธํธ (0) | 2021.11.05 |
[๋ธ๋ก์ฒด์ธ] Hyperledger Besu ํ๊ฒฝ ์ค์ (CentOS 7) (0) | 2021.07.22 |
[๋ธ๋ก์ฒด์ธ] ๋์งํธ ์์ฐ (0) | 2021.07.19 |