3.7.1 账户、钱包和密钥的关系
如图所示,右边是EOS Wallet钱包,里面只存放私钥及由该私钥产生的公钥(公私钥对),而且钱包有一个密码,需要输入密码才能解锁钱包,读取私钥。钱包和账户没有直接的关系左边是EOS Account账户,可以把它看成是一个保险箱,里面有EOS Token以及智能合约,而需要转移里面的EOS Token(或者执行智能合约),你需要钱包中对应的私钥来解锁这个保险箱。
创建一个账户的命令是:cleos create account {创建者账户名} {新的账户名} 公钥1 公钥2
其中{创建者账户名}是为这个创建动作支付EOS的账户,公钥1和公钥2分别是两个不同权限的密钥对的公钥。
所以把权限系统加上,图就变成上面这个样子,一个保险柜有两个开关,不过打开后可以进行操作的权限是不同的。2个私钥可以存在一个钱包里,也可以如上图所示存在不同的钱包里(由不同的人控制)。
owner权限是账户的最高权限,可以修改其它权限。
active权限默认可以进行转账等操作,但不能修改权限。
每个保险箱有一个名字,就是EOS账户名。
转账和智能合约等操作的执行都是在Account这个保险箱进行,所以账户名在EOS世界其实是以太坊的地址。与以太坊不同,EOS的账户名不再是一串很长很长的地址,而是一个你可以自定义的英文字母+数字(12345)+符号(.),最长12位,最短1位,全局唯一,先到先得,注册费用还没公布,但据最新的消息,长度不同注册需要的EOS也不一样。
3.7.2 账户、钱包、token、合约、活动、权限、权重、阀值的关系
1、创建帐户,首先要创建帐户的公私钥对,公私钥对可以代表对应该账号下的某个权限的权重。帐户使用公私钥对事物进行签名操作,让区块链节点确定事物中的活动是由某帐户的哪个权限授权的。
2、帐户可以部署、加载合约,所以合约是属于某个帐户的,在EOS系统中1个帐户只能有一个合约。
3、Token是由帐户创建和发行的,发行的Token属于帐户。帐户拥有Token,并且可以通过eosio.token合约中定义的活动转账给其他账户。
4、帐户的公私钥对是存放在钱包中,钱包仅仅是一个有名字有密码的公私钥对的容器。
5、一个实际用户可以创建多个帐户,用户通过钱包中的公私钥对管理对哪个账户的哪个权限授权用于执行某个合约中的动作。
6、一个用户可以拥有多个钱包,账户和钱包没有直接的所属关系只有使用关系即某个账户使用了某个钱包存放了自己的公私钥对。
7、一个keosd钱包服务可以管理多个命名钱包,用户可以通过钱包服务提取钱包中的公私钥对其发起的事务进行签名。
8、一个用户可以开启一个或者多个keosd钱包服务。
9、一个钱包中可以存放零个或者多个密钥对。
10、一个帐户可以拥有多种权限。
11、每一个权限都有一个使用该权限的阀值。
12、每一个权限都可以由一对或者多对密钥及对应的权重来控制权限的使用。
13、每一个密钥都会有使用某权限的权重,当拥有的密钥对应的权重累计大于等于阀值即可使用该权限。
14、每个对某个账户的某个活动都会需要对应的账户的权限使用授权。
15、一个合约中可以定义多种不同的活动,账户调用对应的合约来执行不同活动。
3.7.3 总结
综上,我们通过一些列问题的问答来理解账户、钱包、token、合约、活动、权限在EOS中的作用。
问答如下:
1、EOS系统中的主体是什么?答:账户
2、有了账户能做什么?答:做事务
3、怎么做事务?答:通过合约
4、合约包含哪些依赖元素?答:(1)账户 (2)权限 (3)token
5、权限是什么?怎么管理?答:公私钥对,通过钱包管理
6、什么是token,怎么使用? 答:做事物占用了系统资源,需要花费gas(token)。
为了更好理解上述概念,我们不妨举个生活中的例子:
生活中有这样的三口之家,爸爸、妈妈、小孩
- 他们所居住的房间我们看作一个账户,房间都有一个唯一的且可被人为识别的地址(账户名称),例如:某某小区12#1201
- 房间里有很多设施设备(电视、电脑、空调.......),我们把不同设备具有的功能看作智能合约里定义的活动功能
- 如果小孩想看电视(执行合约的动作),需要进入房间的授权(账号权限),能不能进入房间由是否持有爸爸或者妈妈的钥匙(公私密钥)决定。
- 爸爸、妈妈的钥匙存放在各自的有密码的钥匙包(钱包)里。
- 小孩在得到爸爸或者妈妈的要钥匙后(授权),就可以打开电视并收看(执行合约)。
- 看电视需要缴纳电费(token),电费是按照房间地址(账号名称)收取的。
链接
3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系-wx5ca1790914ac4的博客-51CTO博客
3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系 - arm_snow的博客 - CSDN博客