검수요청.png검수요청.png

"해제 스크립트"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
'''해제 스크립트'''<!--해제스크립트, 헤제 스크립트-->(scriptSig)는 그조건만 충족시키는 유일한 서명(signature), 잠금 해제 스크립트로 잠금 스크립트가 출력값에 걸어둔 조건을 해결해 출력값이 소비뒬수 있도록 하는 스크립트이며, '''스크립트 시그'''<!--스크립트시그, 시그 스크립트-->나 '''서명 스크립트'''<!--서명스크립트-->라고도 한다.  
+
'''해제 스크립트'''<!--해제스크립트, 헤제 스크립트-->(scriptSig)는 그조건만 충족시키는 유일한 서명(signature), 잠금 해제 스크립트로 잠금 스크립트가 출력값에 걸어둔 조건을 해결해 출력값이 소비뒬수 있도록 하는 스크립트이며, 열쇠의 역할로 잠금스크립트를 풀기위한'''스크립트 시그'''<!--스크립트시그, 시그 스크립트-->나 '''서명 스크립트'''<!--서명스크립트-->라고도 한다.  
  
 
== 개요 ==
 
== 개요 ==
12번째 줄: 12번째 줄:
  
 
== 특징 ==
 
== 특징 ==
해제 스클비트에는 시그(sig) 및 퍼브키(PubK) 또는 디지털 서명 및 공개 키가 포함되어 있으며 잠금 스크립트를 충족시키기 위해 제공되며, 해제 스크립트 및 잠금 스크립트(scriptPubKey)가 순서대로 결합 및 실행되고 해제 스크립트가 먼저 실행되도록 작동한다. 예를 들어, 밥(Bob)이 엘리스(Alice)로부터받은 1비트 코인을 사용하기로 결정한 경우 먼저 출력을 잠금 해제 해야 하고 수신자가 1비트 코인을 수신하면 잠금 이 해제 된다.<ref>〈[https://www.mycryptopedia.com/scriptpubkey-scriptsig/ scriptPubKey 및 scriptSig 설명]〉, 《MYCRYPTOPEDIA》, 2018-10-30</ref>
+
해제 스클비트에는 시그(sig) 및 퍼브키(PubK) 또는 디지털 서명 및 공개 키가 포함되어 있으며 잠금 스크립트를 충족시키기 위해 제공되며, 해제 스크립트 및 잠금 스크립트(scriptPubKey)가 순서대로 결합 및 실행되고 해제 스크립트가 먼저 실행되도록 작동한다. 예를 들어, 밥(Bob)이 엘리스(Alice)로부터받은 1비트 코인을 사용하기로 결정한 경우 먼저 출력을 잠금 해제 해야 하고 수신자가 1비트 코인을 수신하면 잠금 이 해제 된다.<ref>〈[https://www.mycryptopedia.com/scriptpubkey-scriptsig/ scriptPubKey 및 scriptSig 설명]〉, 《MYCRYPTOPEDIA》, 2018-10-30</ref> 해제 스크립트는 트랜잭션을 발생시킨 주체의 서명 + publicKey , 열쇠의 역할을 하고, 잠금스크립트를 풀기위한 해제 스크립트라고도 불리며, 인위적으로 만들어 낼 수 없다. 트랜잭션 발생자의 개인키가 필요한 서명이 존재하기 때문이며, 잠금 스크립트를 통해 트랜잭션을 검증하고 서명을 확인한다.<ref>niipoong, 〈[https://steemit.com/kr/@niipoong/scriptsig-scriptpubkey 비트코인 스크립트와 디지털 서명, 검증 (scriptSig, scriptPubKey )]〉, 《스팀잇》 </ref>
  
 
== 과정 ==
 
== 과정 ==
18번째 줄: 18번째 줄:
  
 
== 명령어 ==
 
== 명령어 ==
 
+
* PUSHDATA <sig> + SIGHASH_ALL + PUSHDATA <pubKey>
 +
* PUSHDATA <sig > : 서명을 Stack에 Push 하는 명령어
 +
* SIGHASH_ALL (01) : 거래에 대한 모든 것이 서명되어 있음을 나타낸다.
 +
* PUSHDATA <pubKey> : Public-Key를 Stack 에 Push 하라는 명령어
  
 
{{각주}}
 
{{각주}}
  
 
== 참고자료 ==
 
== 참고자료 ==
 +
* 비트코인 개발자가이드 공식 홈페이지 - https://wikidocs.net/14505
 
* niipoong, 〈[https://steemit.com/kr/@niipoong/scriptsig-scriptpubkey 비트코인 스크립트와 디지털 서명, 검증 (scriptSig, scriptPubKey )]〉, 《스팀잇》
 
* niipoong, 〈[https://steemit.com/kr/@niipoong/scriptsig-scriptpubkey 비트코인 스크립트와 디지털 서명, 검증 (scriptSig, scriptPubKey )]〉, 《스팀잇》
 
* easyblockchain, 〈[http://a.to/19SX4y9 쉽게 설명하는 블록체인:비트코인의 언너 '스크립트 Script)']〉, 《뱅크샐러드》, 2018-07-02
 
* easyblockchain, 〈[http://a.to/19SX4y9 쉽게 설명하는 블록체인:비트코인의 언너 '스크립트 Script)']〉, 《뱅크샐러드》, 2018-07-02

2019년 9월 2일 (월) 14:06 판

해제 스크립트(scriptSig)는 그조건만 충족시키는 유일한 서명(signature), 잠금 해제 스크립트로 잠금 스크립트가 출력값에 걸어둔 조건을 해결해 출력값이 소비뒬수 있도록 하는 스크립트이며, 열쇠의 역할로 잠금스크립트를 풀기위한스크립트 시그서명 스크립트라고도 한다.

개요

거래의 입력값에 포함되어 있으며, 얼마를 보낼지 보낼금액란에 입력하는 명령어 안에 잠금 스크립트의 조건을 충족할 해제스크립트가 포함되어 있기 때문에 해당 비트코인 주소의 UTXO에 대한 소유권을 입증하고 그 UTXO를 소비할수 있다.비트코인 생태계에도 스크립트라고 부르는 프로그래밍 언어가 존재한다. 스크립트는 비트코인의 모든 거래를 유효화시키는 언어로, 단순하면서도 비트코인이 비트코인으로서 역할을 하게 하는 적합한 언어이다. 비트코인은 고정적인 패턴화된 형태의 시스템이 아니라 스크립트 언어를 통해 실행되기 때문에 무한대에 가까운 표현 가능한 조건들이 만들어질 수 있는데, 이것이 바로 비트코인이 화폐로서 역할을 하게 하는 힘이다. 비트코인 거래를 작동하기 위해서 두 가지 잠금 스크립트와 해제 스크립트, 두 가지 엔진이 작동한다.

  1. 잠금 스크립트 : 출력값을 소비하기 위해 충족되어야 하는 요건을 스크립트로 작성한 것
  2. 해제 스크립트 : 잠금 스크립트가 출력값에 걸어둔 조건을 해결해 출력값이 소비될 수 있도록 하는 스크립트

블록체인 상에서 기록된 비트코인의 잔액을 표현한 모든 UTXO들은 그것들을 소비하기 위한 조건이 있는데 그조건을 잠금 스크립트라 하고 그조건을 풀수 있는 입력값을 해제스크립트 이며, 데이터 값이 복사되어 잠금 스크립트와 함께 연산 되어 실행됐을 때결과가 TRUE값이 나오면 그 입력값은 유효하다는 것이고, UTXO를 소비할수 있게 된다.[1]

해제 스크립트는 거래의 입력값에 포함되어 있으며, 얼마를 보낼지 보낼금액란에 입력하는 명령어 안에 잠금 스크립트의 조건을 충족할 해제스크립트가 포함되어 있기 때문에 해당 비트코인 주소의 UTXO에 대한 소유권을 입증하고 그 UTXO를 소비할수 있다. 해제 스크립트와 잠금 스크립트(scriptPubkey) 는 언뜻 비슷해보이지만 이 둘은 자물쇠와 열쇠의 관계이다. 해제 스크립트는 열쇠의 역할을 하며, 트랜잭션을 발생시킨 주체의 서명과 공개키를 합쳐 잠금 스크립트를 풀기 위해 작동한다. 반면 잠금 스크립트는 자물쇠의 역할을 하며, 트랜잭션을 검증하기 올바른지 검증하라는 키이다. 피투피 네트워크에서 해당 트랜잭션을 받은 노드는 이 잠금 스크립트에 해제 스크립트를 대조해서 일치하는지 확인하고 true라고 판명되면 올바른 트랜잭션이라 간주해 이웃노드로 전달한다.[2]

특징

해제 스클비트에는 시그(sig) 및 퍼브키(PubK) 또는 디지털 서명 및 공개 키가 포함되어 있으며 잠금 스크립트를 충족시키기 위해 제공되며, 해제 스크립트 및 잠금 스크립트(scriptPubKey)가 순서대로 결합 및 실행되고 해제 스크립트가 먼저 실행되도록 작동한다. 예를 들어, 밥(Bob)이 엘리스(Alice)로부터받은 1비트 코인을 사용하기로 결정한 경우 먼저 출력을 잠금 해제 해야 하고 수신자가 1비트 코인을 수신하면 잠금 이 해제 된다.[3] 해제 스크립트는 트랜잭션을 발생시킨 주체의 서명 + publicKey , 열쇠의 역할을 하고, 잠금스크립트를 풀기위한 해제 스크립트라고도 불리며, 인위적으로 만들어 낼 수 없다. 트랜잭션 발생자의 개인키가 필요한 서명이 존재하기 때문이며, 잠금 스크립트를 통해 트랜잭션을 검증하고 서명을 확인한다.[4]

과정

명령어

  • PUSHDATA <sig> + SIGHASH_ALL + PUSHDATA <pubKey>
  • PUSHDATA <sig > : 서명을 Stack에 Push 하는 명령어
  • SIGHASH_ALL (01) : 거래에 대한 모든 것이 서명되어 있음을 나타낸다.
  • PUSHDATA <pubKey> : Public-Key를 Stack 에 Push 하라는 명령어

각주

참고자료

같이 보기


  검수요청.png검수요청.png 이 해제 스크립트 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.