Multichain KOR
Multichain ์ด๋?
๋ค์ค๋ธ๋ก์ฒด์ธ ๊ตฌ์กฐ๋ ๊ฑฐ๋๋ด์ญ์ ์ ์ฅํ๋ ๋ฉ์ธ ๋ธ๋ก์ฒด์ธ๊ณผ ๋ธ๋ก์ฒด์ธ ์ด์์ ๊ด๊ณ๋๋ ์ฌ๋ฌ ์๋ธ ๋ธ๋ก์ฒด์ธ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ด๋ ๋ค์ํ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ๋จ์ํ์ํค๋ฉฐ ๋ณต์กํ ๋น์ฆ๋์ค๋ชจ๋ธ์ ์ฒด๊ณ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
blockchain์ ์ข ๋ฅ
๋ด๋ถ ์ฒด์ธ ์ฐ๊ฒฐ
๋ธ๋ก-๊ฒ์ฆ
Block Structure
Main Block Structure
Warrant Block Structure
Citizen Block Structure
Oracle Block Structure
Block Chain์ ์ข
๋ฅ
Main block chain: ๋จ์ ๊ฑฐ๋, ๋ธ๋ก์ฒด์ธ ๊ธฐ์ฌ๋์ ๋ฐ๋ฅธ ๋ณด์ ๋ด์ญ ๋ฑ์ ๊ธฐ๋ก
Citizen block chain: SymID ๋ณ ๊ณ์ ์ ๋ณด ๋ฐ ์ ๋ฐ์ดํธ ์ ๋ณด ๊ธฐ๋ก
Warrant block chain: ์ธ์ฆ ๋ ธ๋ ์ ์ถ ์ ๋ณด ๊ธฐ๋ก
Oracle block chain: ์ด์ ์ ์ฑ ํ๋ผ๋ฏธํฐ, ํ ํฐ๊ฐ ํ์จ ์ ๋ณด ๋ฑ ๊ธฐ๋ก
Future block chain: ์์ฝ ๊ฑฐ๋ ๊ธฐ๋ก (๊ฐ๋ฐ์ค)
๋ด๋ถ ์ฒด์ธ ์ฐ๊ฒฐ (Inter-connection Of Chains)
Main Block์ ๊ฑฐ๋ ๋ด์ญ์ด๋ ๊ธฐ๋ก ์ฌํญ์ด ์๋๋ผ๋ ๋ณด์์ฑ ๊ฐํ๋ฅผ ์ํด ์ผ์ ์ฃผ๊ธฐ๋ง๋ค ์์ฑ๋๋ฉฐ, Sub Block์ ๊ธฐ๋กํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ Main Block๊ณผ ํจ๊ป ์์ฑ๋๋ค.
Sub Block์ Main Block๋ณด๋ค ๋ฐ์ดํฐ๊ฐ ์ ์ด ์๋์ ์ผ๋ก ์กฐ์์ ์ํ์ฑ์ด ๋๋ค. ๋ฐ๋ผ์ Sub Block์ด ์์ฑ๋ ๋ Main Block์ ์ ๋ณด(Number)๋ฅผ ๋ธ๋ก์ ๊ธฐ๋กํ๊ณ , ํด๋น Sub Block ์ ๋ณด(Number, Hash)๋ฅผ Main Block์ ๊ธฐ๋กํจ์ผ๋ก์จ ์์๋ก Sub Block๋ง ์กฐ์ํ ์ ์๋๋ก ์๋ก ์ฐ๊ฒฐํ์ฌ ๊ด๋ฆฌ๋๋ค. (Main Block์ CBHash, WBHash, OBHash, CBNum, WBNum, OBNum ๊ณผ ๊ฐ Sub Block์ RelatedMBNum ์ฐธ๊ณ )
๋ํ Main Block์ด ์์ฑ๋ ๋ ์ ํจํ Sub Block์ ์ ๋ณด(Number)๋ฅผ ๊ธฐ๋กํจ์ผ๋ก์จ Main Block ์์ฑ ์์ ์ ํ๋ ์ค์ธ Sub Block์ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
๋ชจ๋ Sub Block์ ์์ฑ์๊ธฐ์ ์ ์ฉ ์๊ธฐ๊ฐ ๋ค๋ฅผ ์ ์๋ค.
์๋ ๊ทธ๋ฆผ์์ Main Block M2 ์์ฑ์ ์ต์ข Citizen Block์ C1์ด๋ค. ์ฆ C1์ ๊ธฐ๋ก๋ ๋ด์ฉ์ Main Block M2๋ถํฐ ๋ฐ์๋๋ค๋ ์๋ฏธ์ด๋ค.
์๋ ๊ทธ๋ฆผ์์ Main Block M3๋ถํฐ ํ๋ํ Warrant Node๋ค์ W1์ ๊ธฐ๋ก๋์ด ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. Warrant Block์ ํด๋น Warrant Block์ ์ ์ฉํ๊ธฐ ๋ช ๋ธ๋ก ์ด์ ์ ์์ฑ๋๋ค. (์๋ฅผ ๋ค์ด Main Block Number๊ฐ 100์์ 200๊น์ง ์ ์ฉํ Warrant Block์ Main Block Number๊ฐ 90์ผ๋ ์์ฑ๋๋ค.) ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ํด์ Warrant Block์๋ ๊ฐ Warrant Block์ ์ ์ฉ ์ฃผ๊ธฐ์ Warrant Node ์๊ธฐ๊ฐ ํฌํจ๋์ด ์๋ค.
์ฐธ๊ณ : Main Block์ ActiveCBNum, ActiveWBNum, ActiveOBNum
๋ธ๋ก ๊ฒ์ฆ
๋ธ๋ก์ ๊ฒ์ฆ์ ๋ธ๋ก ๋ด์ ํฌํจ๋ ์๋ช ๊ฐ์ ๊ฒ์ฆํจ์ผ๋ก์จ ์ด๋ฃจ์ด์ง๋ค. ๋ธ๋ก ๋ด์ ์๋ช ์ ๊ฒฐํฉ ์๋ช ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ๋ธ๋ก ํฉ์์ ์ฐฌ์ฑํ ๋ณด์ฆ ๋ ธ๋๋ค์ด ์์ฑํ ์๋ช ์ ๊ฒฐํฉํ์ฌ ์์ฑ๋๋ค.
์ด๋ ๊ฒ ์์ฑ๋ ์๋ช ์ ๊ฒ์ฆํ๊ธฐ ์ํด์๋ ๋ธ๋ก ํฉ์์ ์ฐฌ์ฑํ ์ ์ฒด ๋ณด์ฆ ๋ ธ๋๋ค์ ์ ์์ ํ์ธํ ์ ์์ด์ผ๋ง ํ๋ฉฐ, ์ด๋ ๋ธ๋ก์ ์กฐ์ํ๊ธฐ ์ํด์๋ ๊ฒฐํฉ ์๋ช ์์ฑ์ ์ฌ์ฉ๋ ์ ์ฒด ๋ณด์ฆ ๋ ธ๋๋ค์ ์ ์์๋ช ์ ๋ชจ๋ ์์กฐํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
Block Structure
Data size
Type
Size(Bytes)
uint64
8
common.Address
10
Common.Hash
32
common.PubKeyHash
20
*big.Int
๊ฐ๋ณ
BKeyPub
65
BKeyPubSigned
128
Sign
64
Bloom
256
Extra
256
Payload
32000
Main Block Structure
Name
Type
Description
header
*Header
ํค๋
transactions
Transactions
๋ธ๋ก ๋ด์ ํธ๋์ญ์ ๋ฆฌ์คํธ
rewards
Rewards
๋ธ๋ก ๋ด์ ๋ณด์ ๋ด์ญ
validatorInfos
ValidatorInfo
๋ธ๋ก ํฉ์์ ์ฐฌ์ฑํ ๋ณด์ฆ ๋ ธ๋ ์ ๋ณด ๋ด์ญ
signInfo
*SignInfo
๋ธ๋ก ๊ฒ์ฆ์ ์ํ ์๋ช ์ ๋ณด
Header Structure in Main Block
Name
Type
Json Name
Description
ParentHash
Common.Hash
parentHash
๋ถ๋ชจ ๋ธ๋ก ํค๋์ ํด์๊ฐ
Primary
Common.Address
primary
๋ธ๋ก ์ ์์์ SymID
Root
Common.Hash
stateRoot
์ํ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
SctRoot
Common.Hash
sctStateRoot
SCT ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
TxHash
Common.Hash
transactionsRoot
ํธ๋์ญ์ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
RewardHash
Common.Hash
rewardRoot
๋ณด์ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
ReceiptHash
Common.Hash
receiptsRoot
์์์ฆ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
CBHash
Common.Hash
cbHash
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์ํฐ์ฆ ๋ธ๋ก์ ํด์๊ฐ
WBHash
Common.Hash
wbHash
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์๋ฐํธ ๋ธ๋ก์ ํด์๊ฐ
OBHash
Common.Hash
obHash
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์ค๋ผํด ๋ธ๋ก์ ํด์๊ฐ
Number
*big.Int
number
๋ธ๋ก์ ๋์ด (๋ธ๋ก ์์ฑ ์ฃผ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ํธ๋์ญ์ ์ด ์กด์ฌํ๊ฑฐ๋, ๋ธ๋ก ์์ฑ ์ฃผ๊ธฐ์ ๋ง์ถฐ ๋ธ๋ก ์์ฑ์ ๋ง๋ค ์นด์ดํธ๋๋ ๊ฐ)
CBNum
*big.Int
cbNum
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์ํฐ์ฆ ๋ธ๋ก์ ๋์ด
WBNum
*big.Int
wbNum
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์๋ฐํธ ๋ธ๋ก์ ๋์ด
OBNum
*big.Int
obNum
๋ธ๋ก๊ณผ ์ฐ๊ฒฐ๋ ์ค๋ผํด ๋ธ๋ก์ ๋์ด
ActiveCBNum
*big.Int
activeCbNum
์ต์ข ์์ฑ๋ ์ํฐ์ฆ ๋ธ๋ก์ ๋์ด ๋ฒํธ
ActiveWBNum
*big.Int
activeWbNum
๋ธ๋ก์ ๊ฒ์ฆํ๊ธฐ ์ํด ํ์ํ ์๋ฐํธ ๋ธ๋ก์ ๋์ด ๋ฒํธ
ActiveOBNum
*big.Int
activeObNum
ํ์ฌ ์ ์ฉ ์ค์ธ ์ค๋ผํด ๋ธ๋ก์ ๋์ด ๋ฒํธ
Bloom
Bloom
logsBloom
ํธ๋์ญ์ ๋ค์ ๋ก๊ทธ๋ค์ ๋ธ๋ฃธํํฐ๋ก ํํ
TickStamp
*big.Int
tickStamp
๋ธ๋ก ์์ฑ ์ฃผ๊ธฐ(BlockGenTick) ๋ง๋ค ์นด์ดํธ ๋๋ ๊ฐ
Time
*big.Int
timeStamp
ํ์์คํฌํ epoch๊ฐ (UTC)
GasLimit
uint64
gasLimit
๋ธ๋ก๋น ํ์ฌ ์ง๊ธ ๊ฐ๋ฅํ ์ต๋ ๊ฐ์ค ์ดํฉ
GasUsed
uint64
gasUsed
๋ฉ์ธ ๋ธ๋ก ๋ด์ ํธ๋์ญ์ ์ ์ํด ์ฌ์ฉ๋ ๊ฐ์ค์ ์ดํฉ
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Transactions in Main Block
Name
Type
Json Name
Description
Publisher
common.Address
from
๋ฐ์ ์ ์ฃผ์
AccountNonce
uint64
nonce
ํธ๋์ญ์ ์ผ๋ จ๋ฒํธ
Price
*big.Int
gasPrice
๋ฐ์ ์๊ฐ ๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ์ฌ ์ง๊ธํ๋ ๊ฐ์ค๊ฐ๊ฒฉ
GasLimit
uint64
gas
๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ฉ๋๋ ์ต๋ ๊ฐ์ค๋
Recipient
common.Address
to
์์ ์ ์ฃผ์ (๊ณ์ ๋๋ ์ปจํธ๋ํธ ์ฃผ์)
Amount
*big.Int
value
์์ ์์๊ฒ ๋ณด๋ด๋ ์ฝ์ธ ์
Payload
[]byte
input
์์์ ๋ฉ์์ง or ๊ณ์ฝ์ ๋ํ ํจ์ ํธ์ถ or ๊ณ์ฝ์ ์์ฑํ๋ ์ฝ๋
Type
uint64
type
ํธ๋์ญ์ ์ข ๋ฅ ( 0: original, 1:sct, 2:deposit)
WorkNode
[]common.Address
workNodes
ํธ๋์ญ์ ์ ์ค๊ฐํ๋ ์ํฌ๋ ธ๋์ SymID
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
V
*big.Int
v
ECDSA ์๋ช ๊ตฌ์ฑ ์์
R
*big.Int
r
ECDSA ์๋ช ๊ตฌ์ฑ ์์
S
*big.Int
s
ECDSA ์๋ช ๊ตฌ์ฑ ์์
Rewards in Main Block
Name
Type
Json Name
Description
SymId
Common.Address
symId
๋ณด์์ ๋ฐ์ ๊ณ์ ์ Sym ID
Value
*big.Int
value
๋ณด์์ ๋ฐ์ ์
Type
uint
type
๋ณด์ ์ข ๋ฅ (Reserved)
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
ValidatorInfos in Main Block
Name
Type
Json Name
Description
SymId
Common.Address
symId
๋ธ๋ก ํฉ์์ ์ฐฌ์ฑํ ๋ณด์ฆ ๋ ธ๋์ Sym ID
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
SignInfos in Main Block
Name
Type
Json Name
Description
MBNum
*big.Int
mbNum
์๋ช ์ ๋ณด์ ๊ด๋ จ ๋ ๋ฉ์ธ ๋ธ๋ก์ ๋์ด ๋ฒํธ (๋ธ๋ก ๋๊ธฐํ์ ์ฌ์ฉ)
Sign
[]byte
sign
๊ฒฐํฉ ์๋ช ๊ฐ(๋ธ๋ก ๊ฒ์ฆ์๊ฐ ์์ฑํ ์๋ช + ํ๋ผ์ด๋จธ๋ฆฌ ์๋ช ์ ๊ฒฐํฉํ ๊ฐ)
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Warrant Block Structure
Name
Type
Description
header
*WarrantHeader
ํค๋
warrants
[]*Warrant
๋ธ๋ก ๋ด์ ๋ณด์ฆ ๋ ธ๋ ์ ๋ณด ๋ฆฌ์คํธ
Header in Warrant Block
Name
Type
Json Name
Description
ParentHash
Common.Hash
parentHash
๋ถ๋ชจ ๋ธ๋ก ํค๋์ ํด์๊ฐ
RelatedMBNum
*big.Int
relatedMbNum
๋ธ๋ก๊ณผ ๊ด๋ จ ๋ ๋ฉ์ธ ๋ธ๋ก ๋์ด ๋ฒํธ
WarrantHash
Common.Hash
warrantsRoot
๋ณด์ฆ๋ ธ๋์ ๋ณด ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
Number
*big.Int
number
ํ์ฌ ๋ธ๋ก์ ๋์ด
BeginMBNum
*big.Int
beginMbNum
๋ธ๋ก๋ด์ ํฌํจ ๋ ๋ณด์ฆ ๋ ธ๋ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์ฆ ํ ์ ์๋ ๋ฉ์ธ ๋ธ๋ก ์์ ๋ฒํธ
EndMBNum
*big.Int
endMbNum
๋ธ๋ก๋ด์ ํฌํจ ๋ ๋ณด์ฆ ๋ ธ๋ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์ฆ ํ ์ ์๋ ๋ฉ์ธ ๋ธ๋ก ๋ ๋ฒํธ
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Warrant Data in Warrant Block
Name
Type
Json Name
Description
SymId
*Common.Address
symId
๋ณด์ฆ ๋ ธ๋๋ก ํ๋ ํ ๋ ธ๋์ Sym ID
BKeyPub
[]byte
bKeyPub
๋ธ๋ก ๊ฒ์ฆ์ฉ ๊ณต๊ฐํค ๊ฐ
BKeyPubSigned
[]byte
bKeyPubSigned
๋ธ๋ก ๊ฒ์ฆ์ฉ ๊ณต๊ฐํค๋ฅผ ์ด์นด์ดํธ ํค๋ก ์๋ช ํ ๊ฐ
Group
*uint64
group
๋ณด์ฆ ๋ ธ๋ ๊ทธ๋ฃน (A or B)
Elected
*big.Int
elected
ํด๋น ๋ ธ๋๊ฐ ๋ณด์ฆ ๋ ธ๋๋ก ํ๋ ํ ์ ์๋ ๋ฉ์ธ ๋ธ๋ก ์์ ๋ฒํธ
Finished
*big.Int
finished
ํด๋น ๋ ธ๋๊ฐ ๋ณด์ฆ ๋ ธ๋๋ก ํ๋ ํ ์ ์๋ ๋ฉ์ธ ๋ธ๋ก ๋ ๋ฒํธ
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Citizen Block Structure
Name
Type
Description
header
*CitizenHeader
ํค๋
citizens
[]*Citizen
๋ธ๋ก ๋ด์ ์ํฐ์ฆ ๋ฐ์ดํฐ ๋ฆฌ์คํธ
Header in Citizen Block
Name
Type
Json Name
Description
ParentHash
Common.Hash
parentHash
๋ถ๋ชจ ๋ธ๋ก ํค๋์ ํด์๊ฐ
Root
Common.Hash
stateRoot
์ํฐ์ฆ ์ํ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
RelatedMBNum
*big.Int
relatedMbNum
๋ธ๋ก๊ณผ ๊ด๋ จ ๋ ๋ฉ์ธ๋ธ๋ก ๋์ด ๋ฒํธ
CitizenHash
Common.Hash
citizensRoot
์ํฐ์ฆ ์ ๋ณด ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
Number
*big.Int
number
๋ธ๋ก์ ๋์ด
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Citizen Data in Citizen Block
Name
Type
Json Name
Description
Publisher
common.Address
from
์ํฐ์ฆ ์ ๋ณด๋ฅผ ๋ฐํํ CA์ Sym ID
Recipient
*common.Address
to
Reserved
AccountNonce
uint64
nonce
์ํฐ์ฆ ์ผ๋ จ๋ฒํธ
SymId
common.Address
symId
์ ๊ท ๋ฑ๋ก ๋๋ ์ ๋ฐ์ดํธํ Citizen์ Sym ID
AKeyPubH
common.PubKeyHash
aKeyPubH
20bytes, Account ๊ณต๊ฐํค hash (20bytes cut)
VFlag
*uint64
vFlag
๊ฒ์ฆ ๋ ๋ฒจ
Country
*uint64
country
๊ตญ๊ฐ ์ฝ๋
Status
*uint64
status
์ํ ์ฝ๋ ( 0x01: Active, 0x02 :Revoked, 0x03 : Locked, 0x04 : Marked
Credit
*uint64
credit
์ ์ฉ๋
Role
*uint64
role
์ญํ ( 0xf0f0 : Master CA, 0xf0f1 : CA, 0xf0f2 : Oracle, 0x1 : general, 0x02 : Dapp)
RefCode
*uint64
refCode
๋ฐ๊ธ์ ์ฐธ์กฐ ์ฝ๋
WriteTime
*big.Int
writeTime
์ ๊ท ๋ฑ๋ก ๋๋ ์ ๋ฐ์ดํธ ์์ฒญ ์๊ฐ
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
V
*big.Int
v
ECDSA ์๋ช ๊ตฌ์ฑ ์์
R
*big.Int
r
ECDSA ์๋ช ๊ตฌ์ฑ ์์
S
*big.Int
s
ECDSA ์๋ช ๊ตฌ์ฑ ์์
Oracle Block Structure
Name
Type
Description
header
*OracleHeader
ํค๋
citizens
[]*Oracle
๋ธ๋ก ๋ด์ ์ค๋ผํด ๋ฐ์ดํฐ ๋ฆฌ์คํธ
Header in Oracle Block
Name
Type
Json Name
Description
ParentHash
Common.Hash
parentHash
๋ถ๋ชจ ๋ธ๋ก ํค๋์ ํด์๊ฐ
Root
Common.Hash
stateRoot
์ค๋ผํด ์ํ ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
RelatedMBNum
*big.Int
relatedMbNum
๋ธ๋ก๊ณผ ๊ด๋ จ ๋ ๋ฉ์ธ๋ธ๋ก ๋์ด ๋ฒํธ
OracleHash
Common.Hash
citizensRoot
์ค๋ผํด ์ ๋ณด ํธ๋ฆฌ ๋ฃจํธ์ ํด์๊ฐ
Number
*big.Int
number
๋ธ๋ก์ ๋์ด
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
Oracle Data in Oracle Block
Name
Type
Json Name
Description
Publisher
common.Address
from
์ค๋ผํด๋ผ์ด์ ์ Sym ID
Recipient
*common.Address
to
Reserved
AccountNonce
uint64
nonce
์ค๋ผํด ์ผ๋ จ๋ฒํธ
Payload
[]byte
payload
์ค๋ผํด ํ๋ผ๋ฏธํฐ ์ ๋ณด
Extra
[]byte
extraData
์ถ๊ฐ ์ ๋ณด (optional)
V
*big.Int
v
ECDSA ์๋ช ๊ตฌ์ฑ ์์
R
*big.Int
r
ECDSA ์๋ช ๊ตฌ์ฑ ์์
S
*big.Int
s
ECDSA ์๋ช ๊ตฌ์ฑ ์์
Last updated