비트코인에서는 트랜잭션 수행시 신규블럭의 인풋이 마지막 블럭의 아웃풋을 소비한다. 아직 소비되지 않아 신규블럭에서 소비될 수 있는 트랜잭션의 아웃풋을 UTXO(Unspent Transaction Output)이라 한다.
소비되는 UTXO는 트랜잭션의 InputScript의 입력으로 들어가고, 트랜잭션이 완료되면 OuputScript를 통해 output을 뱉는다.
만약 10BTC 를 가지고 있는 A가 B에게 1 BTC를 송금한다면 다음과 같은 트랜잭션이 이루어진다.
트랜잭션 자체만으로는 해당 트랜잭션이 UTXO인지 판별 불가능하다. 따라서 전체 체인의 데이터를 보아야 UTXO 판별이 가능하다.
인풋스크립트와 아웃풋 스크립트는 직렬화된 형태로 비트코인 가상머신위에서 동작한다. 인풋 스크립트에 포함된 <sig>
, <PubK>
값과 아웃풋 스크립트에 포함된 DUP
,HASH160
, <PubKHash>
, EQUALVERIFY
, CHECKSIG
함수와 값이 단순한 스택머신 형태의 비트코인 가상머신 위에서 다음의 절차에 따라 동작한다.
비트코인 표준 스크립트 중 P2PKH(Pay to Public Key Hash)의 스크립트의 동작과정은 다음과 같다.
커스텀 스크립트도 일정 요건을 지켰을 경우 체인에서 수행가능하다.
해킹의 위험, 스크립트의 오류를 방지하기 위해 마이너들이 표준 스크립트를 만들었다. 블럭생성시 표준 스크립트에 맞는 트랜잭션이 우선적으로 블럭에 포함되므로 표준 스크립트에 맞춰서 스크립트를 작성하는 것이 권장된다.