프로그래밍

블록체인/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의 경우 임의..

블록체인/Klaytn

6장 - 공개키 암호화와 전자서명

암호 고전적인 암호 : 카이사르 암호 암호화하려는 내용을 알파벳별로 일정한 거리(distance, d)만큼 밀어서 다른 알파벳으로 치환하는 기법. 암호를 풀거나 만들 떄 알아야 하는 정보 : 키(Key) 대칭키 암호 / 비대칭키 암호 평문(Plain Text)이란 암호화 되어 있지 않은 문자열 의미 암호화 : 평문 → 암호 (cipher, encrypt) 복호화 : 암호 → 평문 (dechipher, decrypt) 대칭키 암호 : 암호화 사용 키 == 복호화 사용 키 비대칭키 암호 : 암호화 사용키 =! 복호화 사용 키 비대칭키(공개키) 암호 두 개의 키를 사용하여 암/복호화 실행 공개키(PK) = 암호화에 사용되는 키 비밀키(SK) = 복호화에 사용되는 키 비밀키 ⇒ 공개키 : 쉬움 공개키 ⇒ 비밀키..

블록체인/Klaytn

4장 - 합의 알고리즘

Nons = garbage값을 해쉬에 집어넣는것 PoW(Proof of Work, 작업증명) PoS(Proof of Stake, 지분증명) BFT-variants(Byzantine Generals Problem, 비잔틴 장애 허용) 제안자격 취득 방법 계산이 어려운 문제를 풀 것 새로운 Nons를 계속 주고 만약 앞에 00000이 몇개 있으면 인정. 플랫폼 토큰을 보유한 양과 기간에 따라 결정적으로 또는 확률적으로 뽑힐 것 정해진 순번 또는 정해진 확률에 의해 뽑힐 것 네트워크 참여 제한 없음 없거나 낮음 높음 합의에 필요한 연산량 높음 낮음 낮음 위협 전체 연산량의 51%를 한 참여자가 소유할 경우 중앙화됨 전체 토큰의 51%를 한 참여자가 소유할 경우 중앙화됨 전체 참여노드의 1/3 이상이 담합할 경..

블록체인/Klaytn

3장 - 블록체인 네트워크

블록체인 네트워크 블록체인 : P2P(peer-to-peer network) 네트워크 - 양방향 파일 전송 시스템 중앙서버가 없다. 블록체인은 한명 이상의 참여자가 있는 네트워크에서 관리 네트워크 참여자 전원은 모든 블록을 동일한 순서로 저장하여 모두 같은 블록체인을 유지 모든 노드는 같은 데이터를 가지고 있다 - 스냅샷이 100 합의 (Consensus) 제안 자격이 있는 참여자는 블록을 제안(propose)할 수 있음 블록 제안 자격은 네트워크마다 상이 (e.g., PoW) PoW : 블록을 제안할 수 있는 권리 취득 노드들은 제안자가 올바른 자격을 취득했는지, 제안된 블록이 올바른지 검증 뒤 블록을 자신의 제안에 추가 정족수 또는 정해진 기준을 만족하는 수의 노드가 블록을 자신의 체인에 추가하면 합..

블록체인/Klaytn

5장 - 블록체인의 비교

Public vs. Private Disclaimer : this is a subjective matter 퍼블릭과 프라이빗의 구분은 블록체인에 다음을 수행할 수 있는지 확인하여 결정 : 누구든지 기록된 정보(블록)를 자유롭게 읽을 수 있는지? 명시적인 등록 또는 자격취득 없이 정보를 블록체인 네트워크에 기록할 수 있는지? 블록체인의 정보가 공개되어 있고 네트워크가 정한 기준(e.g., gas fee)에 따라 정보를 기록요청할 수 있다면 그 블록체인은 퍼블릭/공개형이라 한다. 이와 반대로 정보가 공개되어 있지 않고 미리 자격을 득한 사용자만이 정보를 기록할 수 있다면 그 블록체인은 프라이빗/비공개형이라 한다. Permissionless vs. Permissioned Disclaimer : this is ..

블록체인/Klaytn

2장 - 블록, 블록헤더, 해시포인터

데이터가 위치한 메모리의 주소를 포인터하게 되어있다. 링크드리스트랑 비슷한 느낌. 블록이 존재하면 해쉬함수를 이용하여 그 블록의 해쉬을 찾는다. 블록체인은 동일한 데이터가 반복되기 어렵다. 블록체인은 뒤의 블록이 앞의 블록의 해쉬값을 기억한다. 헤더는 블록을 설명하는 정보와 이전 블록의 해시를 포함 헤더 + 바디는 블록 헤더 : 바디를 설명 바디 : 정보의 묶음, 데이터에 대한 설명 이전 블록의 해시(hash pointer)를 가지기 때문에 어떤 블록이 앞에 와야하는지 결정적으로 알 수 있다. 이를 바탕으로 블록의 순서를 결정할 수 있다. 헤더는 바디 설명 헤더 + 바디 = 블록 헤더에 이전블록 해시값을 기억한다. 블록 높이, 블록 생성 주기 블록 높이 : 블록의 순서를 그 블록이 위치한 높이(block..

MellowHoney
'프로그래밍' 태그의 글 목록 (3 Page)