강의제목 : Klaytn 클레이튼 스마트계약과 탈중앙앱
제공 : 한양대학교&그라운드X
정보 : 38강 / 368분
공부일자 : 2021.11.13-14
🌏1 블록체인기본
💫1-1 블록체인의 정의와 구성, 해시함수
블록체인이란?
-정보를 블록이라고 하는 단위로 저장하여, 저장된 블록들을 체인 형태로 묶은 것
해시함수(Hash Function)
-임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
-같은 함수라도 다른 데이터를 해시할 경우 결과값이 크게 다르다
-RULE : 하나의 데이터에서 오직 단 하나의 해시가 도출
💫1-2 블록체인의 구조, 주요 용어
블록, 블록헤더, 해시포인트
+블록생성 주기
이더리움 약 15초, 클레이튼 약 1초(서비스 지향)
💫1-3 블록체인 네트워크
블록체인 네트워크, 노드
-블록체인은 기본적으로 p2p(peer-to-peer network)
-블록체인은 한 명이상의 참여자(노드)가 있는 네트워크에서 관리
-네트워크 참여자 전원은 모든 블록을 동일한 순서로 저장하여 모두 같은 블록체인을 유지
합의(consensus)
-자격이 있는 참여자가 블록을 제안
-블록 제안 자격은 네트워크마다 상이
-노드들은 제안자가 올바른 자격을 취득했는지, 제안된 블록이 올바른지 검증 뒤 블록을 체인에 추가
💫1-4 합의 알고리즘
PoW
제안자격 취득 방법 : 계산이 어려운 문제 풀기
네트워크 참여 제한 : 없음 / 누구나 참여 가능 네트워크를 비동기화상태에 두어도 여전히 합의를 이끌어냄
합의에 필요한 연산량 : 높음
위협 : 전체 연산량의 51%를 한 참여자가 소유할 경우 중앙화됨
대표적인 체인 : 비트코인, 라이트코인, 이더리움, 모네로, 퀀텀
단점 : 연산에 쓰는 비용이 비쌈
PoS
제안자격 취득 방법 : 플랙폼 토큰을 보유한 양과 기간에 따라 결정적으로 또는 확률적으로 뽑힐 것
베트워크 참여 제한 : 없거나 낮음
합의에 필요한 연산량 : 낮음
위협 : 전체 토큰의 51%를 한 참여자가 소유할 경우 중앙화됨
대표적인 체인 : 이더리움 ffg & cfg, 이오스
BFT-variants
제안자격 취득 방법 :정해진 순번 또는 정해진 확률에 의해 뽑힐 것
네트워크 참여 제한 : 높음 / 네트워크가 동기화되어있어, 새로운 참여자가 생기면 확인 시간이 필요함
합의에 필요한 연산량 : 낮음
위협 : 전체 참여노드의 3분의 1 이상이 담합할 경우 합의 불가, 전체 참여노드의 3분의 2 이상이 담합할 경우 중앙화됨
대표적인 체인 : 클레이튼, 텐더민트, 온톨로지
단점 : 합의에 참여하는 사람이 많아질수록 느려진다 (참여인원이 20명만 되어도 속도가 느려짐)
💫1-5 블록체인의 비교
퍼블릭과 프라이빗의 구분
-누구든지 기록된 정보(블록)를 자유롭게 읽는가
-명시적인 등록 또는 자격취득 없이 정보를 블록체인 네트워크에 기록할 수 있는가
permissionless VS permissioned
-네트워크 참여가 제한된 경우 permissioned / 반대 경우 permissionless
-네트워크 참여의 정의 : (넓은의미) 블록체인 p2p네트워크 참여 / (좁은의미) 합의 과정 참여
poblic/private의 개념이 정보의 접근성과 관련이 있다면
permisionless/permissioned는 정보의 제어,
즉 무엇이 블록에 포함되는지를 결정하는 지에 더 밀접한 경험
💫1-6 공개키 암호화와 전자서명
대칭키암호/비대칭키암호
-암호화는 평문을 암호로 만드는 것
-복호화는 암호를 평문으로 만드는 것
-암호화에 사용한 키와 복호화에 사용한 키가 동일한 경우 대칭키암호로 분류
-암호화에 사용한 키와 복호화에 사용한 키가 다를 경우 비대칭암호로 분류
전자서명
비대칭 암호키는 지정된 사람만 정보를 확인하게 함 (privacy)
-alice 가 bob에게 메세지를 보낼 때 사용
-bob은 이 메세지가 alice에게서 온 것인지 어떻게 확인할까?
전자서명은 누가 정보를 보냈는지 알기 위해 사용(non-repudition)
- 전자서명은 비대칭암호의 응용프로그램
- 서명은 비밀키로만 생성가능
- 공개키는 서명이 짝을 이루는 비밀키로 생성되었는지를 검증
💫1-7 블록체인에서 사용되는 암호화 기법
-블록체인은 암호학적 기법을 토대로 만들어진 기술
-비트코인은 네트워크 참여자 모두가 같은 '원장'을 공유함으로 투명한 거래 가능
-원장은 어느 주소에 BTC 가 있는지 기록하지만 그 주소가 누구에게 속하는지는 기록하지 않음
-비트코인은 공개키암호를 사용하여 명시적인 비밀교환과정 없이 BTC 의 소유권 증명
구현방법으로 나눠본 블록체인
UTXO(Unspent transaction output) 기반 블록체인
-블록체인에 사용 가능한 토큰 - UTXO들과 사용 자격검증방법을 기록
-일반적인 자격검증방법은 UTXO의 정보와 일치하는 공개키로 검증가능한 전자서명을 제출하는 것
-비트코인이 대표적인 UTXO 기반 블록체인
어카운트 기반 블록체인
-어카운트는 블록체인을 구성하는 주체를 표현하며 상태 기록
-사용자는 어카운트를 사용할 때마다 어카운트 공개키로 검증가능한 전자서명 생성
-상태를 기록할 수 있기 때문에 스마트 컨트랙트를 구현하기에 용이
-이더리움, 클레이튼이 대표적인 어카운트 기반
confirmation VS finality
-confirmation 숫자는 트랜잭션이 블록에 포함된 이후 생성된 블록의 숫자
-PoW를 사용하는 블록체인은 finality가 없기 때문에 confirmation 숫자가 중요
-finality란 블록의 완결성 의미 *완결성 : 합의를 통해 생성된 블록이 번복되지 않을 경우
-PoW기반 합의는 확률에 기반하기 때문에 경우에 따라 블록이 사라질 수 있으므로 완결성 부재*블록은 어느 경우에 번복될 수도 있음!
(탈중앙화된 경우에는 노드가 위치한 경우가 전세계일테고 양 극의 네트워크 딜레이가 상당할 것. 양 극의 사용자가 네트워크를 동시에 풀었을 때, 각 주변에서 인정을 받기 시작할테고 그러다 중간지점에서 만나는 경우경쟁이 시작. 해시파워가 더 쏠리는 곳이 이김)
-네트워크 시차로 인해 생성된 우연한 복수의 블록들 가운데 하나가 선택되는데 필요한 블록은 2-3개 정도
-퍼즐을 빠르게 풀 수 있는 악의적인 공격자가 있는 경우 그 참여자의 해시능력에 따라 필요한 confirmation숫자가 달라짐
BFT기반 블록체인은 블록의 완결성이 보장됨
-네트워크가 동기화 되어 있고, 블록 생성이 PoW에 비해 빠르고 경제적
-하지만 네트워크 동기화의 필요로 인해 참여자의 숫자가 제함
-네트워크 참여자 구성이 고정되어 있어야 합의 가능
-구성이 변경될 경우 모든 네트워크 참여자가 새로운 구성을 인지하기까지 합의 불가능
-합의 알고리즘이 네트워크 동기화를 가정하고 새로운 짜여졌기 때문에 네트워크 사용량 높음
-참여자가 많아질 경우 네트워크 오버헤드로 인해 합의가 느림
🌏2블록체인 상태와 트랜잭션
💫2-1 Klaytn 합의 알고리즘
klaytn BFT
-N개의 노드 가운데 S개의 부분노드 집합을 확률적으로 선택
-전체집합을 거버넌스 카운실, 부분집합을 커미티로 정의
-커미티 선택은 VRF로 구해진 무작위값에 기반
-기존의 BFT에 비해 확장성을 크게 개선
💫2-2 블록체인의 상태
(어카운트기반)블록체인의 상태
-블록체인은 트랜잭션으로 변화하는 상태 기계
💫2-3 트랜잭션
ethereum 어카운트 종류
1.external account : 사용자가 사용하는 어카운트 (EOA)
2. contract account : 스마트 컨트랙트를 표현하는 어카운트
이더리움은 EOA 와 스마트 컨트랙트의 상태를 기록 및 유지
-스마트 컨트랙트는 특정주소에 존재하는 실행 가능한 프로그램
-프로그램은 상태를 가지기 때문에 이더리움/클레이튼은 스카트 컨트랙트를 어카운트로 표현
-EOA는 블록에 기록되는 TX를 생성
-블록에 기록되는 트랜잭션들은 명시적인 변경을 일으킴(토큰전송, 스마트컨트랙트 배포/실행)
트랜잭션과 가스
-트랜잭션의 목적은 블록체인의 상태를 변경하는 것
-보내는 사람( sender, from)과 받는사람 (recipient, to)이 지정되어 있으며
-to가 누구냐에 따라 tx 의 목적이 세분화
-가스 : 트랜잭션을 처리하는데 발생하는 비용
-트랜잭션을 처리하는데 필요한 자원을 비용으로 전환한 것이 가스
-보내는 사람은 트랜잭션의 처리를 위해 필요한 가스의 총량과 같은 가치의 플랫폼 토큰을 제공해야함
-이때 지출되는 플랫폼 토큰을 가스비라 정의
-가스비는 블록을 생성한 노드가 수집
💫2-4 트랜잭션과 서명
플랫폼은 sender 가 TX가 처리되는데 필요한 가스비를 가지고 있는지 확인
-가스비 확인은 구현에 따라 상이
-이더리움/클레이튼은 노드가 트랜잭션을 수신함과 동시에 가스비 이상의 밸런스가 있는지 확인
-트랜잭션 채결과 동시에 sender의 balance 에서 가스비를 차감
TX는 sender 의 서명 (v,r,s)이 필요
-어카운트의 밸런스를 사용하기 때문
-서명의 증명은 구현마다 상이
-이더리움 : 서명 > 공개키도출 > 어카운트 주소 도출 > 어카운트 존재유무 확인
-클레이튼 : from주소 확인 > 저장된 공개키 불러오기 > 서명 직접 검증
💫2-5 블록체인별 트랜잭션
💫2-6 트랜잭션 이동경로
alice와 node사이 통신
alice>node
-앨리스는 트랜잭션 생성, 서명하여 노드에게 전달
-이때 데이터 구조를 온전하게 전달하고자 RLP 알고리즘으로 트랜잭션을 직렬화
-앨리스와 노드가 같은 프로토콜로 통신하는 것이 중요
node>alice
-올바른 트랜잭션 수신 시 트랜잭션 해시를 반환
-트랜잭션 체결 시 receipt를 반환 : 소요된 가스, 트랜잭션 해시, input등이 기록
🌏솔리디티(Solidity)와 Klaytn SDK: caver-js
💫3-1 스마트 컨트랙트, 솔리디티(Solidity)
스마트 컨트랙트
특정 주소에 배포되어 있는 트랜잭션으로 실행 가능한 코드
-스마트 컨트랙트 소스코드는 함수와 상태를 표현 : 컨트랙트 소스코드는 블록체인에 저장
-함수는 상태를 변경하는 함수, 상태를 변경하지 않는 함수로 분류
-사용자가 스마트 컨트랙트 함수를 실행하거나 상태를 읽을 때 주소 필요
스마트 컨트랙트는 사용자가 실행
-상태를 변경하는 함수를 실행하려면 그에 맞는 트랜잭션을 생성하여 블록에 추가 (TX체결 = 함수실행)
-상태를 변경하지 않는 함수, 상태를 읽는 행위는 TX가 필요 없음 (노드 실행)
솔리디티
-이더리움/클레이튼에서 지원하는 스마트 컨트랙트 언어
-클레이튼은 솔리디티 버전 0.4.24, 0.5.6 지원
-일반적인 프로그래밍 언어와 그 문법과 사용이 유사하지만 제약도 존재
contract = code+data
-solidity 컨트랙트는 코드(함수)와 데이터(상태)로 구성
-solidity 함수는 코드 안에 변수로 선언된 상태를 변경하거나 불러옴
...... 또라이 마냥 페이지 정리하다가 아무 생각없이 꺼버림.......
자동저장 되어있는 부분 말고 나머지 다 날라감....
딥빡.... 도랏나..........개빡친다....... 다시 안 쓸래.....
뒤에 다 듣고 머리에 입력했음.... 그랴도 날라간거 개아깝다... 빡친다..빡친다..............
🌏5블록체인 응용사례
💫5-1 블록체인 응용사례 개요
💫5-2 공급망 관리
공급망관리
-부품제공업자, 생산자, 배포자, 고객에 이르는 공급의 흐름을 하나의 가치사슬 관점에서 파악하고 필요한 정보가 원활히 흐르도록 지원하는 시스템
SCM은 글로벌화된 시장에 필수
-글로벌마케팅, 소싱, 제조, 지역별 특성화 및 전 세계 제품 전략 수집이 필요
-고품질, 저가격, 적기 납기의 중요성 증대
-제품가치의 60-70%가 제조 이외의 부분에서 발생하므로 전체 라인의 관리가 필요
월마트, 명품시장 등
💫5-3 해외 송금/정산
cross-border settlement
은행을 거친 국가간 지급결제
-환거래은행을 거침
-복잡함 +고비용 + 즉시성이 떨어짐
송금전문업체 등장
-웨스턴유니언, 머니그램
-비교적 빠른 송금 가능
결제 전문 서비스 등장
-환거래은행 배제
-송금 불가능
💫5-4 지역화폐
실물화폐에서 전자화폐로 변화하는 사회
-효율성 증가를 위해 실물화폐에서 전자화폐로 전환하는 추세
-신용카드의 사용증가, 앱결제 사용률 증가
-중앙은행, 기업 등이 발행 및 원장관리를 수행 > 불투명한 운영
-위변조 위험 존재
블록체인 기반 전자화폐
-발행은 여전히 중앙화된 기관 또는 사업자 수행
-분산원장에 기록함으로써 투명성 및 추적성 확보
-빠른 정산 가능
김포페이 (세금, 투명성)
💫5-4 NFT(non-fungible token)
Unique elecronic assets
블록체인의 불변성을 사용하여 복제불가능한 디지털 데이터를 생성
-기존의 데이터는 복제 가능 > 복제된 데이터는 원본과 동일한 효용을 가짐
-블록체인의 불변성과 스마트 컨트랙트를 사용하면 한 번 생성된 데이터와 동일한 데이터를 생성할 수 없도록 제한 가능
NFT
-NFT를 사용하여 중앙화된 관리 없이 각각이 유일한 한정수량 상품을 개발 가능
-상품권, 증명서, 바우처, collectibles, 수량이 제한되어 있는 게임 아이템 제작 등
🌏6 essence of solidity in depth
💫6-1 essence of solidity in depth 개요
💫6-2 컨트랙트 구조
'블록체인' 카테고리의 다른 글
[블록체인] 블록체인은 얼마나 안전할까? (1) | 2021.11.30 |
---|---|
Blockchain Basics : Transaction Integrity 참고자료 (0) | 2021.11.30 |
Blockchain Basics : Hashing 참고자료 (0) | 2021.11.18 |
[블록체인] 비대칭 암호화(공용 키 암호화) (0) | 2021.11.16 |
[블록체인] 공개 키 암호화란? (0) | 2021.11.16 |