package
1.69.0
Repository: https://github.com/33cn/chain33.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接口

chain33.GetWalletRecoverAddress

请求结构 ReqGetWalletRecoverAddr

字段名称类型含义
ctrPubKeystring控制地址公钥, secp256k1算法, 16进制
recoverPubKey[]string找回地址公钥数组, secp256k1算法, 16进制, 目前只支持两个地址,即数组长度为2
relativeDelayTimeint64钱包找回相对延时时长, 单位秒

响应

名称类型含义
resultstring脚本地址X
chain33.SignWalletRecoverTx

请求结构 ReqSignWalletRecoverTx

字段名称类型含义
walletRecoverParamReqGetWalletRecoverAddr钱包找回信息结构
signAddrstring签名地址
privKeystring签名地址的私钥, secp256k1算法, 16进制, 不指定私钥时,将从本地钱包获取对应私钥
rawTxstring原始交易, 16进制

响应

名称类型含义
resultstring签名后的交易, 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

Chain33BtcParams 比特币相关区块链参数.
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