当前位置:首页 > 通信技术 > 移动通信
[导读] 简介 多重签名技术(mulTIsig)就是多个用户同时对一个数字资产进行签名。可以简单的理解为,一个账户多个人拥有签名权和支付权。 如果一个地址只能由一个私钥签名和支付,表现形式

简介

多重签名技术(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. 往多重签名地址发送币

参与者按照合同需求往创建的多重签名地址上发送虚拟货币。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭