์๋
ํ์ธ์, ์ด๋๋ฆฌ์ ์ฝ๋๋ณด๋ SigmoiD์
๋๋ค.
์ค๋์ ๊ธฐ์กด์ ๋ถ์ํ๋ LevelDB ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๊ณ , ํธ๋ ์ ์ ์ถ๊ฐํ DB๋ฅผ ๊ฐ์ง๊ณ ๋ถ์ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ด์ ๊ธ์ ์ฌ๊ธฐ๋ก
https://steemit.com/ethereum/@sigmoid/level-db-1
https://steemit.com/ethereum/@sigmoid/level-db-2-db-schema
1๋ฒ๊ธ์ ๋์ผ ํ๊ฒฝ์์ ํธ๋ ์ ์
์ ํ๋ ์ถ๊ฐํ์ต๋๋ค. 0๋ฒ ๊ณ์ ์์ 1๋ฒ๊ณ์ ์ผ๋ก 1 ์ด๋๋ฅผ ์ ์กํ๋ ๊ฒ์ด๊ณ
0๋ฒ ๊ณ์ ์ ๊ฒฝ์ฐ 2๋ฒ๋ธ๋ก๊น์ง ๋ง์ด๋์ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ด๋ ๋ณด์์ผ๋ก ๋ฐ์ ์ด๋๋ฆฌ์์ ๊ฐ์ง๊ณ ์๋ ์ํ๊ตฌ์.
์ด์นด์ดํธ ํํฉ, ํธ๋ ์ ์ ์ ์ ์กํ๊ธฐ ์ํด 0๋ฒ ๊ณ์ ์ unlockํ ์ํ
ํธ๋ ์ ์ ์ ์์ฑํ์ฌ ์ ์ก
ํธ๋ ์ ์ ์ด ์ฑ๊ตด๋์ด 1๋ฒ๊ณ์ ์ ์์ก์ด ๋์ด๋ ์ํ
3๋ฒ๋ธ๋ก์ ํฌํจ๋ ํธ๋ ์ ์
์ด ์ํ์ DB๋ฅผ ๋คํํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
https://github.com/NAKsir-melody/eth-function-tests/blob/master/go-ethdb/output_tx.txt
๋ถ์์ ๋ค์ด๊ฐ๊ธฐ ์ ์, DB์คํค๋ง์ prefix๋ฅผ ๋ค์ํ๋ฒ ์ฒดํฌํฉ๋๋ค.
0x44: [DatabaseVersion, ]
0x48: [๋ธ๋กํด์, ๋ธ๋ก๋ฒํธ]
0x4C: [LastXXX, ๋ธ๋กํด์]
0x62: [๋ธ๋กํด์ + ๋ธ๋ก๋ฒํธ, ๋ธ๋ก๋ฐ๋]
0x65: [chain-config-, config]
0x68: [๋ธ๋ก๋ฒํธ + 0x6e, ๋ธ๋ก ํค์]
0x68: [๋ธ๋ก๋ฒํธ + 0x6e + ๋ธ๋กํด์, ๋ธ๋ก ํค๋]
0x68: [๋ธ๋ก๋ฒํธ + 0x6e + ๋ธ๋กํด์ + 0x74, ์ฑ๊ตด ๋์ด๋]
0x72: [๋ธ๋ก๋ฒํธ + ๋ธ๋กํด์, ์์์ฆ]
์ด๋ฒ DB์์ ์๋กญ๊ฒ ๋ณด์ด๋ prefix
6c : transaction lookup
์ฐ์ 3๋ฒ๋ธ๋ก์ rlp decodingํด๋ด
๋๋ค.
https://github.com/NAKsir-melody/eth-function-tests/blob/master/go-ethdb/block_header_3_with_tx.txt
state root: 0d9348243d7357c491e6a61f4b1305e77dc6acacdb8cc708e662f6a9bab6ca02
transaction root: f520abd5cf4fe1a16378bdf7d12fbabe6642a6f33996000e5763b39e15eca9bb
receipt root: a1a8122d87dcbe1634df20264274ed8f072e0eb3d7a608859689df9cb5f100d9
๋จผ์ ์คํ
์ดํธ ๋ฃจํธ๋ 1๋ฒ๋ผ์ธ์ ์๋ค์.
https://github.com/NAKsir-melody/eth-function-tests/blob/db43eb53b27215f4ae25fd2d3a3b325faf9f248a/go-ethdb/output_tx.txt#L1
๊ฐ์ ์๋ง trie์ผ๊ฒ ๊ฐ์ผ๋, ํ๋ฒ ํ์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋จํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค.
์ถ๋ ฅ๊ฐ์ ์๋์ ๊ฐ์ต๋๋ค.
[56c093a349d905ad74b68851304d5dc5f111fbab2c24c4b4d02e96d2fc0727fd, f84c80880de0b6b3a7640000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470][761d5c42184a02cc64585ed2ff339fc39a907e82731d70313c83d2212b2da36b, f84c0188c249fdd327780000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470]
3๋ฒ๋ธ๋ก์ ํด๋นํ๋ ์คํ
์ดํธ ๋ฃจํธ์ ํธ๋ผ์ด์๋ 2๊ฐ์ ํค๊ฐ ์์ด ๋ค์ด์๋๋ฐ,
์ด ํค ์์ชฝ์๋ "secure-key-" ํ๋ฆฌํฝ์ค๋ฅผ ๋ถ์ฌ์ 35,36๋ฒ db line์ ์ ์ฅ๋์ด ์์ต๋๋ค.
๊ฐ์ 1๋ฒ๋ผ์ธ๊ณผ 30๋ฒ๋ผ์ธ์์ ์ป์ด์๋ค์?
1๋ฒ๋ผ์ธ๊ณผ 30๋ฒ ๋ผ์ธ์ ํค ๊ฐ์ ๊ฐ๊ฐ 18e3b46e84b35270116303fb2a33c853861d45d99da2d87117c2136f7edbd0b9๊ณผ
717aef38e7ba4a0ae477856a6e7f6ba8d4ee764c57908e6f22643a558db737ff ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ 1๋ฒ๋ผ์ธ์ ๊ฐ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ๋ณด์ค์ ์์ต๋๋ค.
f8518080808080a0
18e3b46e84b35270116303fb2a33c853861d45d99da2d87117c2136f7edbd0b9
80a0
717aef38e7ba4a0ae477856a6e7f6ba8d4ee764c57908e6f22643a558db737f
f808080808080808080
ํธ๋ผ์ด์ ๋
ธ๋๊ฐ์ rlp์ธ์ฝ๋ฉํ๋ ค๋ฉด ๋ณต์กํ๋๊น.. stateDB๋ก ์ง์ ์ ๊ทผํด์ ๊ณ์ ๋ค์ ์ฐ์ด๋ณด๋๋ก ํฉ๋๋ค.
๋ ผ์ค(1)๊ณผ ์์ก(14000000000000000000)์ด ์์ถ๋ ฅ๋๋ค.
๋น์ทํ ํํ๋ก 2๋ฒ๋ธ๋ก์ ํธ๋ ์ ์
๋ฃจํธ๋ ๊น๋ณด๋ฉด ๋
ผ์ค(0)๊ณผ ์์ก(10000000000000000000)์ด ์์ถ๋ ฅ๋ฉ๋๋ค.
์ฐธ์กฐ: https://github.com/NAKsir-melody/eth-function-tests/blob/master/go-ethdb/go-state-history.go
ํธ๋ ์ ์
๋ฃจํธ๋. ์์์ฆ๋ ๋น์ทํ๊ฒ ๊น์ง๊ฒ์ผ๋ก ์์ํ๋๋ฐ..
์ถํ์ ์
๋ฐ์ดํธ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.