EOSIO开发(六)- 账户之实战篇

本文将介绍如何创建账户,以及定义账户权限。

涉及的操作有:

  • 创建账户
  • 修改账户权限
  • 修改账户权限

目标是创建一个myaccount账户,同时将账户权限定义为下面的形式:

myaccount account authorities 

屏幕快照 2018-05-05 下午12.44.15注:ac1、ac2是另外两个账户。

环境准备

以下操作基于Docker,非Docker环境请参考eos wiki本地启动方法。

docker pull eosio/eos

 

## keosd

# 启动keosd

docker run --name keosd -t eosio/eos /opt/eosio/bin/keosd

docker exec -it keosd /bin/bash

# 创建钱包

cleos wallet create

# 生成密钥对,私钥用于导入钱包,公钥用于生成账户

cleos create key

# 导入私钥

cleos wallet import <private-key>

 

## nodeos

# 启动nodeos

docker run --name nodeos -p 8888:8888 -p 9876:9876 -t eosio/eos /opt/eosio/bin/nodeosd.sh

docker exec -it nodeos /bin/bash

创建账户

语法分析

创建账户的语法定义如下:

$ cleos create account ${authorizing_account} ${new_account} ${owner_key} ${active_key}
  • authorizing_account 是为创建账户这个动作提供资金的账户。在EOS中,创建账户时需要付出一点成本,这个成本由authorizing_account来承担,在本文中使用默认的eosio账户。
  • new_account 被创建的账户。
  • owner_key 拥有new_account账户owner权限的公钥。
  • active_key 拥有new_account账户active权限的公钥。

实际操作

接下来要在keosd远程连接nodes节点创建账户,为什么要这么做呢?有下面两个原因:

1、keosd只是一个钱包客户端,并不具备创建账户的能力。 2、owner_keyactive_key必须与导入钱包的私钥相对应,否则后续账户所有需要签名的动作都无法通过权限验证。而钱包信息是保存在keosd的,nodes无法获取,因此不应该直接在nodes上创建账户。

keosd可以通过cleos -u ip:port 命令远程连接到nodos节点。

进入keosd终端操作界面,执行下面的命令:

# 远程连接到nodeos节点,创建myaccount账户 cleos -u http://192.168.1.101:8888 create account eosio myaccount <public-key> <public-key>

返回结果

 屏幕快照 2018-05-05 上午11.38.18

注意结果中的eosio <= eosio::newaccount {...},这一段的意思是执行了通过eosio账户部署的eosio合约中的newaccount action,参数是{...}

继续创建ac1和ac2账户。

# 远程连接到nodeos节点,创建ac1账户 
cleos -u http://192.168.1.101:8888 create account eosio ac1 <public-key> <public-key> 
# 远程连接到nodeos节点,创建ac2账户 
cleos -u http://192.168.1.101:8888 create account eosio ac2 <public-key> <public-key>

修改账户权限

语法分析

修改账户权限的语法定义如下:

$ cleos set account permission ${account} ${permission} ${authority} ${parent}
  • account 被修改权限的账户
  • permission 被修改的权限,如果存在则修改,不存在则新增。
  • authority 账户权限信息,定义权限拥有者(key、account)、权重(weight)、阈值(threshold)。 以JSON格式表示,示例:

{

"threshold": "uint32_t",

"keys": [{

"key": "public_key",

"weight": "uint16_t"

}],

"accounts": [{

"permission": {

"actor": "account_name",

"permission": "permission_name"

},

"weight": "uint16_t"

}]

}

  • parent permission的父权限,可选项,默认active。

实际操作

先查看myaccount账户目前的账户权限信息。

cleos -u http://192.168.1.101:8888 get account myaccount

可以看到myaccount账户在被创建后,默认分配了active和owner两个权限。 屏幕快照 2018-05-05 下午12.16.03

还记得文章开头的目标么,接下来我们要创建一个自定义权限cutome,以及修改active权限。

创建自定义权限cutome

cleos -u http://192.168.1.101:8888 set account permission myaccount custom '{"threshold" : 2, "keys" : [{"key": "EOS8EZ2yoiDvk1QsFrjtneesMM23Nk9u3v2uzxZz9iUEN7eVj2P8p","weight": "1"}], "accounts" : [{"permission":{"actor":"ac2","permission":"active"},"weight":1}]}' active

执行成功后再次查看账户信息

cleos -u http://192.168.1.101:8888 get account myaccount

成功的添加了custom权限。

 屏幕快照 2018-05-05 下午12.37.27

修改active权限

cleos -u http://192.168.1.101:8888 set account permission myaccount active '{"threshold" : 2, "keys" : [{"key": "EOS8EZ2yoiDvk1QsFrjtneesMM23Nk9u3v2uzxZz9iUEN7eVj2P8p","weight": "1"}], "accounts" : [{"permission":{"actor":"ac1","permission":"active"},"weight":1}]}' owner

查看账户信息,active权限下添加了一个权限所有者ac1。 屏幕快照 2018-05-05 下午12.40.09

至此,目标顺利达成~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值