잠금 스크립트 편집하기
최신판 | 당신의 편집 | ||
14번째 줄: | 14번째 줄: | ||
트랜잭션 출력 스크립트에서는 공개키 또는 [[해시]]를 담고 있으며, 상응하는 개인 키의 소유주만이 출력된 비트코인을 얻을 수 있다. 내부적으로 비트코인 프로토콜은 잠금 스크립트를 통해 비트코인의 수신자를 식별한다. 잠금 스크립트는 비트코인 주소와 관련이 없는 것으로 보이지만 공개 키의 해시를 표시하는데, 비트코인 주소는 주소를 사용할 네트워크와 공개 키의 해시를 식별하는 버전 [[바이트]](byte)로 구성되며, 잠금 스크립트 및 네트워크 식별자에서 비트코인 주소를 생성할 수 있다.<ref>knocte, 〈[https://programmingblockchain.gitbook.io/programmingblockchain/bitcoin_transfer/payment_script ScriptPubKey {# payment-script}]〉, 《깃허브》 </ref> | 트랜잭션 출력 스크립트에서는 공개키 또는 [[해시]]를 담고 있으며, 상응하는 개인 키의 소유주만이 출력된 비트코인을 얻을 수 있다. 내부적으로 비트코인 프로토콜은 잠금 스크립트를 통해 비트코인의 수신자를 식별한다. 잠금 스크립트는 비트코인 주소와 관련이 없는 것으로 보이지만 공개 키의 해시를 표시하는데, 비트코인 주소는 주소를 사용할 네트워크와 공개 키의 해시를 식별하는 버전 [[바이트]](byte)로 구성되며, 잠금 스크립트 및 네트워크 식별자에서 비트코인 주소를 생성할 수 있다.<ref>knocte, 〈[https://programmingblockchain.gitbook.io/programmingblockchain/bitcoin_transfer/payment_script ScriptPubKey {# payment-script}]〉, 《깃허브》 </ref> | ||
− | UTXO를 기본 단위로 거래하며 출력값에 잠금 스크립트, 입력값에 해제 스크립트가 들어가고, 출력값은 잠금 스크립트로 잠겨져 있으며 받는 사람은 자신의 [[서명]]이 들어간 해제 스크립트로 잠금장치를 풀어야 받은 돈을 사용할 수 있다.<ref>feyee95, 〈[https://steemit.com/kr/@feyee95/7-2 비트코인 스크립트 언어의 장점과 한계]〉, | + | UTXO를 기본 단위로 거래하며 출력값에 잠금 스크립트, 입력값에 해제 스크립트가 들어가고, 출력값은 잠금 스크립트로 잠겨져 있으며 받는 사람은 자신의 [[서명]]이 들어간 해제 스크립트로 잠금장치를 풀어야 받은 돈을 사용할 수 있다.<ref>feyee95, 〈[https://steemit.com/kr/@feyee95/7-2 비트코인 스크립트 언어의 장점과 한계]〉, 《스팀》</ref> 잠금 스크립트는 UTXO를 소비하기 위한 요건을 명시하고 있고 그뿐 아니라 공개키 또는 비트코인 주소를 포함한다. 특정 지갑에서 소유하고 있는 비트코인 덩어리로 소비 요건에 비트코인 주소와 공개키도 포함하며, 해당 지갑 주소를 포함하는 잠금 스크립트를 풀 수 있는 조건을 달성하면 해당 지갑 주소에서 UTXO를 소비할 수 있다.<ref name="끙"></ref> |
== 활용 == | == 활용 == | ||
140번째 줄: | 140번째 줄: | ||
: 해시값을 [[개인 키]](private-key)로 서명하여 [[DER]] 형식으로 된 서명 값을 생성하고, 개인 키로부터 [[공개키]](public-key) 값을 생성하고, 관련 정보를 추가하여 해제 스크립트값을 완성한다. "unsigned raw Transaction data" 에 있던 첫 번째 잠금 스트립트 값을 해제 스트립트 값으로 바꾸고(replace), 스크립트 길이(script length) 값도 바꾼다. 그리고 마지막에 있던 4바이트-해시 유형인 01000000을 제거하면, 서명 값이 들어간 거래, 트랜잭션 데이터가 완성된다. | : 해시값을 [[개인 키]](private-key)로 서명하여 [[DER]] 형식으로 된 서명 값을 생성하고, 개인 키로부터 [[공개키]](public-key) 값을 생성하고, 관련 정보를 추가하여 해제 스크립트값을 완성한다. "unsigned raw Transaction data" 에 있던 첫 번째 잠금 스트립트 값을 해제 스트립트 값으로 바꾸고(replace), 스크립트 길이(script length) 값도 바꾼다. 그리고 마지막에 있던 4바이트-해시 유형인 01000000을 제거하면, 서명 값이 들어간 거래, 트랜잭션 데이터가 완성된다. | ||
− | : ECC 암호 알고리즘에서는 공개키를 2개(X값, Y값) 사용하며, 서명 값도 2개(X값, Y값 ==> R 값, S값) 만들어지는데 특징으로 인해, 개인 키는 256-비트이지만, 서명 값과 공개키는 각각 512-비트라고 한다. 서명 값과 공개키 값은 해제 스크립트 안에 들어 있고, 공개키는 비압축(Uncompressed) 형식과 압축(Compressed) 형식 2가지로 표현할 수 있다. <ref>AEP코리아네트, 〈[http://a.to/193EW0M 비트코인 시스템에서 사용하는 암호 기술(II) - 거래 검증]〉, | + | : ECC 암호 알고리즘에서는 공개키를 2개(X값, Y값) 사용하며, 서명 값도 2개(X값, Y값 ==> R 값, S값) 만들어지는데 특징으로 인해, 개인 키는 256-비트이지만, 서명 값과 공개키는 각각 512-비트라고 한다. 서명 값과 공개키 값은 해제 스크립트 안에 들어 있고, 공개키는 비압축(Uncompressed) 형식과 압축(Compressed) 형식 2가지로 표현할 수 있다. <ref>AEP코리아네트, 〈[http://a.to/193EW0M 비트코인 시스템에서 사용하는 암호 기술(II) - 거래 검증]〉, 《네이버》, 2017-12-21 </ref> |
Uncompressed Form : 04 <X> <Y> | Uncompressed Form : 04 <X> <Y> | ||
Compressed Form : 02 <X> When <Y> is even | Compressed Form : 02 <X> When <Y> is even |