多签名 (Multisignature)
Namada上的多签名账户(Multisignature accounts on Namada)
多签名账户(多签)是Namada上允许多个签名者的账户。拥有多签账户有许多好处,包括但不限于:
增加安全性
共享钱包的能力
更好的恢复选项
因此,默认情况下,Namada上的所有账户都是多签名账户。
初始化多签名账户(Initialising a multisignature account)
在创建账户之前,用户必须生成至少一个将用于签署交易的加密key
。
以下方法将生成此类密钥:
namadaw key gen \
--alias my-key1
也可以生成第二个密钥(对于多签名很有用):
namadaw key gen \
--alias my-key2
还可以生成一个隐式地址:
namadaw address gen \
--alias my-address
通过以下方法在Namada上初始化账户:
单签名账户(单个签名者)
namadac init-account \
--alias my-multisig-alias \
--public-keys my-key1 \
--signing-keys my-key1
多签名账户(至少2个签名者)
namadac init-account \
--alias my-multisig-alias \
--public-keys my-key1,my-key2 \
--signing-keys my-key1,my-key2 \
--threshold 2
提交多签名交易(Submitting a multisignature transaction)
要提交多签名交易,首先必须构建离线交易。
构建离线交易
对于v0.23.0,离线交易构建存在某些限制。请注意可能出现的任何错误。
--dump-tx参数允许用户执行此操作。需要指定一个文件夹,以便在其中转储交易。
--dump-tx
参数允许用户执行此操作。需要指定转储交易的文件夹。
mkdir tx_dumps
可以通过以下方法完成此操作:
namadac transfer \
--source my-multisig-alias \
--target some-established-account-alias \
--token NAM \
--amount 100 \
--signing-keys my-key1 \
--dump-tx \
--output-folder-path tx_dumps
这意味着交易已被构建,并准备好进行签名。
在指定的文件夹内,将创建一个.tx
文件。此文件包含交易字节的十六进制表示。可以使用此文件对交易进行签名。
签署交易
下一步是签署交易。可以通过以下方法使用my-key1
签署交易:
namadac sign-tx \
--tx-path "<path-to-file>" \
--signing-keys my-key1 \
--owner my-multisig-alias
这意味着签名已保存到此文件中(位于当前目录中)。
让我们将其保存为别名:
export SIGNATURE_ONE="offline_signature_FB7246E3FC43F59D8AEEC234EBFDB9DF1AC9BB7B14E536D05A7E2617CA41D4CD_0.tx"
确保使用至少k-of-n个密钥签署交易,其中k是提交交易所需的最少签名数量,n是密钥的总数。在此示例中,k=2且n=2。
然后假设这个签名产生了另一个签名,我们将其保存到别名SIGNATURE_TWO
。
提交交易
最后一步是提交交易。可以通过以下方法完成此操作:
namadac tx \
--tx-path "tx_dumps/a45ef98a817290d6fc0efbd480bf66647ea8061aee1628ce09b4af4f4eeed1c2.tx" \
--signatures $SIGNATURE_ONE \
--signatures $SIGNATURE_TWO \
--owner my-multisig-alias \
--gas-payer my-key1
更改多签名阈值(Changing the multisig threshold)
可以更改账户的多签名阈值。可以通过以下方法完成此操作:
namadac update-account \
--address my-multisig-address \
--threshold 1 \
--signing-keys my-key1,my-key2
可以通过运行以下命令来检查阈值是否已正确更新:
namadac query-account \
--owner my-multisig-address
这将产生阈值1,连同两个公钥。
更改多签名账户的公钥(Changing the public keys of a multisig account)
可以更改多签名账户的公钥。通过以下方法完成此操作:
namadac update-account \
--address my-multisig-address \
--public-keys my-key3,my-key4,my-key5 \
--signing-keys my-key1,my-key2
这将把多签名账户的公钥从my-key1
和my-key2
更改为my-key3
、my-key4
和my-key5
(假设它们存在于钱包中)。
提供给--public-keys
参数的公钥将成为多签名的新签名者。列表必须是由逗号分隔的公钥列表,没有空格。列表中必须至少有1个公钥,列表的长度必须至少为多签名账户的阈值。
视频教程(A video tutorial)
跳过所有无聊的阅读并观看视频教程:
Last updated