多重签名技术介绍

简介 多重签名技术(multisig)就是多个用户同时对一个数字资产进行签名。可以简单的理解为,一个账户多个人拥有签名权和支付权。
如果一个地址只能由一个私钥签名和支付,表现形式就是1/1;而多重签名的表现形式是m/n,也就是说一共n个私钥可以给一个账户签名,而当m个地址签名时,就可以支付一笔交易。所以,m一定是小于等于n的。
举几个例子:
多重签名2/3,表示3个人拥有签名权,而两个人签名就可以支付这个账户里的比特币;
多重签名1/2,表示2个人可以签名,两个人拥有私钥,谁都可以来支配这笔资金。
多重签名技术的原理并不是很复杂,但它增加了第三方的介入保障,可以实现现实场景中需要第三方介入的很多的应用场景。与传统的第三方介入不同的是,这个介入必须是交易之前就提前确定好的,而事后是不能进行改变的。
流程 以下以 metaverse 元界公链 cli 命令作为演示范例。
每一个参与者通过 getpublickey 获得某个地址的公钥,该公钥对应的私钥用于签名随后创建的多重签名交易,并把该公钥告知其他所有参与者;
每一个参与者各自通过 getnewmultisig 使用自己的公钥创建签名约束条件相同(即相同的m,n以及公钥列表)的多重签名,得到相同的以3开头的多重签名地址:“支付到脚本哈希”模式 p2sh(pay-to-script-hash);
某个参与者通过 createmultisigtx 使用多重签名地址发起一笔多重签名交易;可以使用 decoderawtx 命令查看该交易详情;
m个参与者依次通过 signmultisigtx 对多重签名交易进行签名,每一个参与者通过链下的方式从前一个签名参与者获得已部分签名的交易;
通过 sendrawtx 广播拥有足够多签名的多重签名交易。
范例
该范例涉及到三个用户:test,testam 以及kesalin。
1. 获取和传播公钥
每一个参与者通过 getpublickey 获得某个地址的公钥,该公钥对应的私钥用于签名随后创建的多重签名交易,并把该公钥告知其他所有参与者。
// testam 获取公钥
命令:
./mvs-cli getpublickey testam testam mcj6vpdcysvd34xfc22fhqdlfho7ztnym2
输出:
{
address : mcj6vpdcysvd34xfc22fhqdlfho7ztnym2,
public-key : 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e
}
// kesalin 获取公钥
命令:
./mvs-cli getpublickey kesalin kesalin mhakhufwadcszvqarcmn1rkq2uropqjzwm
输出:
{
address : mhakhufwadcszvqarcmn1rkq2uropqjzwm,
public-key : 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02
}
// test 获取公钥
命令:
./mvs-cli getpublickey test 123456 mkxa7mtznagcef9vm2summts93idphyd4m
输出:
{
address : mkxa7mtznagcef9vm2summts93idphyd4m,
public-key : 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9
}
2. 创建多重签名
每一个参与者各自通过 getnewmultisig 使用自己的公钥创建签名约束条件相同(即相同的m,n以及公钥列表)的多重签名,得到相同的以3开头的多重签名地址。
范例中每一个参与者通过 -s 指定自己的公钥以及 -k 指定其他参与者的公钥创建 m:n 为 2:3 的多重签名,得到相同的多重签名地址 39hh1ny9xytkzawd8zfkxgxa7xbwqck6br
// testam 创建多重签名
命令:
./mvs-cli getnewmultisig testam testam -m 2 -n 3 -s 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e -k 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 -k 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 -d multisig test
输出:
{
address : 39hh1ny9xytkzawd8zfkxgxa7xbwqck6br,
description : multisig test,
index : 1,
m : 2,
multisig-script : 2 [ 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 ] [ 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e ] [ 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 ] 3 checkmultisig,
n : 3,
public-keys :
[
02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9,
03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e,
03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02
],
self-publickey : 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e
}
// kesalin 创建多重签名
命令:
./mvs-cli getnewmultisig kesalin kesalin -m 2 -n 3 -s 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 -k 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e -k 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 -d multisig test
输出:
{
address : 39hh1ny9xytkzawd8zfkxgxa7xbwqck6br,
description : multisig test,
index : 1,
m : 2,
multisig-script : 2 [ 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 ] [ 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e ] [ 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 ] 3 checkmultisig,
n : 3,
public-keys :
[
02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9,
03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e,
03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02
],
self-publickey : 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02
}
// test 创建多重签名
命令:
./mvs-cli getnewmultisig test 123456 -m 2 -n 3 -s 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 -k 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 -k 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e -d multisig test
输出:
{
address : 39hh1ny9xytkzawd8zfkxgxa7xbwqck6br,
description : ,
index : 1,
m : 2,
multisig-script : 2 [ 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9 ] [ 03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e ] [ 03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02 ] 3 checkmultisig,
n : 3,
public-keys :
[
02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9,
03d29f0b96f332e50d6014cb91c334214ecb8caf2881a97e7d944bdf4e5fd6a39e,
03f97e079ccae21e1ee65d5ee64e5c27d7d6ce9a867cec75e9736ad5f258329e02
],
self-publickey : 02729cae0c16009f44440f306b76fafb7a7d2503741a619c15b41ff927c1afd6b9
}
3. 往多重签名地址发送币
参与者按照合同需求往创建的多重签名地址上发送虚拟货币。

软银旗下ARM子公司推出针对自动驾驶汽车传感器的芯片
变频器无功补偿电容鼓包还能继续用吗?
华为P10:搭配EMUI5.1,双摄升级,当然价格也更高!
无线水位传感器解决方案
杭州中心支行殷兴山一行莅临华正新材智能制造基地参观调研
多重签名技术介绍
CPU、GPU 和 SoC 的高密度、模块化测试
CNC加工中出现这些问题,你懂得怎么处理吗?
联瑞Bypass网卡:筑牢网络安全“防火墙”
京东方预计与台湾林氏整合再战液晶市场
中美贸易摩擦下,鸿海计划将深圳、天津部分生产线移高雄
SWD模式调试仿真电路
智能汽车被动安全标准研究进展
实现人工智能,首先要把产品做到极致!
寒假口语练习该怎么办?讯飞翻译笔S11让孩子随时练口语
华擎实用程序安装的低端驱动器中发现多个漏洞
7大举措,保物联网智能家居安全无虞
诺基亚正式发布最新的Nokia WiFi Beacon 3分布式无线路由器产品
ABB变频器的优点 如何调节ABB变频器的频率?
后级功放哪个牌子好_后级功放六大品牌推荐