多签名 (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

请注意,在此阶段可以有任意数量的--signing-keys签署交易。这将产生多个签名,可用于提交交易。

这意味着签名已保存到此文件中(位于当前目录中)。

让我们将其保存为别名:

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

请注意,--signatures参数中没有使用逗号。这是因为该参数是一个文件列表,而不是一个签名列表。还请注意tx_dumps文件夹。这是在前一步中通过--output-folder-path指定的,交易被转储到该文件夹。


更改多签名阈值(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-key1my-key2更改为my-key3my-key4my-key5(假设它们存在于钱包中)。

提供给--public-keys参数的公钥将成为多签名的新签名者。列表必须是由逗号分隔的公钥列表,没有空格。列表中必须至少有1个公钥,列表的长度必须至少为多签名账户的阈值。


视频教程(A video tutorial)

跳过所有无聊的阅读并观看视频教程:

https://vimeo.com/873749851

Last updated