본문 바로가기
반응형

블록체인14

스마트 컨트랙트 • 특정 계약을 스스로 성립, 검증, 이행 하기 위한 컴퓨터 프로토콜 - 1994년 Nick Szabo 가 최초로 제안한 개념 - 계약의 보안을 높이고 비용을 감소하기 위한 방안 - 조건에 따른 계약 결과가 명확하고, 계약 내용을 즉각 이행 가능. 계약의 과정 또한 간소화 - 하지만, 디지털로 된 자료의 취약점 -> 복사가 쉽고 조작이 쉬움 - 돈에 관련된 계약이 많아 해커의 공격대상이 되기 쉬움 • 스마트 컨트랙트 - 블록체인 안에 저장되는 프로그램 - Solidity로 만들어진 프로그램 - World Computer (miner)에 의해서 실행되는 프로그램 • DAPP - 스마트 컨트랙트와 연동되어서 작동하는 어플리케이션 - Back-end 가 P2P 분산 네트워크 안에 존재하는 어플리케이션 - Fr.. 2021. 6. 20.
이더리움 Merkle-Patricia Trie Merkle Tree - Merkle Proof 는 머클트리에 존재하는 데이터가 올바른 데이터인지 입증하는 절차 - Merkle proof에는 다음 값들이 필요함 > 증명하려는 데이터와 그것의 해시값 > 머클트리의 루트 해시값 > branch(데이터에 해당하는 리프노드에서 루트노드까지의 경로 노드들을 계산하는데 필요한 해시값들) > 데이터의 해시값과 branch 해시값들을 이용해 경로에 해당하는 노드들의 해시값을 구할 수 있고, 이를 반복해 루트 노드의 해시값을 구할 수 있음 > 구한 루트노드의 해시값과 기존에 알고 있던 루트노드의 해시값이 같다면 검증한 데이터가 올바른 데이터임을 입증 할 수 있다. - 머클 트리의 한계 > 상태 정보는 [키와 값] 의 Map 구조 키 : 어카운트 주소 값 : 이더 잔액.. 2021. 6. 20.
이더리움 블록헤더 엉클블록 - 블록 생성에 성공하였고 검증에 오류가 없어서 이더리움 네트워크를 통해 다른 노드에 브로드 캐스팅은 되었으나, 메인 체인으로 채택되지 못한 블록들이 엉클 블록(uncle block, stale block)이 됨 - Bitcoin은 보상 지급 X, 이더리움은 조금의 보상이 있음. 엉클블록이 많아지는 경우 - 블럭을 생성하는 속도가 빨라지면 엉클블럭은 많아진다. - 속도가 빠르다면 블록에 컨펌받고, 검증 후 메인체인이 되기전에 새로운 블록이 생성되기 때문이다. 엉클블록이 많아지면 생기는 문제점 트랜잭션 처리를 지연 될 수 있다. • 동시에 두 마이너가 블록을 생성한다면 마이너 들에게는 서로 다른 트랜잭션이 포함하지만 엉클블록에 포함된 트랜잭션은 처리 되지 않기 때문에 처리속도가 늦어짐 • Conf.. 2021. 6. 19.
이더리움 Transaction 2 트랜잭션의 시작부터 state 변경 까지의 과정 트랜잭션의 전송부터 시작하는 LifeCycle 새로운 트랜잭션의 처리과정 (일반 풀 노드, 마이닝 노드) 검증과정 1. Access & Create : 크롬의 Metamask나 이더리움 클라이언트를 통해서 Tx A를 생성한다. 2. TxA (v,r,s) : 사용자의 Private key를 암호화 해서 전송한다 3. RPC로 블록체인 네트워크에 자신의 TX를 전송함 4. 마이너가 이더리움 프로토콜을 통해서 Validate(검증) 과정을 마친다. (A->B에게 보내는것이 맞나, 돈이 있긴한가) 5. 마이너가 자신의 로컬DB(TX Pool)에 TX를 담는다. 6. 수수료가 높은 순서대로 정렬한다. 블록의 크기가 정해져 있기 때문에 모든 TX를 처리하진 못한다. .. 2021. 6. 11.
이더리움 Transaction 비트코인과 이더리움의 트랜잭션 구조 비교 이더리움의 트랜잭션 Signed MSG - 은행 계좌에서 돈을 전송하는 것과 비슷한 과정. - 지갑에서 상대의 주소를 입력하고 Eth의 수량을 정해 보내는 과정 - Private Key로 서명하는 것. - 스마트 컨트랙트에 있는 함수를 사용하는것 - 스마트 컨트랙트를 만드는것 Unsigned MSG - 서명하지 않고 바로 TXN을 보내는 것이 Internal Txn (문제가 많이 발생해 최근엔 Signed로 바뀜.) Transaction 구성요소 - AccountNonce : 발신자에 의해 보내진 트랜잭션의 개수로 0부터 시작 - gasPrice : 각 실행단계에서 지급되는 Gas 비용 - gasLimit : 트랜잭션 수행시 지급가능한 최대가스범위 - to : 메.. 2021. 6. 11.
이더리움의 Account Account의 종류 외부소유계좌 (EOA : Externally Owned Account) - 개인키(Private key)를 가지고 통제할 수 있는 계좌 - 다른 계좌로의 Ether 송금, 메시지 전송 가능 계약 계좌 (Contract Account) = EOA + @ (컨트랙트 코드, 저장공간) - 계약 계좌가 특정 메시지를 받게되면 계좌내 코드가 실행 - 내부 저장공간에 정보를 읽고 쓸수 있다. Account 구성요소 - 넌스 : Address 에서 전송된 트랜잭션 수. Mining 할때의 넌스값이랑은 다른 값이다. - 이더량(Ether Balance) : 계좌가 보유하고 있는 이더양 - 계약 코드(Contract code, CA only) : 실제로 실행될 계약 내용이 적힌 솔리디티 코드 - 저.. 2021. 6. 11.
반응형