P2SH 주소를 설정하고 Golang에서 자금을 사용
Golang에서 원본 다중 Sig P2SH 비트코인 거래 작성
비트코인 스크립트 언어
비트코인 스크립트 언어인 Scrip t는 스택 기반(스택: 고급 선출) 실행 언어입니다.이것은 비트코인의 안전 모델을 간소화하는 데 목적을 둔다. 따라서 이 스크립트는 어떠한 순환이나 이동 조작 코드도 없고, 이 언어는 완전하지 않다.그러나 이런 유한한 언어는 비트코인에 많은 프로그램을 작성하는 능력을 제공했다.비트코인 스크립트 언어에 대한 자세한 내용은 여기link에서 확인할 수 있습니다.
스크립트 해시에 지불(P2SH)
스크립트 지불 해시(P2SH) 거래는 BIP16에서 표준화되었다.이 업데이트는 공개 키 산열 (메인 네트워크에서 1로 시작하는 주소와 테스트 네트워크에서 m로 시작하는 주소) 이 아닌 상환 산열 (메인 네트워크에서 1로 시작하는 주소와 테스트 네트워크에서 m로 시작하는 주소) 에 거래를 보낼 수 있도록 합니다.송신자는 교환에 관한 어떤 정보도 모르고 해시만 교환할 수 있다. 교환은 다중 신호 검사, 비밀번호 검증 또는 기타 그 어떠한 내용도 할 수 있다.
P2SH UTXO에서 비트코인을 소비하려면 수신자는 UTXO에서 환전하는 해시와 일치하는 환전 스크립트와 비트코인을 소비하는 서명 스크립트(sig 스크립트라고 부른다)를 제공해야 한다.
이 자습서에서는 P2SH 형식으로 멀티sig 주소를 구축한 다음 Go 언어를 사용하는 방법을 설명합니다.
다중 Sig 상환 스크립트
m= UTXO 소비에 필요한 최소 서명 수(OP 2=2)
n= 다중 sig 스크립트에 사용된 총 공개 키 수(OP 3=3)
m과 n은 최대 16개
redeem script = <OP_2> <pubkey A> <pubkey B> <pubkey C> <OP_3> OP_CHECKMULTISIG
이것은 상기 함수의 반환값입니다: (공개 키는 굵은 글꼴)
2 **0265e6f7fb614a369c9230912a3bb09c33c5c5be2e1bcfc2293ecaed46708e0b5c** **03f546edf7b434b50aa0115c1c82a0f9a96505d9eff55d2fe3b848c4b51c06b643** **02908375f301c7ea583f7e113939eab1164abda4ac27898b1cf78abf1c82f02da9** 3 OP_CHECKMULTISIG
서명 스크립트=
(마지막 코드에서 이 서명 스크립트를 어떻게 구성하는지 단계적으로 설명합니다)
스크립트 실행
서명 스크립트와 상환 스크립트는 창고에서true를 생성합니다
signature script + redeem script = <OP_0> <sig A> <sig C> <OP_2> <pubkey A> <pubkey B> <pubkey C> <OP_3> OP_CHECKMULTISIG
- 왼쪽에서 오른쪽으로 스택 상단에 각 작업 코드나 데이터를 추가하고 마지막으로 작업 CHECKMULTISIG
- OP CHECKMULTISIG가 스택 상단에서 검사할 총 키 수를 가져옵니다(이 경우 OP 3)
- 및 스택 상단 에서 지정된 수의 공개 키를 가져옵니다(이 경우 3, OP 3=3)
- , 그리고 창고 상단에서 제공해야 할 서명 수를 얻습니다(이 예에서 OP 2=2)
- 마지막으로 창고에 필요한 서명이 있는지 확인합니다. 서명이 정확하면 창고에true를 남기면 비트코인을 사용할 수 있습니다
(OP 0을 추가하는 것은 비트코인 스크립트 언어에서 알려진 오류입니다. 현재는consensus의 일부분입니다. 완전한 설명을 찾을 수 있습니다 here
이것이 바로 비트코인 스크립트 언어의 작업 원리입니다.이제 우리는 P2SH에 깊이 들어갈 수 있습니다
다중 신호 P2SH
P2SH 주소로 보낸 사람은 산열을 되찾기만 하면 됩니다
redeem-hash = Hash160(redeem script)
P2SH 주소를 구축하려면 먼저 복구 스크립트를 생성해야 합니다. (우리의 예는 생성된 Multi-Sig-receive-script 부분입니다.) 그리고hash160으로 산열해야 합니다.그래서 구원 산열의 길이는 20바이트입니다
(hash160은 2단계 산열 알고리즘으로 먼저 Sha256으로 입력을 산열한 다음에 RIPEMD160으로 그 결과를 산열한다. 최종 결과는 RIPEMD160 산열 함수의 결과가 될 것이다)
이후, 상환 산열로 P2SH 주소를 구축합니다(주 네트워크에서 3부터, 테스트 네트워크에서 2부터).
함수의 반환값은
2NFhEhTAiXJ8z8yEYnXe6SJX5E8bRgB5ZgY
(2부터 네트워크 테스트용으로 생성됨)
현재 누구나 비트코인을 이 주소로 보낼 수 있습니다.발송자가 이 주소에 일정 수량의 비트코인을 보내려고 할 때 지갑은 이 주소에서 교환 산열을 추출하고 잠금 스크립트를 구축하여 거래의 출력에 넣습니다
locking script = OP_HASH160 <redeem-hash> OP_EQUAL
당신도 이것link으로 비트코인 테스트를 획득할 수 있습니다
비트코인(테스트 또는 진실)을 획득한 후 블록 자원 관리자를 검사할 수 있습니다. 예를 들어 api.blockchair.com 잠금 스크립트를 검사할 수 있습니다. 이것은 스크립트 16진법 또는 공공 키 스크립트라고도 부릅니다
상기 함수는 잠금 스크립트를 인간이 읽을 수 있는 비트코인 스크립트 언어로 분해하고 그 반환값은
OP_HASH160 f63e2cbcc678236f683d267e7bb298ffdcd57b04 OP_EQUAL
Spend Multi-Sig P2SH
받는 사람이 이 돈을 쓰려고 할 때 UTXO는 잠금 해제 스크립트, 즉 교환 스크립트와 연결된 서명 스크립트를 제공해야 합니다
unlocking script = <OP_0> <sig A> <sig C> <redeem script>
광부는 이 잠금 해제 스크립트를 블록체인의 잠금 스크립트에 추가하고 이 프로그램을 실행합니다
스크립트 프로그램 = 잠금 해제 스크립트 + 잠금 스크립트
script program = <OP_0> <sig A> <sig C> <redeem script> OP_HASH160 <redeem-hash> OP_EQUAL
- 및 스택에 하나씩 추가
- 그런 다음 OP HASH160이 스택 상단 요소의 해시를 추가하고 계산합니다. 즉, 결과를 스택 상단 에 보관합니다.
- 스택 상단에 추가
- 마지막으로 OP EQUAL 추가
- OP EQUAL 검사 스택의 상단 요소 두 개(이 예는 HASH160(구제 스크립트)와
- 서로 같으면true를 되돌려주고 프로그램을 계속합니다. 그렇지 않으면 창고 맨 위에false를 되돌려주고 프로그램을 중단합니다
- 따라서 수신자가 같은 상환 스크립트를 제공하여 상환 산열과 주소를 구축하는 데 사용한다면 우리는 스크립트 실행 부분과 같은 상태에 도달하고 창고의 작업 코드와 데이터가 같다
이것은 go에서 다중sig거래를 체결한 코드입니다. 비트코인 거래와 그 구조에 익숙하지 않으시면 제 이전 코드post를 보실 수 있습니다
이것은 상기 함수의 반환값입니다:
0100000001fe75a438b72fdc302b80cc216d66d5e3bbb0359bce3bb4cecf743f5fda1f4eb101000000fdfd000048304502210096b617a5b2bd676ee8d3f8d8d91bf60c599e16382d1e12a61a1f9562c35b2cb102204379706a55c07bb45d20336159f80ebe9786938e34b9309e49ed422e6d2a44470147304402201550a8bb0c28107098289fe6fe64488bdee46800d28bfbb0b0a1e1b2d64b9fb4022004684015095b999185b3da1a23d239452ad73b199a032f71978760f8ae42313f014c6952210265e6f7fb614a369c9230912a3bb09c33c5c5be2e1bcfc2293ecaed46708e0b5c2103f546edf7b434b50aa0115c1c82a0f9a96505d9eff55d2fe3b848c4b51c06b6432102908375f301c7ea583f7e113939eab1164abda4ac27898b1cf78abf1c82f02da953aeffffffff01f8a70000000000001976a914bd63bf79e39f4cd52361c092c3fba9264662285688ac00000000
이것은 원시 비트코인 거래로 테스트 네트워크에서 전송할 수도 있고 blockstream.info 또는 다른 어느 곳에서든 전송할 수도 있습니다
상기 원시 업무의 txid는
c7d1582d4cf85fbd10732002c5bb06068d4b86cfd5cca151ef88104c6702435a
당신은 모든 블록 브라우저에서 비트코인 테스트망을 검색할 수 있습니다
my previospost에서 P2PKH 거래, 거래 구조와 비용에 대한 정보를 찾을 수 있습니다
관심 가져주셔서 감사합니다
Also, Read
- Learn about Ethereum and Web3
- Crypto Trading Bots
- 3Commas Review
-
AAX Exchange Review | 중계 코드, 거래비, 이해득실 -
Deribit Review | 옵션, 비용, API 및 테스트 네트워킹 - FTX Crypto Exchange Review
- NGRAVE ZERO review
- Bybit Exchange Review
- 3Commas vs Cryptohopper
- 최적 비트코인Hardware wallet
- Crypto Copy Trading Platforms
- 최적monero wallet
- ledger nano s vs x
- Bitsgap vs 3Commas vs Quadency
- 최고Crypto Tax Software
- Best Crypto Trading Platforms
- 최적Crypto Lending Platforms
- Ledger Nano S vs Trezor one vs Trezor T vs Ledger Nano X
-
BlockFi vs Celsius 대 호드나트 -
Bitsgap review — 쉽게 돈을 벌 수 있는 암호화 거래 로봇 -
Quadency Review - 전문가를 위한 암호화 거래 로봇 -
PrimeXBT Review | 레버리지 거래, 비용 및 노림자 - Altrady review
- Ellipal Titan Review
- SecuX Stone Review
-
BlockFi Review | 암호화 로 8.6%의 이자를 벌다 -
Best Crypto APIs Developers 대상 - Best Blockchain Analysis Tools
-
Crypto arbitrage지침: 초보자는 어떻게 돈을 버는가 - 최적Crypto Charting Tool
- 무엇이 best books to learn about Bitcoin입니까?
Reference
이 문제에 관하여(P2SH 주소를 설정하고 Golang에서 자금을 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/coinmonks/build-p2sh-address-and-spend-its-fund-in-golang-37ao텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)