package
1.2.27
Repository: https://github.com/blocktree/go-owcdrivers.git
Documentation: pkg.go.dev

# README

Omni Transaction Driver

        transaction_test.go测试案例说明
        Test_case1    : 1 p2pkh to 1 p2pkh simple send
        Test_case2    : 2 p2pkh to 2 p2pkh simple send
        Test_case3    : 1 multisig to 1 p2pkh simple send
        Test_case4    : 1 p2pkh to 1 p2pkh send all

其他类染色币

        在txProfile.go里面添加其他染色币的PropertyID可以支持USDT之外的共404种染色币

当前支持

        交易单构建
        交易单签名
        交易单合并
        交易单验签

        现可支持404种染色币的12种交易模式,另外11种模式暂不支持
        具体交易模式以及交易时需要指定的OmniStruct结构体数据如下:
        SimpleSend                : txType + propertyID + amount
        SendAll                   : txType + ecosystem
        DExAccept                 : txType + propertyID + amount
        MetaDExCancelEcosystem    : txType + ecosystem
        CloseCrowdsale            : txType + propertyID
        Grant                     : txType + propertyID + amount + memo
        Revoke                    : txType + propertyID + amount + memo
        ChangeIssuer              : txType + propertyID
        EnableFreezing            : txType + propertyID
        DisableFreezing           : txType + propertyID
        FreezeTokens              : txType + propertyID + amount + address
        UnfreezeTokens            : txType + propertyID + amount + address

TODO

        a lot

用法:

创建空交易单 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顺序保持一致