GroundX

블록체인/자기주권 신원증명 구조 분석서

DID (1)

DID 💡 DID (Decentralized IDentifier) 사용하는 사람 스스로 생성하고 제어할 수 있는 분산형 식별자(혹은 탈중앙화된 식별자) 분산형 식별자 통신에서 객체들을 식별하기 위해 UUID(Universally Unique IDentifiers)라는 분산형 식별자가 많이 사용중 UUID 32개의 16진수와 4개의 하이픈(’-’)으로 구성 8-4-4-4-8 동일한 식별자가 생성되지 않는 구조충돌 : 동일한 식별자가 생성되는 것 충돌에 안전한 랜덤함수 사용 DID와 UUID DID UUID 객체에 대한 식별자로 사용될 뿐만 아니라 인증 수단인 DID document를 참조할 수 있는 URI 역할까지 동시에 수행 객체를 식별하는 식별자로만 사용할 수 있고, 해당 객체를 인증하기 위해서는 별도..

블록체인/Klaytn

13장 - Solidity 기본 구조

https://docs.soliditylang.org/en/v0.6.1/introduction-to-smart-contracts.html#subcurrency-example 컨트랙트 // Solidity로 간단한 포인트 시스템을 구현 // [Coin 컨트랙트] // 컨트랙트 생성자가 관리하는 포인트 시스템 컨트랙트로 포인트 시스템 고유의 // 주소공간(address space)을 가지며 각 주소의 포인트 잔고를 기록한다. // 컨트랙트 생성자는 사용자 주소(e.g., 0xALICE)에 포인트를 부여할 수 있고 // 사용자는 다른 사용자에게 포인트를 전송할 수 있다 (e.g., 0xALICE → 0xBOB, 10 Coins) contract Coin { // [omitted for brevity] } 상태..

블록체인/Klaytn

12장 - 스마트 컨트랙트

특정 주소에 배포되어있는 TX로 실행가능한 코드 스마트 컨트랙트 소스코드는 함수와상태를표현 컨트랙트는 어카운트로취급; 컨트랙트 소스코드는 블록체인에저장 함수는 상태를 변경하는 함수, 상태를 변경하지 않는 함수로 분류 스마트 컨트랙트는 어카운트이기 때문에 주소를 부여 사용자(enduser,EOAowner)가 스마트 컨트랙트 함수를 실행하거나 상태를 읽을때 주소가 필요 스마트컨트랙트는사용자가실행 상태를 변경하는 함수를 실행하려면 그에 맞는 TX를 생성하여 블록에 추가 (TX체결=함수의 실행) 상태를 변경하지 않는 함수, 상태를 읽는 행위는 TX가 필요없음(노드에서 실행) Solidity Ethereum/Klaytn에서 지원하는 스마트 컨트랙트 언어 Klaytn은 Solidity버전 0.4.24, 0.5.6을..

블록체인/Klaytn

10장 - 트랜잭션(Transaction)

(Recall) Ethereum 어카운트의 종류 External Account : 사용자(end user)가 사용하는 어카운트 (a.k.a. EOA) 트랜섹션을 실제로 만들고 기록하는 주 어카운트, 즉 사용자 Contract Account : 스마트 컨트랙트를 표현하는 어카운트 Ethereum은 EOA 와 스마트 컨트랙트의 상태를 기록 및 유지 스마트 컨트랙트는 특정주소에 존재하는 실행 가능한 프로그램 프로그램은 상태를 가지기 때문에 Ethereum/Klaytn은 스마트 컨트랙트를 어카운트로 표현 EOA는 블록에 기록되는 TX를 생성 블록에 기록되는 TX들은 명시적인 변경을 일으킴 (e.g., 토큰 전송, 스마트 컨트랙트 배포/실행) 프로그램 - 데이터, 함수 스마트컨트랙트 = 프로그램 어카운트 = 함수..

블록체인/Klaytn

11장 - 블록체인별 트랜잭션

Ethereum 트랜잭션 논스(nonce): 발신 EOA에 의해 발행되어 메세지 재사용을 방지하는 데 사용되는 일련번호 가스 가격(gas price): 발신자가 지급하는 가스의 가격(웨이, wei) 가스 한도(gas limit): 이 트랜잭션을 위해 구입할 가스의 최대량 수신자(recipient): 목적지 이더리움 주소 값(value): 목적지에 보낼 이더의 양 데이터: 가변 길이 바이너리 데이터 페이로드 v,r,s: EOA의 ECDSA 디지털 서명의 세 가지 구성요소 v : 식별자 (엄밀히 따지자면 서명은 아님) r, s : 서명 클래이튼 트랜잭션 type : 뭐하는 트랜잭션인지 구분해주는 역할 명시적이다. , GasPrice를 바꿀수 없다 - 상수 취급 : 전체노드들이 합의하면 가격이 바뀔수 있음 본..

블록체인/Klaytn

9장 - 블록체인의 상태

Blockchain State (어카운트 기반) 블록체인의 상태 블록체인은 트랜잭션으로 변화하는 상태 기계 (State Machine) 항상 초기값이 있고 나중값이 있다. 아무것도 없는 초기값에 → 제네시스 블록 생성 Coinbase = Mining i = none → f : Alice : 100 i = Alice : 100 → f : Alice : 170, Bob : 30 i = Alice : 170, Bob : 30 → f : Alice : 170, Bob : 30, Charlie : 20 앞의 블록의 최종값 → 뒤의 블록의 초기값 무한 반복 상태 기계 블록체인은 초기 상태에서 변경사항을 적용하여 최종 상태로 변화하는 상태 기계 이전 블록의 최종 상태(Final State)는 현재 블록의 초기 상태(..

블록체인/Klaytn

8장 - Klaytn 합의 알고리즘

Klaytn BFT Klaytn은 확장가능한 BFT를 사용 N개의 노드 가운데 S개의 부분노드 집합을 확률적으로 선택 (where N is large, and S is sufficiently small) 전체 집합을 거버넌스 카운실(Governance Council), 부분 집합을 커미티(Committee)로 정의 커미티 선택은 VRF(Verifiable Random Function)로 구해진 무작위 값에 기반 : 공개키 사용 매 블록마다 새 커미티를 뽑아 BFT를 실행 기존의 BFT에 비해 확장성을 크게 개선Klaytn의 합의 : 거대한 전체집합에서 → 무작위로 부분집합을 뽑는다 → BFT를 실행해서 빠르게 블록 생성 → 합의된 결과를 나머지 네트워크에 전파 본 포스트는 GroundX 강의 학습내용을 ..

블록체인/Klaytn

7장 - 블록체인 암호화 기법

블록체인과 공개키 암호 블록체인은 암호학적 기법을 토대로 만들어진 기술 Bitcoin은 네트워크 참여자 모두가 같은 ‘원장’을 공유함으로써 투명한 거래가 가능 원장은 어느 주소에 BTC가 있는지 기록하지만 그 주소가 누구에게 속하는지는 기록하지 않음 (anonymity) Bitcoin은 공개키암호를 사용하여 명시적인 비밀교환과정 없이 BTC의 소유권 증명을 실행 공개키암호화를 사용한 소유권 증명 대부분의 블록체인 주소는 공개키로부터 도출된 값 Bitcoin : Hash 160 of a public key where Hash 160 = RIPEMD 160 + SHA256 Etthereum : Rightmost 160 bits of Keccak hash of a public key Bitcoin의 경우 임의..

MellowHoney
'GroundX' 태그의 글 목록