Upload
jinho-yoo
View
385
Download
0
Embed Size (px)
Citation preview
BLOCKCHAIN 101JINHO YOO
해결하고자 하는문제
• 내가주고받은파일 / 데이타가중간에단한번도 위조없이온것인가 ?
• 내가받은파일 / 데이타의 기록들이다른사람들과
모두같은것인가 ?
BLOCKCHAIN 의정의
“A block chain, or blockchain, is a distrib-uted database that maintains a continu-ously-growing list of data records hard-ened against tampering and revision.”
BLOCKCHAIN 의정의
• distributed database • 분산된 Database
• that maintains a continuously-growing list of data records hardened against tampering and revision• 위변조되지않게계속늘어나는데이타들의
목록을담고있다 .
주의할점
• Blockchain != Bitcoin• Blockchain 은검증을위해기록을변경불가하게만들어놓은것 . • Bitcoin 은 Blockchain ‘을 전자화폐 ' 에활용한경우다 . • 응용되는곳마다 조금씩다른형태 를가지고있다 .
• 핵심은• 분산되어서• 위변조가되지않는것
분산형 DATABASE 의중요한의미는 ?
• 내가가진정보의흐름을모두알고있다 . • 이정보는누구나다알고있다 . • 이를조작하는것이사실상불가능하다 . • 모든사람들이검증에참여함으로검증 / 보증을위한
중계자가필요없다 .
EX) BITCOIN 에서사용된 BLOCKCHAIN
TRANSACTION / BLOCK / BLOCKCHAIN
Transaction• A 에서 B ‘로
’ 무언가보낸다는정보 .
• 만들어지는순간 네트워크에
뿌려진다 .
Block • 일정시간동안
네트워크상에있는Transaction 들의집합 .
• 검증이되었을수도 있고안되었을수도
있다 .
Blockchain• 검증된 Block 들의
집합• 검증된것들은다시
네트워크에뿌려짐
Block
TransactionTransaction
Transaction
Block
BLOCKCHAIN - BITCOIN 에구현된예• 각 Block 은아래정보로구성되어있다 . • 앞선 Block 의 hash
• Genesis block 에서부터현재 Block 까지영향을미친다 .
• 각 Block 들이만들어지는순서에따라새롭게 hash 가만들어지므로중간에위변조가일어나면달라질 수밖에없다 .
• Timestamp: 거래시점• Nonce: Hash 함수를이용하여결과값을만들때특정한
수를더첨가해서결과를만드는값 . ( 검증되야나옴 )• Mining 이란이값을찾는것이다 .
• Merkle tree 라는트리구조의 root 값 .
• Block 의크기 : 약 200 Bytes Genesis block: 처음만들어진
Block
BLOCKCHAIN 은과거정보를어떻게다가지고다닐까 ?
• ‘ ’ 모든데이타를 정말 가지고있다 . • Merkle tree 등의방법으로필요한데이타만담음 . • 실제 Transaction data 도크기가얼마안됨 . 참고
BlockBlock
tt-1
BLOCKCHAIN 은과거정보를어떻게다가지고다닐까 ?
• 앞선 Block 의 Hash 값을현재 Block 이가지고있다 . • Merkle tree 의 root hash 를담고있다 . • 전체거래정보가의외로작다 .
BlockBlock
Block[t-1] 의Hash
tt-1
Merckle tree root Hash
MERKLE TREE
• 모든 Block 에대한 Hash ‘를 요약 ' 해주는Binary tree 구조
• 모든 Block 은 Merkle tree 의 root 에 해당하는 Hash 를가지고다닌다 .
• 이 Hash 는 leaf 에있는 node 들의 hash 를 hash 한값이다 .
• Block chain 이길수록 root 에서아래로내려온다 .
• 이 Hash 값이이상한지는바로위의 node 가가진 Hash 를현재같은 level 에있는
다른 node 와의 hash 계산과같은지 아닌지를비교함으로확인한다 .
BLOCKCHAIN 은검증은어떻게하나 ?
• Proof-of-work• ‘블록을증명하는이른바 채굴자 ' 가일을함으로증명
• Ex) Bitcoin 의 Mining. • Proof-of-stake:
• 소유자가자신이가진자산 (Stake) 를스스로증명해야한다 .
• 공격에방어하기위해블록체인전체컨트롤하는 Master public key 를두고있다 .
• Consensus-by-bet:
• 네트워크에참여하는사람들의동의를통해서승인
• 참여하는노드들은보증금을걸고승인에참여 .
• 이를위한인센티브 / 처벌시스템을가동
BLOCKCHAIN 은검증은어떻게하나 ? -2
• Trust• 네트워크에참여하는노드들의투표와동의를통해서승인• ‘ ’ 기본적으로 믿을수있는 node 들만있다고가정• Byzantine agreement protocol 을기반으로이용
• Membership • 소유자가자신이가진자산 (Stake) 를스스로증명해야한다 .
• 공격에방어하기위해블록체인전체컨트롤하는 Master public key 를두고있다 .
MINING(채굴 ) - BITCOIN 이나 ETHEREUM 의경우
PoW 에서검증작업을해주고그댓가로보상을 받는것
… 보상자체가핵심이아니다 -.-;;
BLOCKCHAIN 은정보를어떻게담아다니나 ?
• 각 Block ‘안의 거래 ' 정보는코드로작성되어
있다 . • 이코드들을실행함으로
거래를유효화한다 .
Block
Script
BLOCKCHAIN 은정보를어떻게담아다니나 ? - BITCOIN
• 각 Block ‘안의 거래 ' 정보는코드로작성되어
있다 . • 이코드들을실행함으로
거래를유효화한다 .
• 아주아주간단한 Stack 기반언어로구성
• ‘대부분의경우 A 가 B 에게지불하는형식
• Loop 가없다 . • OpCode 처럼표현되어있다• 잠금스크립트 , 해제스크립트로구성 .
• 잠금스크립트 :• 예상지출 , 향후출력값을소비하기
위해충족되어야하는조건명시• 해제 스크립트
• 잠금스크립트가출력값에놓아둔 조건을해결하거나충족시켜서
출력값이소비될수있게하는 스크립트
• 자세한것은여기
BLOCKCHAIN 은정보를어떻게담아다니나 ? -ETHEREUM
• 각 Block ‘안의 거래 ' 정보는코드로작성되어
있다 . • 이코드들을실행함으로
거래를유효화한다 .
• Solidity 라는언어로구성 .• Loop 도있고일반적인 Computer lan-
guage스럽다 . • Compile 되서 OpCode 로돌아다닌다 .
• 돈거래외에도여러가지를코딩하기가쉽다 .
• Gas 라는개념이있어서무한정반복할수없다 .
• Code 가돌아가려고하면 gas 를 소비해야한다 .
• Gas price 를 transaction 을만든사람이지정
• 이사람이 gas_price * gas 값을지불 .
• 실행하다가 Gas 가떨어지면동작하는 것을중지 .
• 자세한설명은여기 참조 .
‘화폐개념없이 원장 ' 개념만있는 BLOCKCHAIN - HYPER-LEDGER
• PoW 방식이아니라 Consneus 방식으로 거래의신뢰보증
• Chaincode 라는방식으로 Contract 구현
• 자세한사항은여기 참조• https://www.hyperledger.org/
BLOCKCHAIN 으로뭔가만들어보려한다면고려할것
• 뭘담아서 Block 을구성할것인가 ? • 화폐개념넣을것인가말것인가 ?• 검증과정을어떻게구성할것인가 ? PoW? PoS?
REFERENCE
• Deloitte, Blockchain Enigma. Paradox. Opportunity• Korbit, 블록체인의기술적이해및도입을위한첫걸음• Ethereum white paper• Solidity official document • Blockchain size
• Hyperledger white paper • https://www.hyperledger.org/