首页 资讯 正文

EOS 的多签账户是如何工作的?

默燃 2019年08月01日 04:41

原文由 EOS Amsterdam 团队撰写,将 EOS 账户的权限和多签讲得很清楚,非常值得一读。

多签账户通常指需要两个或多个密钥授权(一定权限),才能进行交易的账户,常用于资产的安全存储,是 EOS 非常重要的一个特性。然而,多签账户是如何工作的?如何使用不同的密钥来完成交易?自己如何设置多签账户?本文将深度解析多签账户的多个维度。

EOS 默认账户的架构

在开始介绍多签账户之前,有必要先认识一下 EOS 的默认账户结构。如果你想深入了解 EOS 账户,可以阅读我们的全面指南。如果只想学习 EOS 默认账户结构方面的问题,请阅读以下内容。

每个 EOS 用户都或多或少拥有一个或多个账户。EOS 账户是人类可读的身份标识,存储在区块链上,任何账户上的有效交易都要求记录到 EOS 区块链上。

EOS 账户由 12 个字符组成,可含有 a-z 的英文字母和 1-5 的数字。这些账户名取代了在大部分加密货币世界里冗长复杂的钱包地址。

每个 EOS 账号都有对应的权限。权限指的是完成交易所需要满足的条件。每个权限都有与之关联的具体操作。默认的 EOS 账号有 2 个权限:

  • Owner:象征了账户的拥有权。改变账户拥有权需要该权限的许可。鉴于大部分工作无需用到此类私钥,该私钥最好离线保存。

  • Active:用于转账,节点投票,及其他高级别账户变动。

除了这两种权限,用户还可以创建新的常规权限,以满足自身需求。

每个权限均有与之关联的密匙,反之亦然,并且每个权限都有相应的权重。交易均需要在满足权限的情况下进行。

6FzIXP9VaJEXZ8mUyuXdOt6mbgyx4NipFLZbDsKZ.png

上图展现了 EOS 默认权限结构 (来源:EOSIO 开发者网站)

为了帮助你更好地理解,我们将 EOS 默认权限结构总结为上图。 owner 权限的默认阀值为 1 ,对应一个权重为 1 的密钥。active 权限也一样,默认阀值的权限为 1,对应一个权重为 1 的密钥。也就是说,在进行需要 owner 或 active 权限认可的交易时,只需 1 个 对应 owner 或 active 权限的密钥即可。

和 owner 权限对应的密钥常被称为  owner key。

和 active 权限对应的密钥常被称为 active key。

多签 EOS 账户是如何运行的

在清楚 EOS 账户默认的组织构架后,我们能够更好地学习 EOS 的多签。多签账户与默认账户类似,主要的差别体现在权限架构上。在默认的 EOS 账户中,所有权限的默认阀值均为 1,与权重为 1 的密钥相关联。然而,在 EOS 多签账户内,权限的阀值可为 2 或者更高,可有多把权重不一的密钥。这也意味着 EOS 多签账户内的任何交易都需要多把密钥的签名。

Dky0mVxxU3i5Its7Go8pUthCyvYMYPpKmxwUn9ZR.png

上图展现了多签权限结构(来源:EOSIO 开发者网站)

上图展现了多签权限结构,和默认账户相似,多签账户同样有 owner 和 active 两种权限。

但是,在多签账户内,owner 权限的阀值为 3,有 3 个密钥。来自 John 账户的 active 密钥的权重为 2,来自 Bob 账户的 active 密钥的权重为 1,来自 Stacy 账户的 active 密钥权重也为 1。也就是说,一笔交易,需要 John 的密钥和 Bob(或 Stacy)的密钥共同签署,才能执行。

在多签账户内的 active 权限阀值为 2,有 3 个所关联的密钥。 John 账户中 active 密钥权重为 1,Bob 账户中 active 密钥权重为 1,Stacy 账户中 active 密钥权重也为 1。这就意味着,一笔交易,需要他们三人中的任意两把密钥共同签署,才能够执行。

创造一个 EOS 多签账号

在熟悉多签账户后,我们可以再来看看自己如何创造一个多签账户。在创造多签账户前,你需要建立一个默认 EOS 账户,然后再将其转变为多签账户。如果你还没有 EOS 账户,你可以跟着我们的指南一起来创建一个。如果你已经有 EOS 账户了,请看下文。

请注意:改变账户权限架构有可能使你的账户无法登陆,无法恢复,请谨慎操作。

我们将演示一个案例,创建一个可与朋友分享的账户。这个账户有以下权限架构:

pQqaFh28WDHVK6ixJ6VHsnW9qj0stMhVpR22CVf7.png

示例账户的权限架构(来源: EOSIO 开发者网站)

在这个例子里,owner 权限的阀值为 2,有两把密钥 —— 一把是你的 active key,一把是你朋友的 active key,两把私钥的权重均为 1。这就意味着,一笔交易执行,需要你们二人的 active key 共同签署。

active 权限的阀值为 1,有两把密钥 —— 一把是你的 active key,一把是你朋友的 active key,两把私钥的权重均为 1。这就意味着,一笔交易只要你或者你朋友的任意一把active key签署了,就可执行。

下面我们来升级权限结构,把这个账户升级为多签账户。我们会在这个教程中使用到 EOSToolkit。请浏览 “高级权限” 页面,点击这里。在页面上方左侧点击 “Attach Account” (添加账户)来链接你想要升级的账户,并通过 Scatter 验证链接。

xJlCBp9XEpoKvXXujqsiRC0NWvmHdnATR7WXnIA1.png

升级 active 权限

首先升级 active 权限,请在表格内填入正确信息,然后点击 “Update”(升级),使用 Scatter 确认交易。在确保无误的情况下,可自由选择自己喜欢的权限架构。

pVbWD6gqcd9AbfQzq0vuQhvC0eQOmxo0SetBbRxG.png

升级 owner 权限

active 权限升级完成后,接下来可进行 owner 权限升级。请再次在表格内填入正确信息,并点击 “Update”(升级)。

为了确保无误,你可以通过区块链浏览器如 bloks.io,前往个人账号页面的 “Keys” 模块,查询权限架构。

创建、签署并提交多签交易

现在你已经成功开通了一个多签账户,你可以开始创建、签署以及提交多签交易。我们将为你解释整个操作过程。首先打开 EOSToolkit,确认你的账户已经连接并通过点击左边菜单的 “单签模式” 选项切换到 “多签模式”。

创建多签交易

现在我们来发起一笔代币转账交易。请点击左边菜单列表的“代币转账”选项。

PCLbGgCTEDTWXGqwirCyEMKqVSpC78N7unTR0iRv.png

多签交易创建第一步

正确填写信息后点击“发送”。发送者账户会自动填写。点击“发送”按钮后网页会自己跳转到“创建交易”界面,我们将在这个界面创建交易。

Z8ZsgMqHt7puRLX0PdIftLlSAFX54lJlpeDZ8gLS.png

创建多签交易

正确填写信息后,由于转账权限限制了你必须使用 active 权限。填完所有信息后点击“创建 JSON”,签署交易并下载 JSON 文件。

多签交易签署步骤

成功创建订单后,我们需要登录账户进行交易签署。打开 “交易签署” 界面,确认你的 Scatter 账户接入无误后,加载刚刚创建的 JSON 交易文件。完成上述步骤后点击“签署交易”,完成后下载 JSON 签名文件

xKoBiKPX6RNSyXOO7gHSbbr10D52BUbIrfPOXjvd.png

多签交易签署

在你签署订单之后确保其他(必要的)各方都签署了交易并收集签名。随后向他们发送 JSON 交易文件(不是你刚下载的 JSON 签名文件)。通过上述步骤,你可以立即发起交易,因为达到了 active 权限阈值,但是通常来说都是其他方先签署交易。

提交多签交易

所有人签署交易完成后,将收集所有签名提交到交易网络上。如需此操作请跳转到“提交交易”页面。

Z5jTCPOJ5xMgsLkGXGnC4EdalGtVtfDbAqz6AoLT.png

提交多签交易

先载入 JSON 交易文件再添加签名文件。完成上述步骤后点击“提交交易”并确认上传。

一切顺利的话,祝贺你完成了第一次多签交易的创建、签署以及提交。

关于我们

EOS 主网创世节点。BOS 主网节点。WAX Guild 候选人。姐妹链 Europechain 合作伙伴。参与区块链项目投资,治理、跨文化合作、安全领域专家。你可以通过以下方式联系我们:

EOS节点名称: eosamsterdam

BOS节点名称:amsterdambos

WAX Guild 用户名:amsterdamwax

免责声明:EOSwriter 不为本页面内容或产品背书,我们尽全力为读者提供所能获得的重要信息。在做与本文内容相关的决策前,建议读者进行完整的独立研究分析,并为自己的决策负完全的责任。在此声明,本文非投资建议。