CIP | ์ ๋ชฉ | ์นดํ ๊ณ ๋ฆฌ | ๋จ๊ณ | ์ ์ | ์ดํ์ | ํ ๋ก | ์์ฑ | ๋ผ์ด์ ์ค |
---|---|---|---|---|---|---|---|---|
94 | ์จ์ฒด์ธ SPO ์ค๋ฌธ | ๋๊ตฌ | ์ ์ | ๋งํฐ์์ค ๋ฒค์ฝ๋ฅด(Matthias Benkort) matthias.benkort@cardanofoundation.org ๋ง์ปค์ค ๊ตฌํ๋ฌ(Markus Gufler) markus.gufler-ext@cardanofoundation.org | ๋งํฐ์์ค ๋ฒค์ฝ๋ฅด matthias.benkort@cardanofoundation.org | #496 #102 input-output-hk/cardano-node#5050 input-output-hk/cardano-node#5132 | 2023-03-21 | CC-BY-4.0 |
๊ฐ์
์นด๋ฅด๋ค๋ ธ ์ฌ๋จ์ ํน์ ์ฃผ์ ์ ๋ํด ์นด๋ฅด๋ค๋ ธ ์คํ ์ดํฌ ํ ์ด์์์๊ฒ ์ค๋ฌธ์ ์ค์ํ๋ ๋ฉ์ปค๋์ฆ์ ์ ์ํฉ๋๋ค. ์ค๋ฌธ์กฐ์ฌ๋ ํธ๋์ญ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํตํด ์จ์ฒด์ธ์์ ์ด๋ฃจ์ด์ง๋ฉฐ ์คํ ์ดํฌ ํ ์๊ฒฉ์ฆ๋ช (Ed25519 ์ฝ๋ ํค)์ ํตํด ์ธ์ฆ๋ฉ๋๋ค. ํ๋กํ ์ฝ ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ์ ๊ฐ์ ๊ฑฐ๋ฒ๋์ค ๋ฌธ์ ์ ๋ํ ์๊ฒฌ์ ๋ชจ์ผ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด ํ์ค์ CIP-1694์ ๊ฐ์ ๋ ํฐ ๊ฑฐ๋ฒ๋์ค ํ๋ ์์ํฌ์ ๋ํ ์์ ์ด ์งํ๋๋ ๋์ ํฌ๊ด์ ์ธ ์ค๊ฐ ํด๊ฒฐ์ฑ ์ ๋๋ค.
๋๊ธฐ: ์ ์ด CIP๊ฐ ํ์ํ๊ฐ?
๊ฑฐ๋ฒ๋์ค๋ ์ด๋ ต์ต๋๋ค. CIP-1694์ ๋ํ ๋ ผ์๋ ์ด๋ฅผ ๋ช ํํ๊ฒ ์ฆ๋ช ํ ์ ์์ต๋๋ค. ์นด๋ฅด๋ค๋ ธ ์ปค๋ฎค๋ํฐ ๋ด์์ ํ๋กํ ์ฝ ๋งค๊ฐ๋ณ์ ๋ณ๊ฒฝ์ ๋ํ ๋์์๋ ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์์ผ๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก ๊ฒฐ์ ์ - ํ ๋จ๊ณ์์๋ ์ฌ์ ํ - ์ธ ๊ณณ์ ์ฐฝ์ค ์ฃผ์ฒด์ ๋ฌ๋ ค ์์ต๋๋ค: ์ธํ ์์ํ, ์นด๋ฅด๋ค๋ ธ ์ฌ๋จ, ์ด๋จธ๊ณ ์ ๋๋ค. ๊ทธ๋ฌ๋ ํ ๋จ๊ณ์์๋ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋ ๊ฑฐ๋ฒ๋์ค ๋๊ตฌ๊ฐ ๊ฑฐ์ ์์ต๋๋ค. ํธ์ํฐ ์ค๋ฌธ, ๋ด์ค๋ ํฐ ์ค๋ฌธ, ๋์ค์ฝ๋์ SPO ํ์ดํ ์ธ์๋ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ ์๋ ์๋จ์ ํตํด ์นด๋ฅด๋ค๋ ธ ์ปค๋ฎค๋ํฐ์ ์ํตํ ์ ์๋ ๊ธฐํ์ ๊ฒฉ์ฐจ๊ฐ ์์์ ํ์ธํ์ต๋๋ค.
SPO๋ค ๊ฐ์ ์จ์ฒด์ธ ์ค๋ฌธ์ ์งํํ๋ ๊ฒ์ ๊ฑฐ๋ฒ๋์ค ์ง๋ฌธ์ ๋ํ ๋คํธ์ํฌ์ ์ฐธ์ฌ ๋ฐ ๊ด์ฌ์ ๋ํ ์คํ๊ณผ ํ๊ฐ๋ก ๋ณผ ์๋ ์์ต๋๋ค. ๋น๋ก ์ฐ๋ฆฌ๊ฐ ์นด๋ฅด๋ค๋ ธ ์ปค๋ฎค๋ํฐ์ ํ ํน์ ๊ทธ๋ฃน(SPO)์ ๋ํด์๋ง ํฌํ๋ฅผ ์ ์ํ์ง๋ง, ์ด๋ฌํ ์ด๋ฒคํธ๋ CIP-1694์ ๋ํ ๋ํ๋ฅผ ์ด์งํ๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์์ฝํ์๋ฉด, ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ฑฐ๋ฒ๋์ค ์์ญ์์ ์คํ์ ์ธ ์ฒซ ๊ฑธ์์ ๋ด๋๋ ๊ฒ;
- ์ง๊ธ(๋๋ ๊ฐ๊น์ด ์์ผ ๋ด์) ๋ฌ์ฑํ ์ ์๋ ๋ชฉํ;
- SPO์ ์ฐธ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ฒ;
- ๊ฑฐ๋ฒ๋์ค์์์ ํฅํ ์ญํ ์ ๋ํ SPO์ ์ธ์์ ์ ๊ณ ํ๊ธฐ ์ํด;
- ๋ค๋ฅธ ๋ ธ๋ ฅ๋ค์ ์ถ์งํ๋ ๋์ ์ํ๊ณ์์ ๋ณผํ ๋ฅด์ ์ญ๋์ฑ์ ์ ์งํ๊ธฐ ์ํด;
- ์นด๋ฅด๋ค๋ ธ ์ฌ๋จ๊ณผ SPO ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ ํ์ฌ ๋ ๋์ ์ํธ ์ดํด์ ์ ์ตํ ๋ํ๋ฅผ ์ํด.
๋ช ์ธ
๊ฐ์
์ค๋ฌธ์ ์นด๋ฅด๋ค๋ ธ ์ฌ๋จ์ด ๋ฏธ๋ฆฌ ์ ์ํ ๋ต๋ณ ์ค์์ ์ ํํ ์ ์๋ ๊ฐ๊ด์ ๋ฌธํญ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ค์์ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ์์์ ๋๋ค:
- ํผ์์ ํ์ธ์ ํ?
- ์
- ์๋์
์ง๋ ฌํ๋ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ์จ์ฒด์ธ์ ๊ฒ์๋๋ฉฐ, ์นด๋ฅด๋ค๋ ธ ์ฌ๋จ์ด ์์ ํ ์์ ์ ๋ค์์ค ํค ์ค ํ๋์ ์ํด ์๋ช ๋ฉ๋๋ค. ์ฐธ์ฌ SPO๋ ๋ค์์ ์ฐธ์กฐํ๋ ํธ๋์ญ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํตํด ์จ์ฒด์ธ์์ ๋ต๋ณ์ ์ ์ถํ ์ ์์ต๋๋ค:
- ์ง๋ฌธ๊ณผ ๋ต๋ณ
- ๊ฐ๋ฅํ ์ ํ์ง ์ค์์ ์ ํ๋ ๋ต๋ณ์ ์์ธ
- SPO์ ํ์ฌ ์ฝ๋ ํค์ ๋์งํธ ์๋ช (EdDSA)
์ฐธ๊ณ : ์ด ๋ฌธ์์์๋ ์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค ํด๋น ๊ฐ์ฒด์ ์ ์ CBOR ํํ์ ์ฐธ์กฐํฉ๋๋ค. ํนํ ๋งต์ ํค๋ ํญ์ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
์ง๋ฌธ ๊ตฌ์กฐ
์ง๋ฌธ์ ๋ฉํ๋ฐ์ดํฐ ๋ ์ด๋ธ 94
์ ํจ๊ป ๋ค์์ ๋ฉํ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์
์ ๋ฉํ๋ฐ์ดํฐ์ ๊ฒ์๋ฉ๋๋ค:
question =
{ 0: prompt
, 1: [ * choice ]
, ? "_": nonce
}
prompt =
[ * text .size (0..64) ]
choice =
[ * text .size (0..64) ]
nonce =
uint
๋ ผ์ค๋ ๋์ผํ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ด ๋ค๋ฅธ ๊ธฐ๊ฐ์ ๊ฑธ์ณ ์ฌ๋ฌ ๋ฒ ์์ฒญ๋ ๊ฒฝ์ฐ ์ฌ์๋์ง ์๋๋ก ํ๊ธฐ ์ํด ์ ํ์ ์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์ง๋ฌธ์ ํฌํจํ ํธ๋์ญ์ ์ด ์ ํจํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ค๋ฉด ์ ๋ค์์ค ์์ ํค ์ค ํ๋๋ก ์๋ช ๋์ด์ผ ํฉ๋๋ค. ์ด ์ ๋ค์์ค ํค ์๋ช ์ ๋ฉํ๋ฐ์ดํฐ์ ๊ธฐ๋ก๋์ง ์๊ณ ํธ๋์ญ์ ์์ฒด์ ์ถ๊ฐ ์๋ช ์๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
์์:
CBOR diagnostic | Base16-encoded |
---|---|
{ 94: { 0: [ โPineapples on pizza?โ ] , 1: [ [ โyesโ ] , [ โnoโ ] ] } } | A1185EA200817450696E656170706C6573206F 6E2070697A7A613F0182816379657381626E6F |
๋ต๋ณ ๊ตฌ์กฐ
๋ง์ฐฌ๊ฐ์ง๋ก ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ 94
๋ผ๋ ๋ ์ด๋ธ๊ณผ ๋ค์๊ณผ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์
๋ฉํ๋ฐ์ดํฐ๋ก ๊ฒ์๋ฉ๋๋ค:
answer =
{ 2: question_hash
, 3: choice
}
question_hash =
byte .size 32
๋ช ๊ฐ์ง ์ ์:
- ํ๋
2
(question_hash
)๋ blake2b-256 ํด์ ๋ค์ด์ ์คํธ์ด๋ฉฐ, ํ๋ฆฌ์ด๋ฏธ์ง(preimage)๋ ์ง๋ ฌํ๋ ์ ์ฒด ์ง๋ฌธ ๋ฉํ๋ฐ์ดํฐ ํ์ด๋ก๋(94
์ต์์ ๋ ๋ฒจ ๋ ์ด๋ธ ํฌํจ)์ ๋๋ค. - ํ๋
3
์ ๊ฐ๋ฅํ ์ ํ์ง(๋์ ์ค๋ฌธ์ ํ๋1
์์)์์ ์ ํํ ๋ต๋ณ์ 0 ๊ธฐ๋ฐ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ ๋๋ค.
์์:
CBOR diagnostic | Base16 |
---|---|
{ 94: { 2: hโ29093fd43fc30ba31e306af06ce8537390e1668ae7496fe53d53684683c3762cโ, 3: 0 } } | A1185EA202582029093FD43FC30BA31E306AF06CE 8537390E1668AE7496FE53D53684683C3762C0300 |
๋ต๋ณ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ํธ๋์ญ์ ์ ์คํ ์ดํฌ ํ ์ด์์ ์ฝ๋ํค๋ฅผ ์ฌ์ฉํด ์๋ช ํด์ผ ํฉ๋๋ค. ์ฝ๋ ํค๋ ์ง๋ถ ํค๊ฐ ์๋๋ฏ๋ก, ํธ๋์ญ์ ์ ์ถ๊ฐ ํ์ ์๋ช ์๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค(Babbage์ CDDL์ ๋ฐ๋ผ ํธ๋์ญ์ ์ ํ๋ ๋ฒํธ 14). ์๋ช ์ ์์ ํ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์๋ง ์์ฑ๋์ด์ผ ํฉ๋๋ค.
๊ฒฝ๊ณ
๊ฐ ์๊ฒฉ ์ฆ๋ช ๋ณ ์ค๋ฌธ์ ๋ํ ์ฒซ ๋ฒ์งธ ๋ต๋ณ๋ง ๊ณ ๋ ค๋ฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ ๋ต๋ณ์ด ์๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๋จผ์ ์ ์ถํ ๋ต๋ณ(ํธ๋์ญ์ ๋ฐ ๋ธ๋ก ์ ๋ ฌ ์์ ์ง๊ณ)๋ง ๊ณ ๋ ค๋ฉ๋๋ค.
์ ์ฐจ ๋ฐ ๊ธฐ๊ฐ
์ค๋ฌธ์ ์ง๋ฌธ์ด ํฌํจ๋ ์ ํจ ํธ๋์ญ์ ์ด ์จ์ฒด์ธ์ ๊ฒ์๋๋ ์๊ฐ ์์๋ฉ๋๋ค. ์ค๋ฌธ์ ๋ค์ ์ํฌํฌ๊ฐ ๋๋ ๋๊น์ง ์ ์ถํ ์ ์์ผ๋ฏ๋ก ์ค๋ฌธ์ ์๋ตํ ์ ์๋ ์ ์ฒด ์ํฌํฌ๋ ํญ์ ์ต์ ํ ๊ฐ ์ด์ ์กด์ฌํฉ๋๋ค.
์คํ ์ดํฌ ํ ์ด์์๊ฐ ํฌํ๋ฅผ ํ ์ํฌํฌ ์ดํ์๋ ํ๋ ์ด์์ ์ํฌํฌ ๊ธฐ๊ฐ ๋์ ADA ์์์๋ค์ด ์๋ตํ ์ ์๋ ๊ธฐ๊ฐ์ด ์ด์ด์ง๋๋ค: ๋ง์ฝ ํด๋น ์์์๊ฐ ํ์ฌ ์คํ ์ดํฌ ํ์ ์ ํ์ ๋์ํ์ง ์๋๋ค๋ฉด, ๋ค๋ฅธ ํ์ ์์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ง๋ถ ๊ฐ์ค์น๊ฐ ๋ณ๊ฒฝ๋์ด ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ฐ์ ์ ์ผ๋ก ๋ชจ๋ ์์ด๋ค ๋ณด์ ์๊ฐ ์ฐธ์ฌํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์ฌ์์ ์ํฌํฌ๊ฐ ์๋ฃ๋ ํ์์ผ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ํ์ ์ง๋ถ ์ค๋ ์ท์ด ์ด๋ฃจ์ด์ง๋๋ค.
๊ฒฐ๊ณผ
ํฌํ์ ๊ฒฐ๊ณผ๋ ์ฐธ์ฌ ์์ค(์ง๋ถ ๊ธฐ์ค)์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํน์ ๋ชจ๋ฅผ ํผ๋์ ์์ ๊ธฐ ์ํด *ํฌํ(vote)*๊ฐ ์๋ ์ค๋ฌธ(poll) / *์ค๋ฌธ์กฐ์ฌ(survey)*๋ผ๊ณ ๋ช
์์ ์ผ๋ก ๋ถ๋ฅธ๋ค๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋ผ์ 1 Lovelace = 1 Voice
์ ์ ์ฌํ์ง๋ง, ๋ค๋ฅธ ๋ฐฉ์ ์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํด์ํ ์ ์์ต๋๋ค(์: ๋ด๋ณด ์ง๋ถ์ ๋ ๋ง์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ ๋ฑ). ๋ฐ์ดํฐ๋ฅผ ํด์ํ๋ ๋ฐฉ๋ฒ์ ์ฃผ๋ก ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ด ์ ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํฌ์ธํธ์ ํด์๊ณผ ๊ด๋ จํ์ฌ ๋ ๋ง์ ๋ํ์ ํ ๋ก ์ด ํ์ํ ๊ฒ์
๋๋ค.
์ด ์ ์์ ํ์ฌ์ ๊ฑฐ๋ฒ๋์ค ์ฒด๊ณ์ ๋ณํ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ฉฐ, ํฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ต์ข ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์ ์ฌ์ ํ ์ธ ์ฐฝ์ค ๊ธฐ๊ด์ ๋ชซ์ ๋๋ค. ์ค๋ฌธ ๊ฒฐ๊ณผ๋ ๋ํ์ ์ฐธ๊ณ ํ ์๋ก์ด ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ฒฐ์ ์ ๊ฐ์ฌ๊ฐ ๊ฐ๋ฅํ ๋ค๋ฅธ ์ ๋ณด ์์ค๋ฅผ ํตํด ์ค๋ช ๋๊ณ ๋๊ธฐ๋ฅผ ๋ถ์ฌ๋ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์จ์ฒด์ธ ์ค๋ฌธ ์กฐ์ฌ๋ ๊ทธ๋ฌํ ๊ฐ์ฌ ๊ฐ๋ฅํ ์์ค๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
๊ทผ๊ฑฐ: ์ด CIP๋ ์ด๋ป๊ฒ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋๊ฐ?
์ง๋ฌธ๊ณผ ๋ต๋ณ ๊ธฐ๋ก
์ ์๋ ํ๋ก์ธ์ค๋ ๊ธฐ์กด ํธ๋์ญ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ์จ์ฒด์ธ์ ์๊ตฌ์ ์ผ๋ก ๊ธฐ๋กํ ๊ฒ์ ๋๋ค. ์๋์ ์ผ๋ก ์ด๋ค ์์๋ ๋ฐ์ดํฐ๋ก ๊ธฐ๋กํ์ง ์๋๋ค๋ ์ ์ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค:
- ๋ฐ์ดํ ์ (ํ๋ฃจํฌ์ค ์คํฌ๋ฆฝํธ ์ปจํ ์คํธ์์ ์ฌ์ฉํ ์ ์๋๋ก) ์ถ๊ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ด ๋จ๊ณ์์๋ ํ์ํ์ง ์์ต๋๋ค.
- ์์ฐ์์ ์๋น์๋ฅผ ์ํด ์ ์๋ ค์ ธ ์๊ณ ์ ์ง์๋๋ ํธ๋์ญ์ ๊ธฐ๋ฅ(๋ฉํ๋ฐ์ดํฐ๋ผ๊ณ ๋ ํจ)์ ์์กดํ๋ ๋จ์ํจ ์ ์ง ์ ๋ต์ ๋ฐ๋ผ, ์์ฐ์์ ์๋น์๋ฅผ ์ํด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ ์ํฉ๋๋ค.
- ๋ฐ์ดํ /UTxO์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ๋ ๋ฌด์ํ ์ ์๋ ๋น์ฉ์ด ๋ค๋ฉฐ, ๋จ์ํ ๋ฐ์ดํ ์ ์ฅ์ ๋งค ์ค๋ฌธ๋ง๋ค ์์ฒ ๊ฐ์ ์๋ก์ด ๋๋ฏธ UTxO๋ฅผ ์์ฑํ ๊ฒ์ ๋๋ค. ํธ๋์ญ์ ์ ์ ์ฅ ๋ฐ ์๋น ๋น์ฉ์ด ์ ๋ ดํฉ๋๋ค.
- ์ค๋ฌธ์กฐ์ฌ๋ ์๋ต์ ์ง๊ณํ ๋ ์ฌ๋กฏ ์์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ ์ฒด์ธ ๋๊ธฐํ๊ฐ ํ์ํ๋ฉฐ, ์ด ์ ๋ณด๋ฅผ UTxO ๊ทธ๋ํ์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๋ ๊ฐ๋ ฅํ ๋ ผ๊ฑฐ๋ ์์ต๋๋ค.
์ฝ๋ ํค ์๋ช vs VRF ์ฆ๋ช
์ฝ๋ ํค(Ed25519)์ VRF ํค๋ฅผ ์ธ์ฆ ์๋จ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จํด์ ์ฌ๋ฌ ์ฐจ๋ก (์จ/์คํ๋๋ ์ฝ๋) ๋ ผ์๊ฐ ์์๊ณ , ๋ ๊ฐ์ง ๋ชจ๋์ ๋ํ ์ฃผ์ฅ์ด ์์์ต๋๋ค.
ํํธ์ผ๋ก๋ ์ฝ๋ ํค ์ฌ์ฉ์ ์ ํธํ๋ ์ฌ๋๋ค๋ ์์ต๋๋ค:
- ์ฝ๋ ํค๋ ์คํ ์ดํฌ ํ ํ๋(์: ์ธ์ฆ์ ๋ฑ๋ก/์ ๋ฐ์ดํธ)์ ์ธ์ฆํ๊ธฐ ์ํ ์๋จ์ ๋๋ค.
- ํ์ ์๋ณํ๋ ๊ฒ์ ๊ถ๊ทน์ ์ผ๋ก ์ฝ๋ ํค์ด๋ฉฐ, ํด์๋ ํ ID์ ๋๋ค.
- VRF๋ ์์๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ผ๋ฏ๋ก ์ ์ฌ์ ๊ณต๊ฒฉ์์๊ฒ ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ์ฝ๋ ํค๋ Ed25519 ํค๋ก, ๊ธฐ์กด ํ๋กํ ์ฝ์ ํธ๋์ญ์ ์ฆ์ธ(์ถ๊ฐ ํ์ ์๋ช ์ + ๊ฒ์ฆ ํค ์ํธ๋์ค) ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํํธ, VRF ํค ์ฌ์ฉ์ ๋ํ ์ฃผ์ฅ์ ์ด๋ฏธ CIP-0022์ ์ผ๋ถ๋ก ๋ ผ์๋ ๋ฐ ์์ต๋๋ค:
- VRF๋ ํซํค์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ฐธ์ฌ๋๋ฅผ ์ด๋์ด๋ผ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ, ์ฝ๋ํค๋ฅผ ๋ ธ์ถํ ํ์๊ฐ ์์ต๋๋ค.
- ๋ธ๋ก์๋ ํ์ ๋ช ์์ ์ผ๋ก ์๋ณํ๋ VRF ์ฆ๋ช ์ด ํฌํจ๋์ด ์์ต๋๋ค.
- ์ค๋ฌธ ์์ ์ ํค๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋๋ฏ๋ก VRF ํค๋ ์๋ฒฝํ๊ฒ ์ ํฉํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์๋ ํ์ด๋ธ๋ฆฌ๋ ์๋ฃจ์ (input-output-hk#5050์์ ํ์ธ ๊ฐ๋ฅ)์ ์ ํํ์ง๋ง, ๋์ค์ ์ฝ๋ ํค ์๋ช ์๋ง ์์กดํ๊ธฐ ์ํด VRF ์ต์ ์ ์ญ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค(input-output-hk#5132 ์ฐธ์กฐ). ๊ทธ ์ด์ ๋ ์งง์ ๊ธฐ๊ฐ์ cardano-cli์์ VRF ์ฆ๋ช ์ ์ฌ์ฉ/๋จ์ฉ ๊ฐ๋ฅ์ฑ์ ๋ํ ๋ถํ์ค์ฑ ๋๋ฌธ์ ๋๋ค(๋ํ ๋น๋ฐ ํค ์ฌ์ฌ์ฉ์ ์ทจ์ฝ์ฑ ์ฐธ์กฐ).
์ด๋ ์ฝ๋ ์คํ ๋ฆฌ์ง์ ์์กดํ๋ SPO์ ์ฐธ์ฌ ์ ์ฐจ๋ฅผ ๋ ์ด๋ ต๊ฒ ๋ง๋๋ ๋ถํํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ์ง๋ง, ์ฐ๋ฆฌ๋ CIP-0022์ ์ ์ฌํ ์ฑ๋ฆฐ์ง๋ฅผ ํตํด ์คํ์ฒด์ธ์์ ์ธ์ฆ๋ ํ๋ก์ ํค์ ๋ํ ์์ด๋์ด์ ์ด๋ ค ์์ต๋๋ค.
KES ์๋ช
SPO๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ธ ๋ฒ์งธ ์จ์ฒด์ธ ์์๊ฐ ์๋๋ฐ, ์ด๋ KES ์๊ฒฉ ์ฆ๋ช ์ ๋์งํธ ์๋ช ์ ๋๋ค. ๊ทธ๋ฌ๋ KES๋ ๋ง๋ฃ๋ ์์ ์ด๊ณ ์ด์ ์ธ์ฆ์์ ์ํด ํ์ ๋์จํ๊ฒ๋ง ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ํ์ฉํ๊ธฐ๊ฐ ์กฐ๊ธ ๋ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค. ๋ฐ๋ผ์ ์ค๋ฌธ์กฐ์ฌ์์ KES ์๋ช ์ ํ์ธํ๋ ค๋ฉด ์ค๋ฌธ์กฐ์ฌ ์์ ์ ์ด์ ์ธ์ฆ์์ ์ ํจ์ฑ์ ์ถ์ ํ๊ธฐ ์ํด ๋ ๋ณต์กํ ์ค์ ๊ณผ ๋ชจ๋ํฐ๋ง์ด ํ์ํฉ๋๋ค.
์ด CIP๊ฐ ์์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ฉด, ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ํ์ง๋ง ํ์ฌ ๊ฒํ ์ค์ธ ๊ธฐ๊ฐ๊ณผ ๋ณต์ก์ฑ์ ๋ํ ์ ๋ฐ์ ์ธ ์ฅ๋จ์ ์ ๊ณ ๋ คํ ๋, ์ด๋ฒ ๋ฐ๋ณต ์์ ์์๋ KES๋ฅผ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ฌ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํ๋ก์ ํค
CIP์ ์ค๋ช ๋ ๋ฐฉ์์ ๋ํ ๋ ๋ค๋ฅธ ๊ฐ๋ฅํ ๋์์ SPO๊ฐ ํ๋ก์ Ed25519 ํค๋ฅผ ๋ฑ๋กํ๊ณ ์ดํ ํด๋น ํ๋ก์ ํค๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํค ๋ฑ๋ก์ ์ ํจ์ฑ์ ์ฝ๋ ํค์์ ๊ด๋ จ VRF ์ฆ๋ช ๋๋ ๋์งํธ ์๋ช ์ ์์ฑํ๋ ๊ฒ์ ์กฐ๊ฑด์ผ๋ก ํฉ๋๋ค(์ด์ ์ธ์ฆ์์ ๋ํด ์ํ๋๋ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌ).
๊ทธ๋ฌ๋ ์ด ์ต์ ์ KES ๋์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด CIP์ ์ค๊ณ ๋ชฉํ ์ค ์ผ๋ถ์ธ ๋จ์์ฑ๊ณผ ์์ถฉ๋ฉ๋๋ค. ๋ค์ํ ์ค๋ฌธ์กฐ์ฌ์ SPO์ ์ฐธ์ฌ๋ฅผ ๊ทน๋ํํ๊ณ ์ ํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ ํฌ๋ ๋ณด์์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ์ค๋ฌธ์กฐ์ฌ ์ฐธ์ฌ ์ ์ฐจ๋ฅผ ์ต๋ํ ๊ฐ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
์ฐธ๊ณ KES ์๋ช ๊ณผ ํ๋ก์ ํค์ ๋ํ ๋ ๊ฐ์ง ๋์ฒด ์ต์ ์ ํฅํ ์ค๋ฌธ์กฐ์ฌ ๋ฒ์ ์์ ์ฌ๊ฒํ ๋ ์ ์์ต๋๋ค. ํนํ ์๋ฃจ์ ์ด ์๋ํ ๋งํผ ์ผ์์ ์ด์ง ์์ ๊ฒ์ผ๋ก ํ๋ช ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋คํํ๋ ํ์ฌ ์ค๊ณ ๊ฒฐ์ ์ผ๋ก ์ธํด ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ์ง ์์ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ์ด๋ฌํ ๋ชฉ์ ์ ์ํด ๋ ๊ฐ์ง ์๋ก์ด ์ฆ์ธ ์ ํ 6๊ณผ 7์ ๋์ ํ ์ ์์ต๋๋ค. KES ๋ฑ๋ก์ ๋ณ๋์ ์จ์ฒด์ธ ์ด๋ฒคํธ๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ณด์
์ฌ์ ๊ฐ๋ฅ์ฑ(Replayability)
์ง๋ฌธ์ ์ ํ์ ๋ ผ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ ํด์ผ ํฉ๋๋ค. ๊ณต์ํ๋ ์ง๋ฌธ์ด ๊ณ ์ ํ์ง ํ์ธํ๋ ๊ฒ์ ํฌํ๋ฅผ ์งํํ๋ ์ฐฝ์ค ์ฃผ์ฒด์ ๋ฌ๋ ค ์์ต๋๋ค. ๋์ผํ ์ง๋ฌธ์ ์ฌ๋ฌ ๋ฒ ๋ฌป๋ ๊ฒฝ์ฐ, ๋ ผ์ค๋ ์ฌ์ ๋ถ๊ฐ๋ฅํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๋ต๋ณ์๋ ์ง๋ฌธ์ (๊ณ ์ ํ) ํด์๊ฐ ํฌํจ๋๋ฏ๋ก ๋ต๋ณ๋ ๊ณ ์ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ ์ฌ์ ํ ๋์ผํ ๋ต๋ณ์ ๋ค๋ฅธ ์์คํ ํ์์๊ฐ ์ฌ๋ฌ ๋ฒ ์ฌ์ ์กํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฏ๋ก ๋ต๋ณ์ ์ฌ๋ฌ ๋ฒ ๋ณ๊ฒฝ/์ ์กํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ ์ผํ ์์ธ๋ ์ฝ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ต๋ณ์ ๋ค์ ์ธ์ฆํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์๊ฒฉ์ฆ์ ๋ ธ์ถ
SPO์ ๋น๋ฐ ์๊ฒฉ์ฆ์ ๋
ธ์ถ์ ์ ํ๋์ด์ผ ํ๋ฉฐ, ์๊ฒฉ์ฆ์ ์กฐ์์ ์ ์คํ๊ฒ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ ๋ฒกํฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ cardano-cli
๋ฅผ ํ์ฅํ๊ณ ๊ธฐ์กด ํต์ฌ ์ ์ง ๊ด๋ฆฌ์์ ๋ค๋ฅธ ์คํ ์์ค ์ฃผ์ฒด๋ค์ด ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ๋ฉด๋ฐํ ๊ฒํ ํ ๊ฒ์ ์ ์ํฉ๋๋ค.
๋ค๋ฅธ ๋๊ตฌ๋ cardano-cli์์ ์ทจํ ์ ๊ทผ ๋ฐฉ์์ ์์ ๋กญ๊ฒ ๋ณต์ ํ ์ ์์ง๋ง, SPO๋ ์ 3์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๋ ๋งค์ฐ ์ ์คํ๊ฒ ์งํํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ํนํ, ๋ชจ๋ ๋๊ตฌ๋ ํ์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ ํ ์คํ๋ผ์ธ์ผ๋ก ์๋ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ต์ข ํธ๋์ญ์ ๊ตฌ์ฑ๊ณผ ์ ์ถ์ ์ ์ ํ ํ๊ฒฝ์์ ์ด๋ฃจ์ด์ ธ์ผ ํ์ง๋ง, ๋ฉํ๋ฐ์ดํฐ์ ์์ฑ์ ์์ ํ ๊ฒฉ๋ฆฌ๋(air-gapped) ์์คํ ์์๋ง ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
ํ์ฑ ๋ฐฉ์
์น์ธ ๊ธฐ์ค
- ๋๊ท๋ชจ SPO์ ๊ฐ์์ ์ธ ๋์์ ์ฐธ์ฌ
- ์นด๋ฅด๋ค๋ ธ ์ฌ๋จ์ ๋ฉ์ธ๋ท์์ ์ฒซ ๋ฒ์งธ ์๋ฒ ์ค๋ฌธ์ ์ค์ํ์ต๋๋ค.
๊ตฌํ ๊ณํ
- ์ฝ๋ ํค ๋ฐ VRF ์ฆ๋ช ์์ EdDSA์ ๋์์ผ๋ก KES ์๋ช ์ ๋ํ ์ง์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋๊ตฌ ์ง์
- ๊ด๋ จ ํธ๋์ญ์
๊ตฌ์ฑ ๋ฐ ์๋ช
์ ์ง์ํ๊ธฐ ์ํด
cardano-cli
๊ฐ ์ ๋ฐ์ดํธ๋ ์์ ์ ๋๋ค. cncli
๋ ์ ์ฌํ ์ง์์ผ๋ก ์ ๋ฐ์ดํธ๋ ์ ์์ต๋๋ค.cardano-signer
๋ ์ ์ฌํ ์ง์์ผ๋ก ์ ๋ฐ์ดํธ๋ ์ ์์ต๋๋ค.
ํ ์คํธ ์คํ
- (ํ๋ฆฌํ๋ก๋ํธ์์) ํ ์คํธ๋ท ์คํ์ ๋ฐํํ๊ณ SPO๋ฅผ ์ํฌ์ ์ธ์ ์ ์ด๋ํ์ฌ ํ ์คํธ๋ท ์ค๋ฌธ์ ์ค์ํฉ๋๋ค.
- ๋ ๋ฒ์งธ ํ ์คํธ ์คํ์ ํ ์๋ ์์ง๋ง ์ด๋ฒ์๋ ๋ฉ์ธ๋ท์์ ์งํํฉ๋๋ค.
์ ์๊ถ
์ด CIP๋ CC-BY-4.0์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
* ์๋ฌธ: https://github.com/cardano-foundation/CIPs/tree/cip-spo-polls/CIP-0094