多重签名技术实践

多重签名技术实践

币学院 副船长 船龄 4年 来源 币科技
 32639  1
背景:最近币价上涨,整个圈子也出现了久违的活跃氛围。鉴于 MtGox 门头沟倒闭事件让许多人蒙受损失,在此重新呼吁大家及时将币从交易所提取出来放到自己掌控的地址里。同时建议刚接触比特币不久的币友积极学习比特币相关技术,从而避免因个人失误而丢币。本文将介绍比特币多重签名技术的原理及使用方式,希望读者能将多重签名用于实际生活之中。

比特币多重签名技术的出现,是比特币发展史上的一个里程碑。简单地说,比特币多重签名使得花费比特币时需要用多个私钥来签名验证后才会被比特币网络接受,这不仅提升了比特币的安全性(黑客需要获得足够的私钥才能够将比特币转到自己的地址),也使得许多新的商业模式得以实现。

尽管从最新的比特币富有地址排行榜上,我们可以看到不少活跃的地址都已经用上了多重签名技术,市场上如比太钱包等客户端也提供了相应的功能,但从实际的使用情况来看,大部分用户并没有将多重签名运用起来。本文将介绍一种简单可行的多重签名地址生成管理方式,希望能让大家对多重签名技术有更深刻的了解。

实践目标

通过阅读本文,读者将能够对多重签名技术的基本原理有一定的了解,并能掌握一套多重签名私钥管理以及比特币收发的方法。

准备知识

在进行多重签名实践之前,读者应该了解以下几个概念:

1、比特币私钥(Private Key)、公钥(Public Key)、地址(Address)等概念及相关的对应关系。
2、脑钱包。通过记忆中的一串字符来生成比特币的私钥,从而得到对应的比特币公钥和地址。
3、交易签名广播。只有使用相应的私钥对交易进行签名后才能广播出去并被比特币网络接受。

地址生成

如果要使用多重签名技术,首先要生成一个多重签名地址。多重签名地址通过普通比特币的公钥生成,最基本的形式就是“N 选 M”,意思是这个地址一共有 N 个私钥,而要从这个地址中转账,需要最少用 M 个私钥来进行签名。

生成脑钱包

首先,我们通过脑钱包生成三个普通比特币私钥。打开 https://brainwallet.herokuapp.com/ ,并以"multisig test"分别加上数字作为脑钱包,可以得到下面的比特币信息:


Passphrase:     multisig test1
Private Key:    5JWJgSQoc5mrYEB1VMDsEJ6jtqMvNDUFAqJWMP1HvxxdjNqyq9P
Address:        12DfP6nSw1ZCJwJiqjEYHVxwfoz2y2MKmv
Public Key:     04a2449b9a115bea654b0672f9120e2aabf34a4ca3993966ef7a8e672a7e851bd05814dccd2e2cd3471768762bcab499e74f2e12583d28faadd07a1dfbba01cae1

Passphrase:     multisig test2
Private Key:    5KjYgZgkspmbm8oz36r46ctfjYtm6tnHXWafgFw5EVQSwmHbY6v
Address:        1NtMMGv4ghA1XXVDajoNc5iJD5kj4GN2WA
Public Key:     04ae06813d9d19a6b29c873cad44d67099119ce5e7c9e36005870d1da4a76e7e87b0e36a0d581b73dd2238660e7c71466979bc8f85008331ca4377e7364cb9515d


Passphrase:     multisig test3
Private Key:    5KUDk8Sa2PuMwgBpUciRciWFe2dowaEsCGqi4Y4hULmD6C1Qkaw
Address:        1PvTMRcAcUziiHMFhB4HgVRnRe4BUodgEg
Public Key:     04434b519b4a1bf38a50c8456dca1fdd7c30d271e191d94a3e85bd72e77927b47d6844e45bf4ac7b1bea08a4bc1194e8722679fb4887d210bc1f07e494a584ba00

生成多重签名地址

相对于上面的公钥(Public Key)长长的一串字符,相信大部分用户对比特币的私钥和地址会更熟悉一些。不过对于多重签名地址生成的时候,并不需要直接了解具体的私钥,只需要有公钥信息即可。

打开网站 http://ms-brainwallet.org/ 后将上述的几个公钥地址依次输入到 Public Key (SEC) 里面,即可生成一个 3 选 2 的多重签名地址:


Address: 32YtdRmeK9Qhbr1Um2f2Vm7XRqSexukm5x

恭喜,一个崭新的多重签名地址就这样生成了! 在此建议用户刷新一下浏览器,重新试验一次并确保能够生成相同的多重签名地址。

与普通的比特币地址相比,比特币多重签名地址是以数字 3 开头,除此之外(对于用户而言)在接收比特币时并没有什么不同。用户可以使用自己常用的方式,向该地址发送小额的比特币以进行测试。

笔者向该地址发送的比特币交易信息如下:

https://blockchain.info/tx/ceb61c5f2bcc94faaf55f0edcc413ba051116e6ffa985e347309199a7b74a072

发送交易

多重签名兑换脚本

在发送多重签名的交易时,操作过程则先需要提供一个叫 Redeem Script (在生成多重签名地址的时候便一同生成)的兑换脚本,通过其生成交易信息,并用足够的私钥签名后才能被比特币网络接受。

上面地址所对应的兑换脚本如下:

Redeem Script: 524104434b519b4a1bf38a50c8456dca1fdd7c30d271e191d94a3e85bd72e77927b47d6844e45bf4ac7b1bea08a4bc1194e8722679fb4887d210bc1f07e494a584ba004104a2449b9a115bea654b0672f9120e2aabf34a4ca3993966ef7a8e672a7e851bd05814dccd2e2cd3471768762bcab499e74f2e12583d28faadd07a1dfbba01cae14104ae06813d9d19a6b29c873cad44d67099119ce5e7c9e36005870d1da4a76e7e87b0e36a0d581b73dd2238660e7c71466979bc8f85008331ca4377e7364cb9515d53ae
Address: 32YtdRmeK9Qhbr1Um2f2Vm7XRqSexukm5x

生成交易信息

点击打开“Spend”页面,即可进入多重签名交易的构造页面。首先填入上面的 Redeem Script,网页便会提示更新该地址上的交易信息,点击确认后,该多重签名兑换脚本的地址以及上面的余额将会在“Source Address”显示出来。当前地址32YtdRmeK9Qhbr1Um2f2Vm7XRqSexukm5x里面有0.001BTC

接下来只需要填写好接收地址和交易的数额(注意计算好数额和交易手续费),在“Destination Address”项目里面写上1MzziGBa7tNNzMwVJMPEjAfM1wRcvSGZu5,发送金额为0.0009BTC,最后的手续费“Fee”项目为0.0001BTC。

由于这是一个 2-3 的多重签名地址,从三个私钥中随机选择两个即可,在“Private Key”里面分别填入5JWJgSQoc5mrYEB1VMDsEJ6jtqMvNDUFAqJWMP1HvxxdjNqyq9P和5KjYgZgkspmbm8oz36r46ctfjYtm6tnHXWafgFw5EVQSwmHbY6v,点击最下面的”Resign"按钮后即可生成一个“Raw Transaction”如下:

010000000172a0747b9a190973345e98fa6f6e1151a03b41ccedf055affa94cc2b5f1cb6ce00000000fd5e0100483045022100e5089537d9cd5cd8f304ccc61dfa2e34f55dfa0136cf811a9225ee752472e8a60220065c4a66c57800c8d59fcccccf6f74f4d1d59f8689c1c55de8479e0bf0c58b1b014830450221009d3795f9e58a4de419808e7ffc534cf86859ac0603eaaa10c2a32f37615d7618022022f6604a7a539f543f84e913c4e825112204955c42a0af1f27911888c2e634cb014cc9524104434b519b4a1bf38a50c8456dca1fdd7c30d271e191d94a3e85bd72e77927b47d6844e45bf4ac7b1bea08a4bc1194e8722679fb4887d210bc1f07e494a584ba004104a2449b9a115bea654b0672f9120e2aabf34a4ca3993966ef7a8e672a7e851bd05814dccd2e2cd3471768762bcab499e74f2e12583d28faadd07a1dfbba01cae14104ae06813d9d19a6b29c873cad44d67099119ce5e7c9e36005870d1da4a76e7e87b0e36a0d581b73dd2238660e7c71466979bc8f85008331ca4377e7364cb9515d53aeffffffff01905f0100000000001976a914e65a668adb55e50f31750d36868476d1a5d70a4f88ac00000000

生成的“Raw Transaction”可通过各种支持的软件广播出去。在这里我们打开 https://blockchain.info/pushtx 网页,将上面的交易信息填入,即可完成了多重签名交易的成功发布,并得到比特币网络确认。该交易的确认信息在这里:https://blockchain.info/address/32YtdRmeK9Qhbr1Um2f2Vm7XRqSexukm5x

至此,用户应当可以自行生成比特币多重签名地址并收发交易了。请再重复以上步骤,确保生成信息一致后先以小额比特币进行收发尝试,习惯后再考虑将这作为自己的存储方式之一。

总结

本文介绍了比特币多重签名技术的基本原理及一套多重签名私钥管理以及比特币收发的方法。用户可以在了解其操作方式后,自行通过自己掌控的比特币私钥来生成多重签名地址及对交易进行签名。

比特币地址:1MCoDDY2YVJtZEaxxFgY1ppHYCKSHtTSV

补充:
强烈建议在实践时先小额进行操作,成功掌握本方法后再考虑存入大额的。
文中提及的两个网站都是可以下载下来离线环境里面使用的。
本文更多是提供一个思路,只要你有自己能够掌握的私钥,你就可以生成自己掌握的多重签名地址并收发比特币。

作者:imcoddy
作者专栏:http://www.8btc.com/author/imcoddy
  • 全部
  • 最佳
登录 账号发表你的看法,还没有账号?立即免费 注册
推荐教程
换一批
下载
咨询