한빛미디어(2)
-
[밑바닥비트코인] 8. 트랜잭션 검증과 생성
저번 장까지 트랜잭션을 직렬화하고 파싱하는 방법과 트랜잭션을 검증할 수 있는 방법인 스크립트에 대해서 살펴봤으니 이번 장에서는 스크립트를 이용하여 트랜잭션을 검증하고 생성하는 방법에 대해서 알아보자. 트랜잭션 검증 비트코인을 소비하고자 하는 사람 A는 트랜잭션을 생성하고, 이 트랜잭션을 다른 노드에 전파하면 다른 노드들은 이 트랜잭션이 타당한지 검증하는 절차를 수행한다. 다른 노드들에 의해 받아들여지려면 다음 조건을 만족해야한다. 1. 트랜잭션 입력이 가리키는 비트코인이 존재하고 사용가능한가? 2. 입력 비트코인의 합은 출력 비트코인의 합보다 크거나 같은가? 3. 입력의 해제 스크립트는 이전 트랜잭션 출력의 잠금 스크립트를 올바르게 해제하는가? 1번 항목은 이중지불 방지를 위함이고 2번 항목은 새로운 비..
2021.08.09 -
[밑바닥비트코인] 7. 스크립트
'스크립트(Script)'는 비트코인 네트워크 내에서 비트코인이 어떠한 조건에서 소비되는지를 기술한 프로그래밍 언어이다. 비트코인 스크립트의 특징은 다음과 같다. 1. 반복 작업을 위한 루프 기능이 존재하지 않는다. (튜링 완전하지 않다) 2. 원소와 연산자 두가지의 요소로 이루어져있다. 반복문이 존재하지 않는 이유는 무한 반복문을 만들어서 네트워크에 부정적 영향을 미칠 수 있기 때문이다. 원소는 고정된 상수라고 생각할 수 있고, 연산자는 원소에 대해서 특정 연산을 수행한다. class Script: def __init__(self, cmds=None): if cmds is None: self.cmds = [] else: self.cmds = cmds 스크립트는 원소와 연산자를 담고 있는 cmds라는 리..
2021.08.01