๋จผ์ € ์‹œ์ž‘ํ•ด ๋ณด๋Š” ๋ธ”๋ก์ฒด์ธ – 02. Hyperledger Fabric

์•ˆ๋…•ํ•˜์„ธ์š”?
์ง€๋‚œ ๋ธ”๋ก์ฒด์ธ ๊ธฐ๋ณธ์— ์ด์–ด ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ธ”๋ก์ฒด์ธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ „ ๋‹จ๊ณ„๋กœ ์˜คํ”ˆ์†Œ์Šค ๋ธ”๋ก์ฒด์ธ ํ”„๋กœ์ ํŠธ์ธ Hyperledger Fabric์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Hyperledger ํ•˜์œ„ ํ”„๋กœ์ ํŠธ

๋ธ”๋ก์ฒด์ธ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” Hyperledger ํ”„๋กœ์ ํŠธ์—๋Š” ์—ฌ๋Ÿฌ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํžˆ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ๋‹ค์Œ ๋งํฌ์—์„œ ํ™•์ธ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. Hyperledger ํ•˜์œ„ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

Blockchain Explorer

Blockchain Explorer ๋Š” ๋ธ”๋ก์ฒด์ธ ๋Ÿฐํƒ€์ž„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์›น ๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ๋กœ, ๋ธ”๋ก, ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ๊ทธ ์™ธ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์ฒด์ธ์ฝ”๋“œ ๋ฐ ์›์žฅ์˜ ์ •๋ณด๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Fabric

Fabric์€ ๋ธ”๋ก์ฒด์ธ์˜ ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ๋กœ ๋ธ”๋ก์ฒด์ธ์˜ ์—”์ง„์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ๋ฐฉ์‹์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„์šฉํ•˜์—ฌ, ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์„œ๋น„์Šค๋“ฑ ํ•„์š”ํ•œ ์‹œ์ ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ฒด์ธ์ฝ”๋“œ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฐ์—…๊ตฐ ๋˜๋Š” ์š”๊ตฌ์กฐ๊ฑด์— ๋งž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐœ๋ฐœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ํฌ์ŠคํŒ…๋  ๋ฌธ์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ด Fabric์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„ค๋ช…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Iroha

Iroha๋Š” ๊ธฐ์กด์˜ ์‹œ์Šคํ…œ์— ๋ถ„์‚ฐ์›์žฅ์˜ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•˜๊ณ ์ž ํ•˜๊ธฐ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ž…๋‹ˆ๋‹ค.
๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.:

  • ๊ธฐ์กด ์‹œ์Šคํ…œ๊ณผ์˜ ์‰ฌ์šด ํ†ตํ•ฉ
  • ์ตœ์‹ ์˜ ๋„๋ฉ”์ธ ์ง€ํ–ฅ C++ ๋””์ž์ธ
  • ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์›์— ์ดˆ์ฒจ
  • Sumeragi ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋น„์ž”ํ‹ฐ์›€ ์žฅ์•  ํ—ˆ์šฉ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฑ„ํƒ

Sawtooth Lake

๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ Sawtooth Lake ํ”„๋กœ์ ํŠธ๋Š” ์ธํ…”์˜ ๋ชจ๋“ˆ๋ผ ๋ฐฉ์‹์˜ ๋ธ”๋Ÿญ์ฒด์ธ ์ œํ’ˆ๊ตฐ์ž…๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์›์žฅ ๊ธฐ์ˆ ์€ IoT์—์„œ ๊ธˆ์œต์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์ž ์žฌ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ํ•ด๋‹น ์ŠคํŽ™ํŠธ๋Ÿผ์—์„œ ์š”๊ตฌ ์‚ฌํ•ญ์˜ ๋‹ค์–‘์„ฑ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. Sawtooth Lake๋Š” ํ—ˆ๊ฐ€ ๋œ ๋ฐฐํฌ์™€ ๋ฌด๋‹จ ๋ฐฐํฌ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ƒˆ๋กœ์šด ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ์ฆ๋ช… (Poet)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. PoET๋Š” ์ž์› ์†Œ๋น„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ปจ์„ผ์„œ์Šค ๊ณ„์ธต์—์„œ ์ œํ•œ๋˜๊ฑฐ๋‚˜ ์ž์œ ๋กœ์šด ์˜๋ฏธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ํŒจ๋ฐ€๋ฆฌ๋กœ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Hyperledger Fabric

์šฉ์–ด

๋‹ค์Œ์€ Fabric ๊ธฐ๋ฐ˜ ๋ธ”๋Ÿญ์ฒด์ธ์˜ ๊ธฐ์ˆ ์„ ์ตํžˆ๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์šฉ์–ด๋“ค์ž…๋‹ˆ๋‹ค. ์šฉ์–ด๋“ค์€ ๊ฐ€๊ธ‰์  ํ•œ๊ธ€ํ™”๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์˜๋ฌธ ์šฉ์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„ ์‹œ์Šคํ…œ ์šฉ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Transactor : ํŠธ๋žœ์žญ์…˜(๊ฑฐ๋ž˜)์„ ์ผ์œผํ‚ค๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฉ๋‹ˆ๋‹ค.
  • Transaction : ํŠธ๋žœ์žญ์…˜์€ ๋ธ”๋Ÿญ์ฒด์ธ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์€ deploy, invoke ๋ฐ query dlau, ์ฒด์ธ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์ „ ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • Ledger : Ledger : ํŠธ๋žœ์žญ์…˜๊ณผ ํ˜„์žฌ ์„ธ๊ณ„ ์ƒํƒœ๋ฅผ ํฌํ•จํ•˜๋Š” ์ผ๋ จ์˜ ์•”ํ˜ธ ํ•™์ ์œผ๋กœ ๋งํฌ ๋œ ๋ธ”๋ก. ์ด์ „ ๊ฑฐ๋ž˜์˜ ๋ฐ์ดํ„ฐ ์™ธ์—๋„ ์›์žฅ์—๋Š” ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์ฒด์ธ ์ฝ”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • World state : ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด์„œ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ƒํƒœ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ Key-value ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค.
  • Chaincode : ๋‹ค์–‘ํ•œ ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์„ ๊ตฌํ˜„ํ•œ ๋ธ”๋ก์ฒด์ธ์— ์ž„๋ฒ ๋“œ๋˜๋Š” ๋กœ์ง์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ณ  ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋กœ ๋””ํ”Œ๋กœ์ด ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ”ผ์–ด ๋˜๋Š” ๋…ธ๋“œ์™€ ์ธํ„ฐํŽ˜์ด์Šค ๋˜์–ด ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด์„œ ์ฒด์ธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. ์ฒด์ธ์ฝ”๋“œ๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ผ์œผํ‚ค๊ณ  ์œ ํšจ์„ฑ์ด ํ™•์ธ๋˜๋ฉด ๊ณต์œ ์›์žฅ์— ์ถ”๊ฐ€ํ•˜๊ณ  World state๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Validating peer (VP) : ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ ์›์žฅ์„ ๊ด€๋ฆฌ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŠธ๋žœ์žญ์…˜์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์„ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ฆ๋œ ํŠธ๋žœ์žญ์…˜์€ ์›์žฅ์— ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ํ•ฉ์˜์— ์‹คํŒจํ•˜๋ฉด ๋ธ”๋ก์—์„œ ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ์žฅ๋ถ€์— ๊ธฐ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Validating peer๋Š” ์ฒด์ธ์ฝ”๋“œ๋ฅผ deploy, invoke, query ํ•  ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • Non-validating peer (NVP) : Transactor๊ฐ€ Validating peer์— ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. Non-validating peer (NVP) ๋Š” ํ˜ธ์ถœ๋œ ์š”์ฒญ์„ Validating peer๋กœ ์ „๋‹ฌํ•˜๋ฉฐ, ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ, REST ์„œ๋น„์Šค๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.
  • Consensus : ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์˜ ํŠธ๋žœ์žญ์…˜(deploy, invoke) ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ, Validating ๋…ธ๋“œ๋“ค์€ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์„ ์Šน์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•จ๊ป˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • Permissioned network : ๊ฐ ๋…ธ๋“œ๋Š” ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ์ด๋ฉฐ, ๊ฐ ๋…ธ๋“œ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜

๋ธ”๋ก์ฒด์ธ ๊ธฐ๋ณธ์—์„œ๋„ ๋ณด์—ฌ์ค€ ์•„ํ‚คํ…์ฒ˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ธ”๋ก์ฒด์ธ์˜ ์—”์ง„์œผ๋กœ ๋ณผ์ˆ˜ ์žˆ๋Š” Fabric์€ ํฌ๊ฒŒ 3๊ฐ€์ง€ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

1. Membership Services

๋ฉค๋ฒ„์‹ญ ์„œ๋น„์Šค๋Š” ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Non-permissioned ๋ธ”๋ก์ฒด์ธ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ํ•„์š”์—†์œผ๋ฉฐ, ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋™๋“ฑํ•˜๊ฒŒ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ธ”๋ก์— ํŠธ๋žœ์žญ์…˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉค๋ฒ„์‰ฝ ์„œ๋น„์Šค๋Š” PKI(Public Key Infrastructure)์™€ ๋ถ„์‚ฐํ™”/ํ•ฉ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ non-permissioned ๋ธ”๋ก์ฒด์ธ์—์„œ permissioned ๋ธ”๋ก์ฒด์ธ์œผ๋กœ ๋ณ€ํ™˜์‹œํ‚ต๋‹ˆ๋‹ค. Permissioned ๋ธ”๋ก์ฒด์ธ์—์„œ๋Š” ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์žฅ๊ธฐ์ ์ธ ์ธ์ฆ์„œ(enrollment certificates)๋ฅผ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ๋ก์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋˜๋ฉฐ, ์—”ํ‹ฐํ‹ฐ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ตฌ๋ณ„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ TCA (Transaction Certificate Authority)๊ฐ€ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํš๋“ํ•œ ์ธ์ฆ์„œ๋Š” ํŠธ๋žœ์žญ์…˜์„ ๋ฐœ์ƒ์‹œํ‚ฌ๋•Œ ์ธ์ฆํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2. Blockchain Services

๋ธ”๋ก์ฒด์ธ ์„œ๋น„์Šค๋Š” HTTP/2 ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ P2P ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ ๋ถ„์‚ฐ์›์žฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด World state๋ฅผ ๋ณต์ œํ•˜๋Š” ๋“ฑ ๊ด€๋ฆฌ ํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ(PBFT, Raft, PoW, PoS)์„ ์—ฐ๊ฒฐํ•˜๊ณ  ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Chaincode Services

์ฒด์ธ์ฝ”๋“œ ์„œ๋น„์Šค๋Š” Validating ๋…ธ๋“œ์—์„œ ์•ˆ์ „ํ•˜๊ณ  ๊ฐ€๋ณ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒด์ธ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์€ ๋ณด์•ˆ OS ๋ฐ ์ฒด์ธ ์ฝ”๋“œ ์–ธ์–ด, Go, Java ๋ฐ Node.js์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ SDK ๊ณ„์ธต์„ ํฌํ•จํ•˜๋Š” ์ผ๋ จ์˜ ์„œ๋ช… ๋œ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ “์ž ๊ธด”๋ณด์•ˆ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๊ทธ์™ธ ๊ธฐ๋Šฅ
4.1 Events

Validating peers ์™€ ์ฒด์ธ์ฝ”๋“œ๋Š” ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฐœ์ƒ์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋…ธํ‹ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ด๋ฒคํŠธ ํ˜น์€ ์ปค์Šคํ…€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜ ์ด์ƒ์˜ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ ์ˆ˜์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Web hooks๋‚˜ Kafka ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ์ˆ˜์‹ ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4.2 Application Programming Interface (API)

Fabric์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” REST API ์ž…๋‹ˆ๋‹ค. API ํ˜ธ์ถœ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๋“ฑ๋ก, ๋ธ”๋ก์ฒด์ธ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ, ํŠธ๋žœ์žญ์…˜ ๋ฐœ์ƒ ๋“ค์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฒด์ธ์ฝ”๋“œ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ํ†ตํ•ด์„œ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.3 Command Line Interface (CLI)

REST API์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” CLI๊ธฐ๋Šฅ์„ ํ†ตํ•ด์„œ ์ฒด์ธ์ฝ”๋“œ์˜ ๋””ํ”Œ๋กœ์ด ๋ฐ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์„ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. CLI๋Š” Golang์œผ๋กœ ์ œ์ž‘์ด ๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ OS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ† ํด๋กœ์ง€

Fabric์„ ํ†ตํ•œ ๋ณผ๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋Š” ํ•˜๋‚˜์˜ ๋ฉค๋ฒ„์‰ฝ ์„œ๋น„์Šค์™€ ๋‹ค์ˆ˜์˜ Validating peer ์™€ non-validating peer ๋“ค๋กœ ์ด๋ฃจ์–ด ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜ ๋˜๋Š” ๋‹ค์ˆ˜์˜ ์ฒด์ธ์„ ์šด์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. Single Validating Peers

๊ธฐ๋Šฅ์ ์œผ๋กœ non-validating peer๋Š” validating peer์˜ ์„œ๋ธŒ์…‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ชจ๋“  non-validating peer์˜ ๊ธฐ๋Šฅ์€ validating peer๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ธ”๋ก์ฒด์ธ์˜ ๋„คํŠธ์›Œํฌ๋Š” ํ•˜๋‚˜์˜ validating peer๋กœ ๊ตฌ์„ฑ๋œ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ํ† ํด๋กœ์ง€๋Š” ๋ณดํ†ต ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ™˜๊ฒฝ์œผ๋กœ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

SingleValidatingPeer

์ด ํ† ํด๋กœ์ง€๋Š” ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ๋Š” ํ•ฉ์˜ ๋ชจ๋“ˆ์ธ noops ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ ์šฉํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2. Multiple Validating Peers

์šด์˜ํ™˜๊ฒฝ์ด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ผ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ validating peer์™€ non-validating peer๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์—์„œ non-validating peer๋Š” ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ REST API ์„œ๋น„์Šค ๊ด€๋ฆฌ๋“ฑ์˜ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

MultipleValidatingPeer

Validating peers ๋“ค์€ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ, ํŠธ๋žœ์žญ์…˜ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3. Multichain

๊ฐ๊ฐ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ๋Š” validating peer์™€ non-validating peer๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ชฉ์ ์— ๋”ฐ๋ผ์„œ ์ด์™€ ๊ฐ™์€ ์กฐํ•ฉ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ธ”๋ก์ฒด์ธ์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๋ฉฐ

์—ฌ๊ธฐ๊นŒ์ง€ Hyperledger Fabric ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋ฐ ์šฉ์–ด๋“ค ๊ทธ๋ฆฌ๊ณ  ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ† ํด๋กœ์ง€๋“ฑ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํžˆ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.
์ด ๊ธฐ๋ณธ์ ์ธ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ ๋ถ€ํ„ฐ๋Š” ์‹ค์ œ๋กœ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.