package
0.0.0-20231224052254-3c905e5ef12b
Repository: https://github.com/assetcloud/chain.git
Documentation: pkg.go.dev
# README
脚本使用
钱包资产找回
相关概念
脚本地址 X
该地址由钱包找回脚本哈希生成地址, 由于私钥未知, 地址上的资产需要使用钱包找回脚本对应的约束进行提取
控制地址 A
该地址为钱包找回主地址, 可以基于比特币脚本构造签名, 实时提取地址 X 中的资产
找回地址 B
该地址为钱包找回副本地址, 可以基于比特币脚本构造签名, 延时提取地址 X 中的资产, 目前仅支持 2 个找回地址
钱包找回脚本 S
一种比特币脚本, 由地址 A 和 B 对应公钥, 以及延时等数据构成
基本场景
- 用户生成地址 A 和 B 及 X, 地址 X 用于线上资产存储, 地址 A 离线控制 X 资产存取
- 地址 A 私钥丢失时, 可使用地址 B 的私钥进行延时找回地址 X 资产
- 实际使用中, 地址 B 也可由第三方托管控制
操作步骤
获取钱包找回脚本地址 X
- 已知钱包找回控制地址 A,找回地址 B,相对延时时长 T
- 调用接口获取获取钱包找回地址 X,相关 rpc
- 用户使用链上转账功能,将需要被钱包找回控制的的资产转入到地址 X
- X 对应的私钥未知,需要由地址 A 或 B 的私钥构造比特币脚本签名,进行资产操作
实时提取 X 资产
- 控制地址 A 可以随时对 X 的资产进行提取,即构造发送方为 X 的原始转账交易
- 交易需要采用比特币脚本类型签名, 相关 rpc
- 发送交易到链上执行
延时提取 X 资产
- 找回地址 B 可以基于延时交易提取 X 的资产, 即构造发送方为 X 的原始转账交易 tx1, 但 tx1 需要提交到链上并等待延时打包
- 交易 tx1 需要采用比特币脚本类型签名, 相关 rpc
- 基于 tx1, 相对延时 T, 构造延时存证交易 tx2,构造方法
- 将 tx2 签名并发送至链上执行,tx1 将作为 tx2 的交易内容, 暂存于链上等待延时打包
- 通过 tx1 哈希, 查询 tx1 是否被打包执行
rpc 接口
chain.GetWalletRecoverAddress
请求结构 ReqGetWalletRecoverAddr
字段名称 | 类型 | 含义 |
---|---|---|
ctrPubKey | string | 控制地址公钥, secp256k1 算法, 16 进制 |
recoverPubKey | []string | 找回地址公钥数组, secp256k1 算法, 16 进制, 目前只支持两个地址,即数组长度为 2 |
relativeDelayTime | int64 | 钱包找回相对延时时长, 单位秒 |
响应
名称 | 类型 | 含义 |
---|---|---|
result | string | 脚本地址 X |
chain.SignWalletRecoverTx
请求结构 ReqSignWalletRecoverTx
字段名称 | 类型 | 含义 |
---|---|---|
walletRecoverParam | ReqGetWalletRecoverAddr | 钱包找回信息结构 |
signAddr | string | 签名地址 |
privKey | string | 签名地址的私钥, secp256k1 算法, 16 进制, 不指定私钥时,将从本地钱包获取对应私钥 |
rawTx | string | 原始交易, 16 进制 |
响应
名称 | 类型 | 含义 |
---|---|---|
result | string | 签名后的交易, hex 格式 |
# Functions
CheckBtcScript check btc Script signature.
GetBtcLockScript 根据地址类型,生成锁定脚本.
GetBtcUnlockScript 生成比特币解锁脚本.
GetWalletRecoverySignature get wallet asset recover signature isRetrieve set false when input control address private key, set true for wallet recovery signMsg msg for sign privKey private key of control address or recover address walletRecoverScript result of NewWalletRecoveryScript utxoSequence utxo sequence, set relative delay time for wallet recovery.
MakeKeyDB make btc script key db.
MakeScriptDB make btc script db.
NewBtcKeyFromBytes 获取比特币公私钥.
NewBtcScriptSig new btc script signature.
NewBtcScriptSigWithDelay new btc script signature with lockTime or sequence.
NewMultiSigScript multi-sig pubKey script.
NewWalletRecoveryScript wallet assets recovery pubKey script controlPubKey secp256k1 pub key recoverPubKey secp256k1 pub key relativeDelayTime relative time of second or block height IF <A's Pubkey> CHECKSIG ELSE <sequence> CHECKSEQUENCEVERIFY DROP <B's Pubkey> CHECKSIG ENDIF.
Script2PubKey transform script to fixed length public key.
# Constants
TyPay2PubKey Pay to pub key.
TyPay2PubKeyHash Pay to pub key Hash.
TyPay2ScriptHash Pay to Script Hash.
# Variables
ChainBtcParams 比特币相关区块链参数.
ErrBtcKeyNotExist btc key not exist when sign.
ErrBtcScriptNotExist btc script not exist when sign.
ErrBuildBtcScript build btc script error.
ErrGetBtcTxInSig get btc tx input signature error.
ErrInvalidBtcPubKey invalid bitcoin pubkey.
ErrInvalidMultiSigRequiredNum error required multi sig pub key num.
ErrNewBtcAddress new btc address pub key error.
ErrNewBtcScriptSig new btc script sig error.
No description provided by the author
# Structs
BtcAddr2Key 比特币编码地址及对应的私钥,用于签名KeyDB.
BtcAddr2Script 比特币编码地址及对应的脚本,用于签名ScriptDB.
No description provided by the author