如何用 Bitcoin Core GUI 创建 Safe 金库
准备 Bitcoin Core GUI 钱包
下载并安装 Bitcoin Core GUI 钱包 https://bitcoincore.org/en/download/ ,或者升级至 25.0 以上的版本。
您也可以选择 用 Bitcoin Core 命令行创建 Safe 金库
打开 Bitcoin Core 用户界面

创建 Safe 金库
1、进入 Safe 后台,新建 Safe 金库
2、输入金库名称选择 Bitcoin 网络
3、钱包选择 Bitcoin Core

选择 Bitcoin Core 来管理 Safe 金库,需要在 Bitcoin Core 钱包里创建两个钱包:
私钥钱包,管理密钥(私钥和公钥)
脚本钱包,负责多签交易、管理 UTXO
3.1 创建私钥钱包

3.2 打开内置的控制台

3.3 生成私钥钱包地址
控制台输入 getnewaddress safe legacy 生成私钥钱包地址
参数 safe:地址标签(label)
参数 legacy:必须是 legacy 格式,否则 signmessage 不支持

3.4 获取 public key
控制台输入 getaddressinfo 1LAng6tNUobkNmD86KpuHg41j9o1R8ocwS 获取 public key, 1LAng6tNUobkNmD86KpuHg41j9o1R8ocwS 是步骤 3.3 生成的钱包地址。

3.5 复制 pubkey 粘贴到 safe 后台并下一步保存:

4、设置资产共管人
添加你信任的家人、朋友或者同事为资产共管人,并设置合理的共管模式。
5、预览并创建金库
6、激活金库
6.1 解码 Safe 金库数据

从 Safe 后台复制激活页面步骤 1 脚本数据,用 decodescript 命令解码数据:

6.2 创建脚本钱包

注意必须勾选 Disable Private Keys 、 Make Blank Wallet 和 Descriptor Wallet
6.3 导入描述符到脚本钱包
控制台切换钱包至 脚本钱包,将步骤 6.1 解码出来的数据里 segwit 下的 desc 按格式 '[{"desc":"xxx","timestamp":"now","internal":false}]’ 拼接为描述符导入脚本钱包:
importdescriptors '[{"desc":"wsh(thresh(2,pk(03b08eeab9826f10b68569ff9af26ea350675e9d5cf9274c1990cfe5d7cf2b186c),s:pk(0261300cb233f092c6c2f787139624b88ea4c774e779b3a257b36a2fcf186a09a7),sj:and_v(v:pk(026e37ea6e1e9a018753e3289387306d8d605351803497021c1a7cf7e6c0a8dab6),n:older(432))))#p6vc2x03","timestamp":"now","internal":false}]'
[
{
"success": true
}
]

6.4 签名 Safe 金库数据

控制台切换钱包至 私钥钱包,按下面格式签名从 Safe 后台复制激活页面步骤 3 数据:
signmessage 1Gz4GoSjNV8MxLFt8bE8JTfqJp6b2bXhvZ APPROVE:c09c6f5f-4461-46a2-a172-4cd970aab955:bc1qpuecw70lwz5jxway09qtjymw7lm0t36jfdymkqddv6a2m8vgvnwqfnt0pq
IOs73u6gnEy9hIIH6zpEXLtaQncAUYkCk6hV8LQxwdxvQz3jOLbEDXJpo669P6sXQVHHpmnlbDbt22HHdgigeYs=
注意 signmessage 第一个参数是私钥钱包的地址。
6.5 激活钱包
复制 6.4 签名后的数据到激活页面步骤 5 输入框,点激活按钮:

等待约 30 秒钟 Safe 金库激活成功,控制台切换钱包至脚本钱包,你可以通过以下命令检测 Safe 金库的充值地址是否和脚本钱包的地址一致:
$ getaddressesbylabel ""
{
"bc1qpuecw70lwz5jxway09qtjymw7lm0t36jfdymkqddv6a2m8vgvnwqfnt0pq": {
"purpose": "receive"
}
}

Safe 金库创建好后就可以往这个地址里充值 BTC 了。
常见问题
importdescriptors is not available for non-descriptor wallets (code -4)
创建脚本钱包的时候,需要勾选 Descriptor Wallet 。
Error: Cannot obtain a lock on data directory /User/xxx/Library/Application Support/Bitcoin.Bitcoin Core is probably already running.
可能原因是因为比特币客户端可能在后台运行,尝试在终端输入 ./bitcoin-cli stop 后再打开 Bitcoin Core GUI 。
Private key not available (code -4)
可能是因为签名激活金库时忘记切换钱包为私钥钱包。
更新于: 29/02/2024