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 格式 |