# README
Bitcoin Transaction Driver
transaction_test.go测试案例说明
Test_case1 : 花费单个P2PKH-UTXO
Test_case2 : 花费多个P2PKH-UTXO
Test_case3 : 花费单个P2WPKH-UTXO
Test_case4 : 花费多个P2WPKH-UTXO
Test_case5 : 花费P2PKH和P2WPKH混合的UTXO
Test_case6 : 花费BECH32-UTXO
Test_case7 : 花费BECH32-UTXO
Test_case8 : 花费2-of-3多重签名UTXO,带隔离见证
Test_case9 : 花费2-of-3多重签名UTXO,带隔离见证
Test_case10 : 花费2-of-3多重签名UTXO,无隔离见证
Test_case11 : 花费2-of-3多重签名UTXO,无隔离见证
其他类比特币验证须知
需要修改的数据在txProfile.go里面
可针对不同平台进行调整
当前支持
交易单构建
交易单签名
交易单合并
交易单验签
现已支持全系地址,任意类型、数量、顺序的混合
TODO
signSingal,anyoneCanPay...
用法:
创建空交易单 CreateEmptyRawTransaction
前置条件:
获取需要发送的utxo
获取接收地址和找零地址
确定手续费以及找零数额
步骤:
使用utxo的交易哈希(txid)和输出索引(vout)填充TxIn结构体的Prevout字段
使用接收地址和找零地址以及对应数额填充TxOut结构体的Address字段和Amount字段
确认交易单版本号
确认交易单锁定时间
确认交易是否可以追加手续费(replaceable)
获取空交易单
调用方式:
CreateRawTransaction([]TxIn, []TxOut, transactionVersion, lockTime, replaceable)
Tips:
txid使用的是小端模式,即查询交易时的端序
交易单版本号为目前的默认版本号02
创建用于签名的交易单哈希 CreateRawTransactionHashForSign
前置条件:
获取需要发送的utxo
获取接收地址和找零地址
确定手续费以及找零数额
步骤:
使用utxo的交易哈希(txid)和输出索引(vout)填充TxIn结构体的Prevout字段
使用接收地址和找零地址以及对应数额填充TxOut结构体的Address字段和Amount字段
确认交易单版本号
确认交易单锁定时间
确认交易是否可以追加手续费(replaceable)
获取前置交易的锁定脚本
确认签名类型
获取交易单
调用方式:
CreateRawTransactionHashForSign([]TxIn []TxOut, transactionVersion, lockTime, replaceable, signType)
Tips:
txid使用的是小端模式,即查询交易时的端序
交易单版本号为目前的默认版本号02
签名类型一般为signAll
本地交易单签名 SignEmptyRawTransaction
前置条件:
获取空交易单emptyTrans
获取utxo的锁定脚本以及脚本对应的私钥
步骤:
使用锁定脚本与私钥填充TxUnlock结构体
确定签名类型
调用方式:
SignRawTransaction(emptyTrans, []TxUnlock, sigType)
Tips:
TxUnlock结构体数组的顺序应该与空交易单的utxo的txid顺序保持一致
签名类型一般为signAll
客户端交易单哈希签名 SignRawTransactionHash
前置条件:
获得用于签名的交易单哈希
步骤:
获取前置交易的锁定脚本对应的私钥,填充TxUnlock结构体
获取签名
调用方式:
SignRawTransactionHash(transForSig, []TxUnlock)
Tips:
TxUnlock结构体数组的顺序应该与空交易单的utxo的txid顺序保持一致
合并交易单 InsertSignaturesToEmptyRawTransaction
前置条件:
获得空交易单
获得签名
步骤:
合并
调用方式:
InsertSignaturesToEmptyRawTransaction(emptyTrans, []SignaturePubkkey)
Tips:
签名数据结构体数组的顺序应该与utxo的txid顺序保持一致
交易单验签 VerifyRawTransaction
前置条件:
获取签名后的交易单signedTrans
获取utxo的锁定脚本
步骤:
使用锁定脚本填充TxUnlock结构体
调用方式:
VerifyRawTransaction(signedTrans, []TxUnlock)
Tips:
TxUnlock结构体数组的顺序应该与交易单的utxo的txid顺序保持一致
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Decode docode with custom alphabet.
return prefix + hash + error.
No description provided by the author
Encode encode with custom alphabet.
No description provided by the author
No description provided by the author
NewAlphabet create a custom alphabet from 58-length string.
No description provided by the author
No description provided by the author
# Constants
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Hash type bits from the end of a signature.
Hash type bits from the end of a signature.
sigHashMask defines the number of bits of the hash type which is used to identify which outputs are signed.
Hash type bits from the end of a signature.
Hash type bits from the end of a signature.
Hash type bits from the end of a signature.
# Variables
No description provided by the author
No description provided by the author
Alphabet: copy from https://en.wikipedia.org/wiki/Base58.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Errors.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
No description provided by the author
Alphabet The base58 alphabet object.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author