티스토리 뷰
필요한 모듈 설치
pip install cryptos
SegWit 주소 생성 방법
from cryptos import *
priv = random_key() # your private key
b = Bitcoin()
# 세그윗 주소생성
addr_sw = b.privtop2w(priv)
# '3MeQ13kvDsPGzT6WaQdiygawzgMcizf1sD'
- 해당 주소의 정확한 명칭은 p2sh-p2wpkh 가 됩니다. (Nested SegWit)
- 세그윗은 내부적으로 압축 공개키를 사용합니다. (비압축 공개키 사용이 제한됨)
SegWit 주소에서 출금 방법
from cryptos import *
b = Bitcoin()
# 출금할 세그윗 주소
addr_sw = '3MeQ13kvDsPGzT6WaQdiygawzgMcizf1sD'
# 세그윗 주소에서 UTXO를 가져옵니다.
inputs = b.unspent(addr_sw)
# [{'output': 'c33b5dd170269f966c05397a19f5d3138d9b327d24f708fe67f3fd919ed511b1:0', 'value': 10000}]
# 사용할 UTXO에 segwit 필드를 세팅합니다
inputs[0]['segwit'] = True
# [{'output': 'c33b5dd170269f966c05397a19f5d3138d9b327d24f708fe67f3fd919ed511b1:0', 'value': 10000, 'segwit': True}]
balance= inputs[0]['value']
fee = 200
# 이제 출력을 정의합니다
outs = [{'value': balance - fee, 'address': '1CEDQbJQqQnfvJznjXwr6fX5EffagCFmzk'}]
# 거래생성
tx = b.mktx(inputs, outs)
# 서명하기
priv = 'your private key'
signed = b.signall(tx, priv)
# 거래를 멤풀에 전송합니다
b.pushtx(signed)
처리결과
https://mempool.space/tx/d23f0f768236f2a58bd7ca6b544ec24c09baabccddd1aa5c6f6fe90716879862
23년 6월 21일 업데이트
cryptos 라이브러리가 업데이트되면서 해당 privtop2w 함수가 없어졌습니다.
cryptos 최신 버젼에서는 privtop2w 함수 대신 아래와 같이 사용해 보세요
b.privtop2wpkh_p2sh(priv)
---
혹시 기존 라이브러리를 그대로 사용하시려면 과거 버젼의 라이브러리 설치가 필요합니다.
pip install cryptos==1.36
---
릴리즈노트를 보시면 오래동안 업데이트가 없다가 올해 3월부터 업데이트가 존재하네요.
https://pypi.org/project/cryptos/#history
728x90
반응형
'비트코인 공부' 카테고리의 다른 글
Native Segwit 주소 생성 (2) | 2023.01.14 |
---|---|
23개 니모닉에서 24번째 단어 계산하는 코드 (19) | 2022.12.25 |
SegWit 주소 사용이 권장되는 이유 (0) | 2022.12.14 |
비트코인 코어 풀노드 설치 (0) | 2022.12.05 |
A deep dive into Segregated Witness (0) | 2022.11.29 |
댓글