2022.07.05 - [일등박사의 생각/[파공블]파이썬으로 공부하는 블록체인] - 1. 파이썬으로 공부하는 블록체인 - 코인과 토큰
Smart Contract 라는 단어가 계속 나옵니다!!
사실 최근의 블록체인기술에서 Smart Contract는
모든것이라고 볼 수 있습니다
NFT, Defi, DAO 등등 모든 새로운 기술은 모두 이 Smart Contract에서 시작됩니다!
이번 포스팅에서는 이 Smart Contract에 대하여 알아보곘습니다!!
우선 다시 과거에 소개했던
블록체인의 구성요소를 다시 복습해보겠습니다!
2022.06.23 - [일등박사의 생각/[파공블]파이썬으로 공부하는 블록체인] - 1. 파이썬으로 공부하는 블록체인 - 블록체인의 구성요소
과거 포스팅에서 블록체인은
머리(Header)와 몸통(Body)으로 구성되며
머리에는 블록의 생성과 관련된 정보가,
몸통에는 거래내역 데이터가 저장된다고 소개했었지요~!
import hashlib
import datetime
## BODY : Transaction의 모음
block_body = { "transaction1": {
'판매자' : '파공블',
'구매자' : '김민수',
'개수' : '3개',
'timestamp' : 1652247422892844,
},
"transaction2": {
'판매자' : '파공블',
'구매자' : '이영호',
'개수' : '3개',
'timestamp' : 165224743233231
}
}
## BODY의 모든 내역을 해시함수를 활용하여 해시로 만듬!!
body_hash = hashlib.sha256(str(block_body).encode()).hexdigest()
## HEAD : 블록의 머리부분! 4개의 구성요소값으로 구성
block_header = { 'previous_hash' : "0",
"block_created_at" : datetime.datetime.now().timestamp(),
"body_hash" : body_hash,
"nonce" : "nonce??"
}
## Header와 Body를 묶어 첫번째 블록(genesis_block)을 생성!!
genesis_block = {'header' : block_header,
'body' : block_body
}
그런데!! Smart Contract는 이 거래내역에 추가됩니다!!
아래와 같이요!!
import hashlib
import datetime
## BODY : Transaction의 모음
block_body = { "transaction1": {
'판매자' : '파공블',
'구매자' : '김민수',
'개수' : '3개',
'timestamp' : 1652247422892844,
#####
"SMART_CONTRACT" : ""
#####
},
"transaction2": {
'판매자' : '파공블',
'구매자' : '이영호',
'개수' : '3개',
'timestamp' : 165224743233231,
#####
"SMART_CONTRACT" : ""
#####
}
}
## BODY의 모든 내역을 해시함수를 활용하여 해시로 만듬!!
body_hash = hashlib.sha256(str(block_body).encode()).hexdigest()
## HEAD : 블록의 머리부분! 4개의 구성요소값으로 구성
block_header = { 'previous_hash' : "0",
"block_created_at" : datetime.datetime.now().timestamp(),
"body_hash" : body_hash,
"nonce" : "nonce??"
}
## Header와 Body를 묶어 첫번째 블록(genesis_block)을 생성!!
genesis_block = {'header' : block_header,
'body' : block_body
}
이것이 바로 비트코인과 이더리움의 차이입니다!!
비트코인에는 Smart Contract가 없고
이더리움에는 Smart Contract가 있다!!
그렇다면 이 Smart Contract가 무슨 의미가 있을까요!?
바로 간단히 NFT를 만들어볼게요!!
import hashlib
genesis_block = {'INDEX':0,
"previous_hash" : hash_data,
'판매자' : '파공블',
'구매자' : '김민수',
'개수' : '3개',
'시간' : '2022년 5월 11일 16시 25분 16초',
'SMART CONTRACT' : { '파일명': 'first_transaction.jpg',
'파일소개': '첫 거래내역',
'파일데이터' : 'ASDFN8190u9w38fdd98982fdd (이미지정보)'} ,
'previous_block' : None
}
hash_data = hashlib.sha256(str(genesis_block).encode()).hexdigest()
print(hash_data)
어때요??
Smart Contract 부분에 저장하고 싶은 파일의 이름, 파일소개내역, 그리고 파일 데이터를 저장하였습니다!!
이렇게 된다면 이 파일의 내역이 블록에 저장되는것이며
즉!! 이후 블록의 내역이 수정될수 없기에 이 데이터는 영원히 이 블록에 남겨지는!
NFT 가 되는것입니다!!
어떄요? 이해가 잘 되시나요?
다음 코드를 보시죠!!
## DAO
block_4 = {'INDEX':4,
'판매자' : '김영수',
'구매자' : '파공블DAO',
'개수' : '3000개',
'시간' : '2022년 5월 18일 16시 25분 16초',
'SMART CONTRACT' : { '조직명': '파공블',
'조직운영룰': {'1': '회장은 홍길동으로 한다', '2':'본사는 서울시 종로구이다'},
'조직의결권' : 'DAO코인을 가진사람은 DAO코인 개수에 따라 의결권을 갖는다'
} ,
"previous_hash" : hash_data
}
hash_data = hashlib.sha256(str(block_3).encode()).hexdigest()
print(hash_data)
이번 SMART CONTRACT에 숨겨진 내용은 무엇을 의미하는것 일까요!?
맞습니다! 이러한 방식으로 DAO가 생성됩니다!!
마지막!!
## DEFI
block_4 = {'INDEX':4,
'판매자' : '김영수',
'구매자' : '파공블 Defi',
'개수' : '3000개',
'시간' : '2022년 5월 18일 16시 25분 16초',
'SMART CONTRACT' : 'code 내용을 여기에 심어서 작동되도록 설정 - int a int b a+b for i in range(a+n)' ,
"previous_hash" : hash_data }
hash_data = hashlib.sha256(str(block_3).encode()).hexdigest()
print(hash_data)
Smart Contract에 꼭 단순한 데이터만 들어가란 법은 없습니다
일부는 이 Smart Contract부분에 코드를 숨겨 놓았고 이후 이 위변조 불가능한
블록에 smart contract 부부을 호출하면 나만의 함수를 호출할 수 있게되어
이 데이터를 기반으로 Defi, Dex 등 다양한 DApp을 만들 수 있게 됩니다!!
(이더리움의 경우 이 Smart Contract에 함수를 Solidity라는 언어로 작성하게됩니다!)
감사합니다!^^
'블록체인 > [파공블]파이썬으로 공부하는 블록체인' 카테고리의 다른 글
[블록체인] LAYER2(토큰) 더 알아보기! (0) | 2022.08.24 |
---|---|
[블록체인] LAYER1(코인) 과 LAYER2(토큰) 쉽게 이해하기 (1) | 2022.08.21 |
1. 파이썬으로 공부하는 블록체인 - 코인과 토큰 (0) | 2022.07.05 |
1. 파이썬으로 공부하는 블록체인 - 블록체인과 DApp (0) | 2022.06.30 |
1. 파이썬으로 공부하는 블록체인 - 질문있어요!! (0) | 2022.06.24 |
댓글