"P2PKH"의 두 판 사이의 차이
(→입력 스크립트) |
(→입력 스크립트) |
||
15번째 줄: | 15번째 줄: | ||
#P2PKH 입력 스크립트에는 DER로 인코딩 된 ECDSA 서명과 압축되지 않거나 압축된 원시 공개키가 포함되어 있다. 이러한 입력 스크립트에는 푸시 외의 옵코드(OPCode)가 없다.<br />[signature]<br />[public_key] | #P2PKH 입력 스크립트에는 DER로 인코딩 된 ECDSA 서명과 압축되지 않거나 압축된 원시 공개키가 포함되어 있다. 이러한 입력 스크립트에는 푸시 외의 옵코드(OPCode)가 없다.<br />[signature]<br />[public_key] | ||
#예를 들어 ECDSA 챕터(Chapter)에서 70바이트 서명을 가져오고 SIGHASH_ALL 상수(01)를 추가한다.<br />30 44<br />02 20<br />2b 2b 52 9b db dc 93 e7<br />8a f7 e0 02 28 b1 79 91<br />8b 03 2d 76 90 2f 74 ef<br />45 44 26 f7 d0 6c d0 f9<br />02 20<br />62 dd c7 64 51 cd 04 cb<br />56 7c a5 c5 e0 47 e8 ac<br />41 d3 d4 cf 7c b9 24 34<br />d5 5c b4 86 cc cf 6a f2<br />01<br /> SIGHASH 접미사는 계약과 관련된 고급 주제다. 이 시리즈에서는 모든 트랜잭션 입력에 서명하기 때문에 SIGHASH_ALL을 고수한다. | #예를 들어 ECDSA 챕터(Chapter)에서 70바이트 서명을 가져오고 SIGHASH_ALL 상수(01)를 추가한다.<br />30 44<br />02 20<br />2b 2b 52 9b db dc 93 e7<br />8a f7 e0 02 28 b1 79 91<br />8b 03 2d 76 90 2f 74 ef<br />45 44 26 f7 d0 6c d0 f9<br />02 20<br />62 dd c7 64 51 cd 04 cb<br />56 7c a5 c5 e0 47 e8 ac<br />41 d3 d4 cf 7c b9 24 34<br />d5 5c b4 86 cc cf 6a f2<br />01<br /> SIGHASH 접미사는 계약과 관련된 고급 주제다. 이 시리즈에서는 모든 트랜잭션 입력에 서명하기 때문에 SIGHASH_ALL을 고수한다. | ||
− | #이전 단락에서 공개키를 가져간 경우, 일반적인 입력 스크립트가 있다.<br />47 30 44 02 20 2b 2b 52<br />9b db dc 93 e7 8a f7 e0<br />02 28 b1 79 91 8b 03 2d<br />76 90 2f 74 ef 45 44 26<br />f7 d0 6c d0 f9 02 20 62<br />dd c7 64 51 cd 04 cb 56<br />7c a5 c5 e0 47 e8 ac 41<br />d3 d4 cf 7c b9 24 34 d5<br />5c b4 86 cc cf 6a f2 01<br /><br />21 02 82 00 6e 93 98 a6<br />98 6e da 61 fe 91 67 4c<br />3a 10 8c 39 94 75 bf 1e<br />73 8f 19 df c2 db 11 db<br />1d 28 | + | #이전 단락에서 공개키를 가져간 경우, 일반적인 입력 스크립트가 있다.<br />47 30 44 02 20 2b 2b 52<br />9b db dc 93 e7 8a f7 e0<br />02 28 b1 79 91 8b 03 2d<br />76 90 2f 74 ef 45 44 26<br />f7 d0 6c d0 f9 02 20 62<br />dd c7 64 51 cd 04 cb 56<br />7c a5 c5 e0 47 e8 ac 41<br />d3 d4 cf 7c b9 24 34 d5<br />5c b4 86 cc cf 6a f2 01<br /><br />21 02 82 00 6e 93 98 a6<br />98 6e da 61 fe 91 67 4c<br />3a 10 8c 39 94 75 bf 1e<br />73 8f 19 df c2 db 11 db<br />1d 28<br />여기서 47과 21은 각각 퓌시된 서명 및 공개키의 16진수 길이이다. |
==표준 전환== | ==표준 전환== |
2019년 8월 16일 (금) 16:03 판
P2PKH(Pay-to-Public-Key-Hash)란 비트코인 내에서 가장 일반적인 스크립트 형식으로 비트코인 프로토콜에 대한 지불 거래 유형이다. 주소는 1로 시작하는데, 세그윗(Segwit)을 지원하는 새로운 주소 3 또는 BC1로 시작하는 주소보다 훨씬 비싸다. 공개키의 간단한 해시이며, 이 해시를 주소로 사용할 수 있다.
거래 방식
발신인이 (개인키에서) 유효한 서명 및 공개키를 제공하돌고 요구하는 경우, 트랜잭션 출력 스크립트는 서명 및 공개키를 사용할 것이며, 일부 암호 기능을 통해 공개키 해시와 일치하는지 여부를 확인할 것이며, 그렇게 되면 자금이 사용 가능해질 것이다. 이 방법은 추가적인 보안을 위해 공개키를 해시 형태로 숨긴다.
P2PKH 스크립트
블록체인(Blockchain)에서 가장 일반적인 표준 스크립트는 P2PKH 주소의 이름을 따서 명명된다. 목적지 P2PKH 비트코인(BitCoin) 주소를 가지면 코인을 보낼 출력 스크립트를 작성할 수 있다. 목적지 주소가 생성된 개인키를 가지면, 나중에 그러한 코인을 쓸 입력 스크립트를 작성할 수 있다.
출력 스크립트
- P2PKH 출력 스크립트에는 Base58Check 디코딩 대상 주소, 즉 ECDSA 공개키의 해시160이 포함된다.
OP_DUP
OP_HASH160
[hash160(public_key)]
OP_EQUALVERIFY
OP_CHECKSIG - 샘플 압축 공개키를 사용
02
82 00 6e 93 98 a6 98 6e
da 61 fe 91 67 4c 3a 10
8c 39 94 75 bf 1e 73 8f
19 df c2 db 11 db 1d 28 - 해시160 다이제스트
6b f1 9e 55 f9 4d 98 6b
46 40 c1 54 d8 64 69 93
41 91 95 11 - 테스트넷(Testnet) 버전 관리 및 Base58Check 인코딩 후 다음과 같이 표시된다.
mqMi3XYqsPvBWtrJTk8euPWDVmFTZ5jHUK - 이 주소로 송금하는 출력 스크립트는 다음과 같다.
76 (OP_DUP)
a9 (OP_HASH160)
14 6b f1 9e 55 f9 4d 98
6b 46 40 c1 54 d8 64 69
93 41 91 95 11
88 (OP_EQUALVERIFY)
ac (OP_CHECKSIG)
입력 스크립트
- P2PKH 입력 스크립트에는 DER로 인코딩 된 ECDSA 서명과 압축되지 않거나 압축된 원시 공개키가 포함되어 있다. 이러한 입력 스크립트에는 푸시 외의 옵코드(OPCode)가 없다.
[signature]
[public_key] - 예를 들어 ECDSA 챕터(Chapter)에서 70바이트 서명을 가져오고 SIGHASH_ALL 상수(01)를 추가한다.
30 44
02 20
2b 2b 52 9b db dc 93 e7
8a f7 e0 02 28 b1 79 91
8b 03 2d 76 90 2f 74 ef
45 44 26 f7 d0 6c d0 f9
02 20
62 dd c7 64 51 cd 04 cb
56 7c a5 c5 e0 47 e8 ac
41 d3 d4 cf 7c b9 24 34
d5 5c b4 86 cc cf 6a f2
01
SIGHASH 접미사는 계약과 관련된 고급 주제다. 이 시리즈에서는 모든 트랜잭션 입력에 서명하기 때문에 SIGHASH_ALL을 고수한다. - 이전 단락에서 공개키를 가져간 경우, 일반적인 입력 스크립트가 있다.
47 30 44 02 20 2b 2b 52
9b db dc 93 e7 8a f7 e0
02 28 b1 79 91 8b 03 2d
76 90 2f 74 ef 45 44 26
f7 d0 6c d0 f9 02 20 62
dd c7 64 51 cd 04 cb 56
7c a5 c5 e0 47 e8 ac 41
d3 d4 cf 7c b9 24 34 d5
5c b4 86 cc cf 6a f2 01
21 02 82 00 6e 93 98 a6
98 6e da 61 fe 91 67 4c
3a 10 8c 39 94 75 bf 1e
73 8f 19 df c2 db 11 db
1d 28
여기서 47과 21은 각각 퓌시된 서명 및 공개키의 16진수 길이이다.
표준 전환
비트코인의 기존 주소 생성 표준은 "Pay-to-Public-Key-Hash"인 P2PKH이었다. 이름에서 알 수 있듯이, 이것은 공개키의 간단한 해시이며 이 해시를 주소로 사용할 수 있음을 의미한다. 소프트웨어 업그레이드와 같은 많은 소프트 포크와 더 나은 보안 및 새로운 기능을 제공하기 위해 비트코인(BitCoin) 블록체인은 나중에 P2SH(Pay-To-Script-Hash)라고 불리는 주소 생성을 위한 새로운 표준으로 전환했다.
각주
참고자료
- AulaBitcoin, 〈DIRECCIONES DE BITCOIN〉, 《AulaBitcoin》, 2019-06-06
- 〈Pay-To-Public-Key-Hash〉, 《LDAP위키》
- Josh, 〈(Bitcoin) Script Kiddies – Understanding Basic Transaction Scripts〉, 《Chaintuts》, 2019-02-16
- Soneshwar Singh, 〈Basics ofPaper Wallets〉, 《해커눈》, 2018-11-11
- Monstrum, 〈What is P2PK, P2PKH, P2SH, P2WPKH - ELI5〉, 《스택익스체인지》, 2017-12-19