πŸ’»/블둝체인

[Besu] Hyperledger Besuλž€?

ruhz 2021. 11. 16. 11:18

1. μ—”ν„°ν”„λΌμ΄μ¦ˆ 블둝체인

λΈ”λ‘μ²΄μΈμ˜ κ°€μž₯ μ£Όμš”ν•œ κ°€μΉ˜ 쀑 ν•˜λ‚˜λŠ” νƒˆμ€‘μ•™ν™”μΌ κ²ƒμž…λ‹ˆλ‹€. 블둝체인을 μ΄μš©ν•˜λ©΄ μ€‘μ•™μ˜ ν†΅μ œλ‚˜ κ°„μ„­ 없이 개인 λŒ€ 개인이 μ‹ λ’° κ°€λŠ₯ν•œ 거래λ₯Ό ν•  수 있죠. 그런 μ˜λ―Έμ—μ„œ κΈ°μ—…μ΄λ‚˜ 기관듀이 쑰직 λ‚΄λΆ€μ—μ„œ 이것을 ν™œμš©ν•œλ‹€κ³  ν•˜λ©΄ 왠지 μ–΄μšΈλ¦¬μ§€ μ•ŠλŠ”λ“―ν•œ λŠλ‚Œμ΄ λ“­λ‹ˆλ‹€. 기업은 ν•˜λ‚˜μ˜ λͺ©ν‘œλ‘œ μ›€μ§μ—¬μ•Όν•˜κΈ° λ•Œλ¬Έμ—, 아무리 μˆ˜ν‰μ μΈ νŒ€μ΄λΌλ„ νŒ€μž₯은 μ‘΄μž¬ν•˜κΈ° λ§ˆλ ¨μž…λ‹ˆλ‹€. κ²Œλ‹€κ°€ 곡급망 μƒν’ˆ 좔적, κΈ€λ‘œλ²Œ κ²°μ œλ‚΄μ—­ λ“± λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜λŠ”λ°μ— μ‚¬μš©ν• ν…λ° 개인 λˆ„κ΅¬λ‚˜ μ ‘κ·Όν•΄ 읽고 μ“°κΈ°μ—λŠ” μ ν•©ν•˜μ§€ μ•Šμ•„ λ³΄μž…λ‹ˆλ‹€. 

λ”°λΌμ„œ 기업은 λ„€νŠΈμ›Œν¬μ˜ 주체가 μ‘΄μž¬ν•˜κ³  μžμ‹ λ“€μ΄ μ •ν•œ 쑰건에 λ§žμ§€ μ•ŠλŠ” μ°Έμ—¬μžλŠ” μ œν•œν•  수 μžˆλ„λ‘ ν•˜λŠ” ν—ˆκ°€ν˜• 블둝체인을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ—”ν„°ν”„λΌμ΄μ¦ˆ 블둝체인은 κΈ°μ—…μ—μ„œ μ‚¬μš©ν•˜λŠ” ν—ˆκ°€ν˜• λ„€νŠΈμ›Œν¬λ₯Ό μ˜λ―Έν•˜κ³ , ν•˜λ‚˜μ˜ κΈ°μ—… λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  μˆ˜λ„ 있고, μ—¬λŸ¬ 개의 기업이 μ°Έμ—¬ν•΄μ„œ 원μž₯을 κ³΅μœ ν•˜λ„λ‘ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν›„μžμ™€ 같은 κ²½μš°λŠ” 'μ»¨μ†Œμ‹œμ—„ 블둝체인'이라고 νŠΉμ •ν•΄ λΆ€λ¦…λ‹ˆλ‹€. 

μ—”ν„°ν”„λΌμ΄μ¦ˆ 블둝체인은 μ±…μž„, ν—ˆκ°€, μˆ˜μ •, ν™•μž₯ νŠΉμ„±μ„ κ°–μŠ΅λ‹ˆλ‹€.

  • μ±…μž„ : λ„€νŠΈμ›Œν¬μ˜ 각 λ…Έλ“œλ“€μ€ 신원이 μ•Œλ €μ§€κ³ , μžμ‹ μ˜ 행동(νŠΈλžœμž­μ…˜ λ“±)에 λŒ€ν•΄ μ±…μž„μ„ μ Έμ•Όν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
  • ν—ˆκ°€ : λ„€νŠΈμ›Œν¬μ˜ 주체가 ν—ˆκ°€ν•œ μ‚¬μš©μžλ§Œ 블둝체인을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μˆ˜μ • : λ§Œμ•½ λ„€νŠΈμ›Œν¬λ₯Ό μš΄μ˜ν•˜λŠ” μ°Έμ—¬μžλ“€μ΄ λͺ¨λ‘ λ™μ˜ν•œλ‹€λ©΄, 데이터λ₯Ό μˆ˜μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
  • ν™•μž₯ : νƒˆμ€‘μ•™ν™”κ°€ 덜 λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ—, μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ„ μ‰½κ²Œ μ—…λ°μ΄νŠΈ 해쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. Hyperledger Besu

ν•˜μ΄νΌλ ˆμ ΈλŠ” λ¦¬λˆ…μŠ€ μž¬λ‹¨μ΄ μ£Όκ΄€ν•˜μ—¬ 진행 쀑인, 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό κ΅¬ν˜„ν•  수 μžˆλŠ” μ˜€ν”ˆ μ†ŒμŠ€ 기반의 μ—”ν„°ν”„λΌμ΄μ¦ˆ 블둝체인 ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€. 정말 λ§Žμ€ 상세 κΈ°λŠ₯듀이 μžˆμ§€λ§Œ, μ£Όμš” μŠ€νŽ™λ“€μ„ μ •λ¦¬ν•΄λ΄€μŠ΅λ‹ˆλ‹€.

기반 이더리움
μ–Έμ–΄ JAVA
ν•©μ˜ μž‘μ—…μ¦λͺ…(Ethash), κΆŒμœ„μ¦λͺ…(Clique, IBFT2.0, QBFT)
슀마트 μ»¨νŠΈλž™νŠΈ κ°€λŠ₯(EVM, 이더리움 Solidity 거의 ν˜Έν™˜, 결정둠적)
ν—ˆκ°€ ν™”μ΄νŠΈλ¦¬μŠ€νŠΈ 방식
λ³΄μ•ˆ private νŠΈλžœμž­μ…˜ 
μ˜μ§€μ‹ 증λͺ… μ—†μŒ
νŠΈλžœμž­μ…˜ 흐름 λͺ…λ Ή → μ‹€ν–‰/검증
고유 화폐 μ—†μŒ, 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό μ΄μš©ν•œ 토큰
νŠΉμ§• EEA μŠ€νŽ™ μ€€μˆ˜, 일반적인 이더리움 ν΄λΌμ΄μ–ΈνŠΈ κΈ°λŠ₯도 지원, 계정 기반 λ“±

 

이더리움, 슀마트 μ»¨νŠΈλž™νŠΈ

λ¨Όμ € κΈ°λ°˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이더리움에 λŒ€ν•΄ 잠깐 λ¨Όμ € μ„€λͺ…λ“œλ¦¬μžλ©΄, 이더리움 μ—­μ‹œ λΉ„νŠΈμ½”μΈκ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ μž‘μ—…μ¦λͺ…을 μ‚¬μš©ν•˜λŠ” 퍼블릭 λΈ”λ‘μ²΄μΈμž…λ‹ˆλ‹€. 블둝을 λ§Œλ“€κ³ , μ—„μ²­λ‚œ λ…Έλ ₯을 λ“€μ—¬ 채꡴ ν›„ 블둝을 체인에 올렀 λ„€νŠΈμ›Œν¬μ— μ „νŒŒν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이더리움은 ν™”νλ‘œμ„œμ˜ κΈ°λŠ₯만 ν•  수 μžˆλŠ” λΉ„νŠΈμ½”μΈκ³ΌλŠ” λ‹€λ₯΄κ²Œ, 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό 지원해 블둝체인을 ν”Œλž«νΌν™” μ‹œμΌ°μŠ΅λ‹ˆλ‹€. μž₯λΆ€λ₯Ό 쀄이 κ·Έμ–΄μ Έ μžˆλŠ” 가계뢀 λ…ΈνŠΈκ°€ μ•„λ‹Œ, 무엇이든 적을 수 μžˆλŠ” 백지 λ…ΈνŠΈλ‘œ λ§Œλ“  것 μž…λ‹ˆλ‹€. 자체 ν”„λ‘œκ·Έλž˜λ° 언어인 Solidity둜 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  블둝에 λ„£μ–΄ 올리면, 이것을 각 λ…Έλ“œκ°€ 이더리움 가상머신(EVM)을 μ΄μš©ν•΄ μ‹€ν–‰ν•˜μ—¬ κ²€μ¦ν•©λ‹ˆλ‹€.

이 이더리움을 κ°œμ‘°ν•˜μ—¬ JAVA둜 κ΅¬ν˜„ν•œ μ˜€ν”ˆμ†ŒμŠ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ Besuμž…λ‹ˆλ‹€. EVM, Solidityκ°€ ν˜Έν™˜λ˜λŠ” 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό μ‚¬μš©ν•  수 있고, μ›ν•œλ‹€λ©΄ ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜μ„ μž‘μ—…μ¦λͺ…(Ethash)으둜 μ„€μ •ν•΄ 이더리움 λ„€νŠΈμ›Œν¬μ˜ ν΄λΌμ΄μ–ΈνŠΈμ²˜λŸΌ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. (참고둜 ν΄λΌμ΄μ–ΈνŠΈλΌ ν•˜λ©΄ μžμ—°μŠ€λŸ½κ²Œ μ„œλ²„λ₯Ό λ– μ˜¬λ¦¬κ²Œ λ˜μ§€λ§Œ, 블둝체인은 νƒˆμ€‘μ•™ν™”λœ κ°œλ…μ΄κΈ° λ•Œλ¬Έμ— μ€‘μ•™μ„œλ²„κ°€ λ”°λ‘œ 없이 ν΄λΌμ΄μ–ΈνŠΈλ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€)

보톡 이더리움 ν΄λΌμ΄μ–ΈνŠΈλ‘œ Geth을 많이 μ‚¬μš©ν•˜μ§€λ§Œ, Besu둜 채꡴을 ν•˜λŠ” κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.

ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜μ„ κΆŒμœ„μ¦λͺ…μœΌλ‘œ μ„€μ •ν•œλ‹€λ©΄ μ—”ν„°ν”„λΌμ΄μ¦ˆ λΈ”λ‘μ²΄μΈμœΌλ‘œ ν™œμš©ν•˜κ²Œ 되겠죠. BesuλŠ” Clique, IBFT2.0, QBFT λ“± λ‹€μ–‘ν•œ κΆŒμœ„μ¦λͺ… ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 각 κΆŒμœ„μ¦λͺ… μ•Œκ³ λ¦¬μ¦˜μ„ λͺ‡κ°€μ§€ 기쀀을 톡해 λΉ„κ΅ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

λ‹€μ–‘ν•œ ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜

λ¨Όμ € 즉결성(Immediate Finality)은 '체인에 μ˜¬λΌκ°„ 데이터가 λ°”λ‘œ ν™•μ •λ˜λŠ”κ°€'λ₯Ό λ§ν•©λ‹ˆλ‹€. μž‘μ—…μ¦λͺ…을 μ„€λͺ…ν•  λ•Œ '블둝이 λ™μ‹œμ— μ±„κ΅΄λ˜κ²Œ 되면 Forkκ°€ λ°œμƒν•˜κ²Œ 되고, λͺ‡ 개의 블둝이 뒀에 달렀야 ν™•μ •ν•  수 μžˆλ‹€'κ³  ν–ˆμ—ˆλŠ”λ° κΈ°μ–΅ λ‚˜μ‹œλ‚˜μš”? 이런 κ²½μš°λŠ” 즉결성이 μ—†λ‹€κ³  λ§ν•©λ‹ˆλ‹€. IBFTλ‚˜ QBFT ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜μ€ μ˜¬λΌκ°„ 블둝은 λ°”λ‘œ ν™•μ •λ˜μ§€λ§Œ, Clique μ•Œκ³ λ¦¬μ¦˜μ€ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. 

κ²€μ¦μžμ˜ μ΅œμ†Œ μˆ˜λŠ” 'μ΅œμ†Œ λͺ‡ λͺ…μ˜ κ²€μ¦μžκ°€ μžˆμ–΄μ•Ό 블둝체인 λ„€νŠΈμ›Œν¬κ°€ λŒμ•„κ°€λŠ”κ°€'λ₯Ό λ§ν•©λ‹ˆλ‹€. IBFT, QBFTλŠ” μ•žμ„œ μ„€λͺ…ν–ˆλ˜ λΉ„μž”ν‹΄ 문제 λ‚΄μ„±(Byzantine Fault Tolerant)이 μ μš©λ˜μ—ˆκ³ , 이 μ‹œμŠ€ν…œμ€ μ•„λž˜ κ·Έλ¦Όκ³Ό 같이 λŠμž„μ—†μ΄ μƒν˜Έ ν†΅μ‹ ν•˜λ©° ν•©μ˜λ₯Ό ν•΄μ•Ό ν•˜λŠ” μ‹œμŠ€ν…œ μ΄λ―€λ‘œ μ΅œμ†Œ 4λͺ…μ˜ κ²€μ¦μžκ°€ ν•„μš”ν•©λ‹ˆλ‹€. λ°˜λ©΄μ— CliqueλŠ” μ΅œμ†Œ ν•˜λ‚˜μ˜ λ…Έλ“œλ‘œλ„ λ™μž‘μ΄ κ°€λŠ₯ν•˜μ§€λ§Œ 단독 κ²€μ¦μžμ— μž₯μ• κ°€ λ°œμƒν•  경우, 이에 λŒ€ν•œ λŒ€μ±…μ€ λ§ˆλ ¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 

 

Cliqueκ°€ IBFT와 QBFT보닀 더 내결함성이 κ°•ν•©λ‹ˆλ‹€. CliqueλŠ” κ²€μ¦μžλ“€μ˜ 절반 정도가 결함이 생기더라도 ν•©μ˜λ₯Ό ν•  μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ IBFTλ‚˜ QBFT의 경우 2/3 μ΄μƒμ˜ κ²€μ¦μžλ“€μ΄ 응닡을 쀄 수 μžˆλŠ” μƒνƒœμ—¬μ•Ό ν•©μ˜κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. 참고둜 3개 μ΄ν•˜μ˜ κ²€μ¦μžλ‘œλŠ” μ„œλ‘œ λ‹€λ₯Έ ν™˜κ²½μ—μ„œ μ‹€ν–‰ν–ˆμ„ λ•Œ 블둝을 μƒμ„±ν•˜κΈ΄ ν•˜μ§€λ§Œ μ¦‰κ²°μ„±μ΄λ‚˜ BFTλ₯Ό 보μž₯ν•  수 μ—†μœΌλ‹ˆ μ‹€μ œ μ‚¬μš© μ‹œμ—λŠ” μΆ”μ²œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

속도 μΈ‘λ©΄μ—μ„œλŠ”, ν•©μ˜μ— 이λ₯΄κ³  블둝을 μΆ”κ°€ν•˜λŠ” 속도 μžμ²΄λŠ” Cliqueκ°€ 더 λΉ λ¦…λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ²€μ¦μžκ°€ μ¦κ°€ν• μˆ˜λ‘ λΆ„κΈ°κ°€ 일어날 ν™•λ₯ μ΄ λ†’μ•„μ§‘λ‹ˆλ‹€. λ°˜λ©΄μ— IBFT, QBFTλŠ” κ²€μ¦μžκ°€ 증가해도 λΆ„κΈ°κ°€ μΌμ–΄λ‚˜μ§€λŠ” μ•Šμ§€λ§Œ, ν•©μ˜μ— 이λ₯΄κ³  블둝을 μΆ”κ°€ν•˜λŠ” μ†λ„λŠ” 점점 더 λŠλ €μ§‘λ‹ˆλ‹€.

 

ν—ˆκ°€(Permissioning), ν”„λΌμ΄λ²„μ‹œ(Privacy)

ν—ˆκ°€μ™€ ν”„λΌμ΄λ²„μ‹œλŠ” μ•½κ°„ λ‹€λ₯Έ κ°œλ…μž…λ‹ˆλ‹€. ν—ˆκ°€λŠ” 체인에 데이터λ₯Ό μΆ”κ°€ν•  수 없도둝 ν•˜λŠ” κΈ°λŠ₯이라면, ν”„λΌμ΄λ²„μ‹œλŠ” μ ‘κ·Όν•˜μ—¬ 데이터λ₯Ό λ³Ό 수 없도둝 ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. 

λ¨Όμ € ν—ˆκ°€λŠ” ν™”μ΄νŠΈλ¦¬μŠ€νŠΈ λ°©μ‹μœΌλ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. λΈ”λž™λ¦¬μŠ€νŠΈμ˜ λ°˜λŒ“λ§μ΄λΌκ³  μƒκ°ν•˜μ‹œλ©΄ λ°”λ‘œ 이해가 λ˜μ‹€ κ²λ‹ˆλ‹€. 미리 λͺ…단을 가지고 있고, ν•΄λ‹Ή λͺ…단에 μžˆλŠ” μ‚¬λžŒλ“€λ§Œ ν—ˆκ°€κ°€ λ©λ‹ˆλ‹€. ν—ˆκ°€μ—λŠ” λ…Έλ“œ ν—ˆκ°€μ™€ 계정 ν—ˆκ°€κ°€ 있으며, 이것을 각 λ…Έλ“œ λ ˆλ²¨μ—μ„œ 지정할 μˆ˜λ„ 있고, λ„€νŠΈμ›Œν¬ λ ˆλ²¨μ—μ„œ 지정할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ…Έλ“œ ν—ˆκ°€λ₯Ό μ΄μš©ν•˜μ—¬ κ°œλ³„ λ…Έλ“œμ— λŒ€ν•œ 연결을 μ œμ–΄ν•˜κ³ , 계정 ν—ˆκ°€λ₯Ό μ΄μš©ν•˜μ—¬ λ…Έλ“œκ°€ νŠΈλžœμž­μ…˜μ„ μˆ˜λ½ν•˜κ³  κ±°λΆ€ν•  계정을 μ œν•œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것을 λ…Έλ“œ λ ˆλ²¨μ—μ„œ μ •μ˜ν•˜λ©΄ μžμ‹ μ΄ ν†΅μ œν•˜λŠ” λ…Έλ“œλ§Œ ν•΄λ‹Ή 섀정을 λ”°λ₯Ό κ²ƒμž…λ‹ˆλ‹€. μ˜¨μ²΄μΈμ—μ„œλŠ” 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ λ…Έλ“œ, 계정, κ΄€λ¦¬μžμ˜ ν—ˆμš© λͺ©λ‘μ„ μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜λ©°, λͺ¨λ“  λ…Έλ“œκ°€ 단일 ν—ˆμš© λͺ©λ‘μ„ 읽을 수 μžˆμŠ΅λ‹ˆλ‹€. 

Besuμ—μ„œ ν”„λΌμ΄λ²„μ‹œλŠ” μ°Έμ—¬μžλ“€ μ‚¬μ΄μ˜ νŠΈλžœμž­μ…˜μ„ λΉ„κ³΅κ°œλ‘œ ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ°Έκ°€μžλ“€μ€ μ–΄λ–€ μ°Έκ°€μžλ“€μ΄ μ–΄λ–€ νŠΈλžœμž­μ…˜μ„ μ£Όκ³  λ°›μ•˜λŠ”μ§€ μ•‘μ„ΈμŠ€ν•  수 μ—†μŠ΅λ‹ˆλ‹€. BesuλŠ” 이것을 Tessera(舊 Orion)λΌλŠ” ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€. Besuμ—μ„œ ν”„λΌμ΄λ²„μ‹œ 섀정이 μžˆλŠ” λ„€νŠΈμ›Œν¬μ˜ 각 μ°Έμ—¬μžλ“€μ€ κΈ°λ³Έκ°’μœΌλ‘œ Tessera λ…Έλ“œμ™€ Besu λ…Έλ“œ 각각을 ν•˜λ‚˜μ”© λ„μ›Œλ†“κ²Œ λ©λ‹ˆλ‹€. Tesseraλ₯Ό 톡해 ν‚€λ₯Ό μ£Όκ³  λ°›μœΌλ©° 프라이빗 νŠΈλžœμž­μ…˜μ„ μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€.

<프라이빗 νŠΈλžœμž­μ…˜μ— λŒ€ν•œ μ„€λͺ…>