账户
EOS 账户是用于持有 EOS 代币、资源、权限等的数字容器。
智能合约也部署在账户之上,账户所有者可以控制智能合约,除非 控制权被放弃。
账户名
EOS 账户有人类可读的名称。
但是,为了在区块链上保持账户名称的有效性,有一些限制:
- 所有字符必须为小写
- 每个名称的长度必须为 12 个字符(或更少,带有后缀/高级名称)
- 只有字母
a-z
,数字1-5
,和句点 (.
) 是支持的字符。 - 名称不能以数字或句点开头。
- 名称不能以句点结尾。
周期对于 EOS 账户有特殊的含义。它们指定账户具有后缀(类似于.com之类的顶级域名),也称为高级名称。带有后缀的账户只能由后缀所有者创建。
例如,如果有人拥有后缀 .bar
那么只有那个人才能创建 foo.bar
。
正则表达式验证
以下正则表达式可用于验证 EOS 账户名:
(^[a-z1-5.]{1,11}[a-z1-5]$)|(^[a-z1-5.]{12}[a-j1-5]$)
公钥/私钥
每个EOS账户最终都由一个密钥对(公钥和相应的私钥)控制。 虽然公钥用于识别区块链上的账户并且可以公开知道,但使用的私钥 要签署每笔交易,必须始终保密。
如果您丢失了私钥,您将无法访问您的账户及其所有资产、智能合约和任何其他资产 与之相关的数据。
私钥和公钥示例:
键入 | 密钥 |
---|---|
私钥 | 5KSdyAiFzYQAtBKDBKCCF28KMMhZ4EmXUxSg8B3nSkHKutT15rY |
公钥 | PUB_K1_5d7eRKgCCiEdsbBdxxnZdFWnGYS64uWZPZgTcTU1xnB2aESxqR |
旧版公钥 | EOS5d7eRKgCCiEdsbBdxxnZdFWnGYS64uWZPZgTcTU1xnB2cq4JMD |
权限系统
EOS使用我们所谓的权限系统,为开箱即用的账户提供了额外的安全机制。
每个账户都有一组分层权限来控制该账户可以执行的操作,并且默认情况下有两个基本权限。这两个权限无法删除,因为它们是您的账户正常运行所必需的。
强制权限是 owner
和 active
。
权限只能更改控制它的内容(密钥或账户)或控制其子项的内容。它永远无法改变控制其父项的内容。
控制权限的是公钥或另一个账户。 这允许创建复杂的账户控制结构,其中多方可以控制一个账户 同时仍然对自己的账户安全拥有完全的自主权。
以下图为例,其中账户 alice
由两者控制 bob
和 charlie
,
然而 charlie
由也控制 tom
。
但请记住,所有账户最终都由密钥控制。
您可以在下方添加自定义权限 active
权限,允许您限制该权限的访问权限
只有特定合约的操作(可调用函数)。然后,该权限将只能与
您指定的合同操作。
这意味着您可以跨账户创建精细的访问权限,并拥有分层所有权和 它们的用法。
最重要的是,权限系统内置了对多重签名交易(需要多重签名的交易)的支持 由多方签署)。与权限关联的每个关联账户或密钥都分配了权重, 并且权限本身有一个阈值。
正如你在下面的例子中看到的那样, bob
光靠自己就没有足够的权力使用签名 active
许可。
他也需要 charlie
要么 jenny
与他共同签署任何交易的协议 alice@active
使。另一方面
手, charlie
和 jenny
无法单独签署交易,他们需要 bob
.
智能合约
智能合约允许您为账户添加功能。它们可以是任何东西 从诸如待办事项应用程序之类的简单事物到完全在区块链上运行的成熟RPG游戏。
每个账户都有能力部署一个智能合约,但是,该智能合约可以 随意更新和更换。
创建账户需要花费 EOS
由于 RAM 是有限的资源,因此创建账户需要花费 EOS 来购买存储所需的 RAM 账户的数据。这意味着,要创建账户,其他已经有账户的人必须 为你创建。
大多数EOS钱包都允许你自己创建一个账户,但需要你支付所需的RAM 存储您的账户。有些钱包会为你支付 RAM 的费用,但稍后会要求你偿还它们。
💰 当前成本
开设账户的成本取决于开设账户所需的内存,截至撰写本文件(2023年2月20日)
2996 bytes
。
放弃账户所有权
升级能力对智能合约开发有显著的好处,但并不总是想要的。 在某个时候,你正在建立的社区可能会要求你放弃对智能合约的控制权,然后让 它是不可变的,或者是半不可变的。
要实现这个目标,你有几种选择。
💀 别忘了密码权限!
如果您放弃账户的所有权,请不要忘记保留
eosio.code
许可 在账户上active
许可。否则,该账户将无法在区块链上执行任何内联操作, 这可能会 “扼杀你的合同”。
空账户
您可以将合约账户的所有者和有效权限设置为 eosio.null@active
。这是一个 NULL
专为这些目的而设计的账户。它没有私钥或所有者。
如果你想永远消灭**这个账户的控制权,这是一个不错的选择。
制作人控制
或者,您可以设置合约账户的 owner
和 active
对三种不同类型的生产者控制(网络共识控制)账户的权限,因此,如果此合同出现问题,您可以请求生产者帮助升级合同。
如果您正在处理错综复杂的合同,这些合同可能存在可能对用户产生负面影响的错误,那么这是一个不错的选择。
eosio.prods
那个 eosio.prods
账户由网络上活跃制作的制作人中的+1人控制。这意味着,如果有21个活跃的生产者,那么你需要其中15个才能签署所有升级。
prod.major
那个 prod.major
账户由 ½ +1 控制,这意味着如果有 30 个活跃的生产者,那么你需要其中 16 个才能签署所有升级。
prod.minor
那个 prod.minor
账户由 +1 控制,这意味着如果有 30 个活跃的生产者,那么你需要其中 11 个才能签署所有升级。