4.帐户
EOS.IO软件允许使用唯一的长度为2到32个字符的可读的名称来实现对帐户的引用。该名称由帐户的创建者自行选择。所有帐户必须在创建时必须充入最小的帐户余额以支付存储帐户数据的费用。帐户名称还支持命名空间,因此帐户@domain的所有者是唯一可以创建帐户@user.domain的用户。
domain: n. AC 〔活动、兴趣或知识的〕领域,范围,范畴 | 〔尤指过去的〕领地,领土,版图 | 〔函数的〕定义域;
EOS IO软件允许用户自己创建账户名称。同时必须冲入最小的账户余额以支付存储账户数据的费用。
在去中心化的情况下,应用程序开发人员将支付创建帐户名义上的成本以注册新用户。通常企业已经以广告和免费服务等形式为获取每个客户花费了大量资金。相比之下,创建新的区块链帐户所需的资金成本是微不足道的。并且幸运的是,没有必要为已经由另一个应用程序注册的用户创建帐户。
在去中心化的情况下,应用程序开发人员将支付创建账户名义上的成本以注册新用户。
消息和消息处理程序
每个帐户可以将结构化消息发送到其他帐户,并且可以定义消息被接受后的处理脚本。EOS.IO软件为每个帐户提供其自己独有的数据库,只能由自己的消息处理程序访问。消息处理脚本还可以向其他帐户发送消息。消息和自动的消息处理程序的组合正是EOS.IO定义智能合约的方式。
每个账户可以发送结构化信息到其他账户,定义信息被接受后的处理脚本。
基于角色的权限管理
权限管理主要涉及明确特定的消息是否被正确授权。权限管理的最简单形式是检查事务是否具有所需的签名,但这隐含着所需的签名是已知的。通常权力是与可以分类的个人或个人群组绑定在一起的。EOS.IO软件提供了一个声明式权限管理系统,可以让帐户细粒度和高级别地控制谁在何时能够做什么。
至关重要的是,身份认证和权限管理被标准化实现,并与应用程序的业务逻辑分离。这使得开发某种工具以通用方式管理权限成为可能,并为性能优化提供了巨大的空间。
每个帐户都可以通过其他帐户和私钥的任何加权组合来控制。这种机制创建了一个能够真实反映权限在现实中的组织情况的层次化权限结构,并使得多用户对资金的控制比以往任何时候都更容易。多用户控制是提升安全性的最重要因素,如果能正确地使用,可以极大地消除黑客盗窃的风险。
EOS.IO软件允许帐户可以定义与其他帐户密钥的“and”和“or”的组合,并且把这个组合以将特定类型的消息发送到另一个帐户。例如,可以为用户的社交媒体帐号提供一个密钥,另一个用于交易。甚至用户可以给予其他帐户许可让其代表自己的帐户行事,而无需向其他帐户分配密钥。
命名权限级别
使用EOS.IO软件,帐户可以定义命名权限级别,每个权限级别可以从更高级别的命名权限派生。每个命名权限级别定义一个权力,这个权力可以是其他帐户的密钥和(/或)命名权限级别组成的多签名检查的阈值。例如,帐户的“朋友”权限级别可以设置为帐户能被其任何朋友帐户平等地控制。
另一个例子是Steem区块链,其具有三个硬编码命名的权限别:owner,active和posting。P*osting权限只能执行诸如投票和发布等社交行为,而active权限可以做除了更改所有者的所有事情。owner*权限实质是被保留了起来,它能够做所有一切。EOS.IO通过允许每个帐户持有者定义自己的权限层次结构以及动作的分组来实现类似的管理理念。
命名消息处理程序组
EOS.IO软件允许每个帐户将自己的消息处理程序以命名嵌套的方式予以组织。这些命名的消息处理程序组可以通过配置其权限级别被其他帐户引用。
最高级别的消息处理程序组是处理帐户名称的程序组,最低级别的消息处理程序组是处理该帐户正在接收的单独消息类型的程序组。这些程序组的引用格式为:@accountname.groupa.subgroupb.MessageType。
在这种模式下,可以将创建和取消订单的交易合约与存取款的交易合约分离。这种交易合约的分组对用户使用交易合约提供了较大便利。
权限映射
EOS.IO软件允许每个帐户定义任何帐户的命名消息处理程序组与其自己的命名权限级别之间的映射。例如,账户持有人可以将账户持有人的社交媒体应用程序映射到帐户持有者的“朋友”权限组。通过此映射,帐户的任何朋友都可以和帐户持有者一样,在帐户的社交媒体上发布内容。即使他们将作为帐户持有者发布,他们仍然会使用自己的密钥来签名。这意味着总是可以辨别出来哪些朋友以何种方式使用了其帐户。
权限评估
当从@alice到@bob传送“Action”类型的消息时,EOS.IO软件将首先检查@alice是否为@bob.groupa.subgroup.Action定义了权限映射。如果没有找到任何结果,那么将会检查@bob.groupa.subgroup,然后是@bob.groupa,最后是@bob的映射。如果此时仍然没有找到匹配的结果,那么假定的映射将是命名的权限组@alice.active。
一旦识别出权限映射,则启动多签名阈值校验过程。如果校验成功,所命名的权限将与关联的权限建立关联。如果失败,那么它会遍历父权限,最终遍历到其所有者的权限@alice.owner。
默认权限组
该技术还允许所有帐户都有一个可以做所有事情的“owner”权限组,和一个除了更改所有者组之外可以执行所有操作的“active”权限组。所有其他权限组均派生自“active”权限组。
权限的并行评估
权限评估是个“只读”的过程,即使在事务过程中对权限进行了修改,在运行到区块结尾时这种修改也会失效。首先,这意味着所有事务的所有密钥和权限评估可以并行执行。其次,这种机制意味着可以快速验证权限,而不需要考虑启动可能回滚的昂贵的应用程序逻辑。最后,这意味着当挂起的事务继续执行时,事务权限的评估可以继续执行,而无需重新执行。
这么设计考虑的主要原因,是因为权限验证占据交易验证的很大计算量比例。使之成为一个只读和可并行化的过程,可以显着提高性能。
当区块链消息被重放,来从消息日志中重新生成确定状态时,并不需要再次评估权限。事务被包含在一个已知的状态良好的区块中的事实使其可以跳过这个步骤。这极大地减少了重放之前的区块链数据相关的计算量。
有强制延迟的消息
时间是安全的关键组成部分。在大多数情况下,在私钥被使用前不可能知道其是否已经被盗用。基于时间的安全机制在人们使用一些特殊类型应用程序时更为关键,这些应用程序需要将密钥保存在连接到互联网的人们日常使用的计算机上。EOS.IO软件支持应用程序开发者指定某些消息在包含在区块后,实际应用之前必须等待一段比较小的时间段。在此期间,这些消息可以被取消。
当这类消息被广播时,用户可以通过电子邮件或短信收到相应通知。如果他们不授权该消息,那么他们可以登录其帐户来还原帐户数据并撤回消息。
所需的延迟取决于操作的重要程度。支付一杯咖啡可以毫不拖延地在几秒钟内确认,而买房子可能需要72小时清算周期。将整个帐户转移到新的控制者手上可能最多需要30天。具体延迟的选择取决于应用程序开发者和用户。
密钥被盗后的恢复
EOS.IO软件为用户提供了一种在密钥被盗时恢复其帐户控制的方法。
帐户所有者可以使用在过去30天内活动的任何其批准的帐户恢复合作伙伴的密钥,在其帐户恢复合作伙伴的允许后,重置其帐户上的所有者密钥。在没有帐户所有者的配合情况下,帐户恢复合作伙伴无法重置其帐户的控制权。
对于攻击帐户的黑客而言,由于其已经“控制”该帐户,因此尝试执行恢复过程没有任何收获。此外,如果他们的确进行恢复的过程,那么恢复合作伙伴可能需要身份认证和多因素认证(如电话和电子邮件)。这或者会暴露黑客的身份,或者黑客在恢复过程中毫无所得。
这个过程与简单的多重签名机制有极大的不同。通过多重签名的交易,会有一个对象会执行并参与每一个交易;而通过恢复过程,恢复过程的操作者仅参与了恢复的过程,并没有权力参与日常的交易。这极大降低了相关参与者的成本和法律责任。
作者:大圣2017
链接://www.greatytc.com/p/f65bf7691482
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。