概述
比特币的多重签名机制可以实现多方共同管理资产,也可以用于第三方交易担保。
多重签名最多支持三方共同管理一个地址的资产。按照比特币wiki上的表述方式,称之为:
1 of 3: 三个管理者中,任何一方都可以单独的处理该地址的资产。
2 of 3: 三个管理者中,必须有两方共同签署才能处理该地址的资产。
3 of 3: 三个管理者必须都签署才能处理该地址的资产。
本文就以 2 of 3的情形来介绍一下使用多重签名的方法。
制作多重签名地址
首先,制作多重签名地址用到比特币钱包的API. 熟悉命令行的读者可以直接在“命令提示符”窗口里运行bitcoind调用相应的命令。可能大部分读者对“命令提示符”并不熟悉,所以本文用“比特币核心”钱包的调试窗口来演示。
要制作多重签名地址,首先需要参与管理的三方提供各自的公钥。
管理者1:
首先,打开“比特币核心”钱包。点击“帮助”->”调试窗口”,在弹出的“Debug window”窗口点击“控制台”。进入图1控制台的界面:
createmultisig命令来生成多重签名地址。首先,看一下该命令的基本格式:
我们可以向该地址中汇两笔钱,用于测试。如图5(收款成功)
接下来,我们要演示从多重签名地址付款。我们设置的是2 of 3的模式,就是说,三个管理者中,持有任意两人的私钥便可付款。我们假设现在持有的是管理者1和管理者3的私钥。
管理者1
使用listunspent,结果如图(图6地址上的交易信息):
1KfqXpdhdtSqhACSeMvNoFSeXFGV5j8PkT,找零地址为:18eHb5P7N4ZAKURetN6pjF1jTGdD3HThrj
首先,我们需要记录第一笔交易的如下几个参数:
第二步:构建交易单:
第四步:用第二个私钥签名:输入命令:
第五步:发送交易单
将上一步的输出hex部分,用sendrawtransaction命令发送到网络上:
如果您读到了这里,首先感谢您的耐心。上面的命令确实让人抓狂。再加上windows下各种符号的兼容问题,笔者测试时几乎吐血了。幸运的是在开源社区,已经有了很多方便的脚本工具。这里,笔者修改了一个开源代码,可以方便大家进行多重签名地址的创建和消费。代码地址在:https://github.com/johnsondiao/blackboard101https://github.com/johnsondiao/python-bitcoinrpc脚本是用python写的。首先需要安装python2.7.6。安装方法这里不再赘述。python-bitcoinrpc是一个bitcoin的库文件,需要对其中的setup.py文件运行
然后,在比特币钱包的路径(wallet.dat所在的目录)里添加bitcoin.conf文件。
文件内容如下:
wbn_multisigs_pt2_spend-funds.py脚本用来发送多重签名地址的币。
具体的使用方法,就不再说明了,可以用python的IDLE来运行调试。构建多重签名地址的运行截图如下:
免责声明:本文转载自壹比特,不代表呐喊推文立场,且不构成投资建议,请谨慎对待。
版权声明:作者保留权利,不代表呐喊推文立场。