多重签名

多重签名使用
概述
闪电比特币的多重签名机制可以实现多方共同管理资产,也可以用于第三方交易担保
表达式:

一般有 1 of 1, 1 of 2, 1 of 3, 2 of 3, 3 of 3几种模式。
1 of 3: 三个管理者中,任何一方都可以单独的处理该地址的资产。
2 of 3: 三个管理者中,必须有两方共同签署才能处理该地址的资产。
3 of 3: 三个管理者必须都签署才能处理该地址的资产。
本文就以 2 of 2的情形来介绍一下使用多重签名的方法。

全节点钱包多重签名2 of 2使用教程
1.管理者A地址:mggMgk9kV3MTi5zHZsNnZ3WwEekKQ38ZWa
A输入validateaddress <A地址>,获得公钥pubkey_A,并对外公开
Commands:
./bitcoin-cli validateaddress mggMgk9kV3MTi5zHZsNnZ3WwEekKQ38ZWa

2.管理者B地址:my5ioJEbbhMjRzgyQpcnq6fmbfUMQgTqMZ
B输入validateaddress <B地址>,获得公钥pubkey_B,并对外公开
Commands:
./bitcoin-cli validateaddress my5ioJEbbhMjRzgyQpcnq6fmbfUMQgTqMZ

3.createmultisig命令来生成多重签名地址,命令基本格式如下:

Commands:

./bitcoin-cli createmultisig 2 “[” 03ca3c9d27c8924f5c63a6090c0b735e24f5add35439bad8155a3223178a4b6d3e",“03477b6de5381586c6e4ff1b529acb3bebb7afcd44dd84e291e7af439dc95f2e95”]"

上图中的<地址C>:2N4Anxq1gjsrRPh6AkY2zp9UQSiKFzV8Z4r,就是我们生成的多重签名地址。然后将这个地址增加到钱包里,
Commands:

./bitcoin-cli addmultisigaddress 2 “[” 03ca3c9d27c8924f5c63a6090c0b735e24f5add35439bad8155a3223178a4b6d3e",“03477b6de5381586c6e4ff1b529acb3bebb7afcd44dd84e291e7af439dc95f2e95”]"

此时<地址C>,需要管理者A和管理者B同时签名,才能进行交易,也就是P2P担保地址。

4.地址A向地址C发送 10个btc的交易

交易hash为:
e06abfb139ef06afd3167cd8774636dbb74532b5b76a61b3e65759f62f145f34
此时需要管理者A和管理者B同时签名,才能收币
通过交易hash查询交易详情,确认地址吻合
Commands:
./bitcoin-cli getrawtransaction e06abfb139ef06afd3167cd8774636dbb74532b5b76a61b3e65759f62f145f34 true

5.此时B确认A已经向C发送10个币,手动生成交易并生成<16进制的交易数据>确认到币
Commands:
./bitcoin-cli createrawtransaction “[{“txid”:“e06abfb139ef06afd3167cd8774636dbb74532b5b76a61b3e65759f62f145f34”,“vout”:0}]” “{“my5ioJEbbhMjRzgyQpcnq6fmbfUMQgTqMZ”:10}”

6.B通过生成的<16进制交易数据>进行签名认证,继而生成新的<部分签名与交易数据1>
Commands:
./bitcoin-cli signrawtransaction 01ff000001345f142ff65957e6b3616ab7b53245b7db364677d87c16d3af06ef39b1bf6ae00000000000ffffffff0100ca9a3b000000001976a914c0ac996e74a3d42e3e7d5840973bb0adeacd2a5688ac00000000

Complete: false私钥签名未全部完成

7.B将新生成的<部分签名和交易数据1>,发给A,需要A来签名,生成完整签名和交易数据2
Commands:
./bitcoin-cli signrawtransaction 01ff000001c922412b9d145dc2e166554722dc493d3d4bf1b91a98ed42eea3540187c35a42000000006b48304502ec3f1d2673c003eb16f9ae5022026c629c12c9360dd81f4c46b17b21e72d22257355231c079639a81208d18b1b10121023c9367a44b0d9278c41a7f3a5885a914c0ac996e74a3d42e3e7d5840973bb0adeacd2a5688ac00000000

Complete:true表示交易完成

8.发送交易
Commands:
./bitcoin-cli sendrawtransaction + 完整签名和交易数据2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 TRON 网络中,多重签名是一种常见的安全机制,它要求至少两个或以上的账户共同签署交易才能执行。TronWeb 是一种用于与 TRON 区块链交互的 JavaScript 库,可以帮助开发者实现多重签名。 下面是实现多重签名的基本步骤: 1. 创建多个账户:首先,需要创建多个 TRON 账户,并将这些账户添加到多重签名列表中。 2. 设置多重签名参数:在创建交易时,需要指定多重签名参数。这些参数包括最小签名数、签名权重和签名账户列表。 3. 签署交易:当交易创建后,需要让所有签名账户进行签名,直到达到最小签名数。 4. 广播交易:一旦达到最小签名数,交易将被广播到 TRON 网络中执行。 在 TronWeb 中,可以使用 `TronWeb.trx.multiSign()` 方法实现多重签名,该方法接受以下参数: - `transaction`:要签名的交易 - `privateKeys`:签名账户的私钥数组 - `callback`:签名完成后的回调函数 以下是一个示例代码,展示了如何使用 TronWeb 实现多重签名: ``` const TronWeb = require('tronweb'); const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io', solidityNode: 'https://api.trongrid.io', eventServer: 'https://api.trongrid.io', privateKey: 'YOUR_PRIVATE_KEY' }); // 创建多个账户 const account1 = tronWeb.createAccount(); const account2 = tronWeb.createAccount(); const account3 = tronWeb.createAccount(); // 将账户添加到多重签名列表中 const multisigAddress = tronWeb.address.fromMultiPubKeys( [account1.publicKey, account2.publicKey, account3.publicKey], 2 // 最小签名数 ); // 创建交易 const transaction = await tronWeb.transactionBuilder.sendTrx( 'TO_ADDRESS', 1000000 ); // 设置多重签名参数 transaction.setMultisig(multisigAddress, 2); // 签署交易 const signedTransaction = await tronWeb.trx.multiSign( transaction, [account1.privateKey, account2.privateKey], (err, res) => { if (err) { console.error(err); } else { console.log(res); } } ); // 广播交易 const result = await tronWeb.trx.sendRawTransaction(signedTransaction); console.log(result); ``` 注意,这只是一个简单的示例,实际应用中需要进行更多的安全检查和错误处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值