主页 > imtoken注册流程 > 谈谈EOS钱包、账户和权限

谈谈EOS钱包、账户和权限

imtoken注册流程 2024-01-26 05:14:59

本文主要介绍EOS钱包、公私钥、账户之间的关系。 它还提供了对 EOS 帐户权限模型的深入分析。

在介绍EOS账户钱包和账户体系之前,我们先了解一下BTC和ETH的账户体系。

比特币钱包最简单,它采用地址+私钥+UTXO的模型

不同于比特币钱包的UTXO,以太坊钱包是基于账户体系的,看起来更像我们传统的账户体系,有账户和余额的概念。 当然以太坊钱包也有Address(钱包地址)和私钥。 值得一提的是,以太坊账户分为两种,一种是个人账户比特币采用的账户模型是什么,一种是合约账户。 个人账户也拥有私钥的个人控制权,包括转账、发布合约、调用合约等。 合约账户由合约代码控制。 您需要调用合约代码对合约账户进行操作,如为合约充值、转移合约资产等。 等待。

我们来看看EOSIO中是如何定义钱包、账户、公私钥的关系的:

客户端:也可以称为节点。 在任何 PC 上运行 nodeos 程序都会自动运行一个节点。 每个节点可以创建多个钱包

使用以下脚本创建钱包

cleos wallet creat -n {wallet_name}

密钥:分为公钥和私钥。 私钥用于签名,公钥用于创建账户,一个公钥可以创建多个账户。

比特币采用的账户模型是什么_比特币账户注册bitcoin_莱特币和比特币是通用货币吗

cleos create key
Private key: 5KUvPZsZHPjvKaakkrHMR36xNXsErPmM1h1nD3NwjCAaCfNDxQj
Public key: EOS5VUHtJb2PTpgvxEhjJ9r6pvgHfFuKeDNPHiwjDu9ZBsgCYnYM8

这里需要注意的是,EOS的公钥都是以“EOS”开头

钱包:钱包用于存放账户的私钥。 一个钱包可以导入多个私钥。 同时,钱包本身有一个密码,可以解锁钱包。 没有钱包密码,无法解锁钱包,无法获取操作账户的私钥。

通过以下脚本将私钥导入钱包

莱特币和比特币是通用货币吗_比特币采用的账户模型是什么_比特币账户注册bitcoin

cleos wallet import -n {wallet_name} {private_key}

账户:不同于比特币和以太坊的账户体系,EOS账户是由两个公钥生成的,分别代表Owner权限和Active权限。 这也是EOS账户可以实现复杂权限控制的原因(后面会详细讲解EOS账户的权限模型)。 需要注意的是,EOS 账户和钱包之间没有从属关系。 他们是平行的,各司其职。 账户用于转账、发行和调用合约,而钱包知识用于存储账户的私钥。 钱包存储在本地节点上,而账户存储在区块链上。

使用以下脚本创建一个帐户

cleos create account {creater} {account_name} {key_1} {key_2}

其中,{creater}是为本次创建动作支付EOS的账户,公钥1和公钥2是两个不同权限的密钥对的公钥。

综上所述,无论是比特币、以太坊还是EOSIO,在生成钱包和账户之前,都必须生成一对密钥,只是生成的算法可能不同。 所以秘钥是区块链账户体系的核心。

比特币采用的账户模型是什么_莱特币和比特币是通用货币吗_比特币账户注册bitcoin

不过,大家可能也发现了,EOS的账户体系显然要比BTC、ETH复杂的多。

下图是EOS账户和钱包的关系图

比特币账户注册bitcoin_比特币采用的账户模型是什么_莱特币和比特币是通用货币吗

EOS账户权限控制

下面我们来看看EOS是如何实现一个复杂的权限控制模型的。 在了解账户权限之前,我们首先要了解什么是EOS智能合约。

我们先来看一下EOSIO的智能合约的官方定义

动作和自动动作处理程序的组合是 EOS.IO 定义智能合约的方式。

可以看出,EOS.IO的智能合约实际上是一系列动作的组合,以及这些动作的自动处理。

比特币账户注册bitcoin_莱特币和比特币是通用货币吗_比特币采用的账户模型是什么

从编程的角度来看,一个动作(Action)是一个接口,一个处理(Handler)是一个实现(程序)。 其实这很像以太坊的智能合约。 所以在EOS中,账户(Account)其实只是一个特殊的合约,也是由Actions和Handlers组成的。

回到EOS账户的权限控制,EOS通过以下三个步骤实现了对账户权限的精准灵活控制。

一、账号权限分类

EOS将账户(Account)权限分为以下几个级别

Owner:最高权限,可以修改其他级别的权限 Active:合约权限,可以执行合约级别的所有权限 Recovery:用于恢复账户使用权。 其他:其他自定义权限级别。

以下是EOS白皮书中EOS账户权限等级示意图

![](/images/2018/09/permission-group-1.png "_2-Smart contract-action-grouping"> 2.智能合约Action分组

同样,我们来看一张EOS官方白皮书中的图:

比特币账户注册bitcoin_莱特币和比特币是通用货币吗_比特币采用的账户模型是什么

![](/images/2018/09/action-group.png "_3-用户权限与智能合约的映射-action-"> 3. 用户权限与智能合约Actions的映射

在对账户Permision进行分级,对智能合约的动作进行分组后,我们需要映射出对应的动作(Actions)需要什么样的权限(Permissions),从而控制账户的权限。这里我们还是从给出的图来分析在EOS官方白皮书中

莱特币和比特币是通用货币吗_比特币账户注册bitcoin_比特币采用的账户模型是什么

从图中可以看出,合约有两组权限映射:

将整个合约的所有Actions(@EXCHANGE.CONTRACT)映射到@user/FAMILY权限级别,将@EXCHANGE.contracts/WITHDRAW(取款)权限映射到@user/LAWYER。

这样@user/LAWYER可以取现,但是不能交易,而@user/FAMILY既可以取现又可以交易。

需要注意的是,一个Action的权限映射的判断也是自下而上的。 比如我要判断@user/FAMILY是否有@EXCHANGE.CONTRACT/BUY权限,判断过程如下:

检查@EXCHANGE.CONTRACT/BUY是否映射到@user/FAMILY或@user/FAMILY/FRIEND 如果1返回false,继续检查@EXCHANGE.CONTRACT.TRADE组是否映射到@user/FAMILY或@user/FAMILY /FRIEND 如果2返回false,继续寻找@EXCHANGE.CONTRACT是否映射到@user/FAMILY或者@user/FAMILY/FRIEND,如果还是找不到,说明没有权限

至此,我们梳理了EOS账户权限、钱包、秘钥、账户之间的关系。 当然比特币采用的账户模型是什么,这些都是个人理解。 如果您有不同的理解,欢迎不吝赐教,互发邮件。

yangjian102621@gmail.com