package
1.0.16
Repository: https://github.com/nbit99/go-owcdrivers.git
Documentation: pkg.go.dev

# 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