Page 1
标准

EOS开发教程-3-钱包和账户

  本节课我们学习EOS的钱包和账户的相关知识。

1.钱包

  • EOS钱包只有一个用途:保存用户私钥,通过私钥可以计算出交易所需的的公钥。
-- 创建默认用户
cleos wallet create
-- 输出
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
-- 钱包默认密码
"PW5JBtZYTNwcq5XYkaXTjmT9Sgp7RK5go5M8SKVohZGJLiv2712zT"

-- 创建用户名叫user的钱包
cleos wallet create -n user
-- 输出
Creating wallet: user
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
-- 这是user的密码
"PW5JfWmCHxqHCoLJQQv7Z8zn9EdWzhHNq2EWo8cMMTPFD2QV8wayM"
-- 列出钱包中的用户
root@www:~# cleos wallet list
-- 输出,注意星号表示当前这个用户是解锁状态,只有解锁的钱包才能操作。如果操作钱包时报错说锁住了,需要用cleos wallet unlock解锁
Wallets:
[
  "default",
  "user *"
]
  • 导入Productor key到默认用户,Provider是创世链中的第一个账户,也是根账户,它的名字是eosio,在测试网中这步操作非常重要,只有导入这个key才能与区块链交互,不导入的话你会经常遇到Error 3090003。很多直翻老外的教程都没提!!!这个内容在config.ini里对应producer-name和signature-provider项,可以改成别的。
cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
-- 输出
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

2.账户

  • EOS.IO软件允许所有帐户通过长度最多为12个字符的唯一可读名称引用。该名称由帐户的创建者选择。帐户创建者必须保留存储新帐户所需的RAM,直到新帐户使用令牌来保留其自己的RAM。所以玩EOS需要花钱买邀请,不请自来是进不去的。这是和其它链比较大的区别。
  • EOS账户由Owner Key和Active Key组成,其关系与PC的管理员帐号和访客帐号的关系非常类似,管理员可以添加删除任意权限的用户,而那些创建出来的用户并不能反过来操作管理员。Owner Key相当于管理员的角色,Active Key则通过Owner Key创建并定义功能。比如我们可以创建出只能用于交易的Active Key和只能用于操作合约的Active Key。这种二元授权的方式有效的保护了Owner Key的安全性和私密性,并增加了其灵活度。
-- 创建Onwer Key
root@www:~# cleos create key
Private key: 5JBq7vT8Z86G8X7KGaLKEFdLDL7VepviZKb7ej5jkrNmBdnoJF4
Public key: EOS8YLJY11P67PZdmAobowpHRRvdn9stB8Qsb6Hw4TqgwP2A21DM2
-- 创建Active Key
root@www:~# cleos create key
Private key: 5JdZjK59iWkQNwgNpSynNEkmAuCFpUzZVG1dLPEe6y7UUzZNCjp
Public key: EOS66pKiPCw98bEQa8wLf1KQtxReMZZA9p1FTFBGKN7T6vWr12baE
-- 创建帐号,$ cleos create account ${已认证账户} ${新账户} ${owner public key} ${active public key}。在测试网中已认证账户一律是eosio,不要改成别的,否则会报错。
cleos create account eosio useraccount EOS8YLJY11P67PZdmAobowpHRRvdn9stB8Qsb6Hw4TqgwP2A21DM2 EOS66pKiPCw98bEQa8wLf1KQtxReMZZA9p1FTFBGKN7T6vWr12baE
-- 输出如果是这样,说明账户创建成功了
executed transaction: 3cf1589cfe26ac33757fece6e7cd888d7ddfb64bdfa8abc7a530fa54f4b195dd  200 bytes  875 us
warning: transaction executed locally, but may not be confirmed by the network yet
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"useraccount","owner":{"threshold":1,"keys":[{"key":"EOS8YLJY11P67PZdmAobo...

测试网账户和主网账户有几个比较大的区别:

  • 测试网的已认证账户只能是eosio,而主网可以是任意一个人的账户。
  • 测试网账户名不大于12字符即可,而主网必须是12个字符,不是技术原因造成的,而是BM要把短名字拿去出去排卖,跟qq靓号一个原理。
The end
标准

EOS开发教程-2-搭建EOS运行环境

  这节课我们将学习如何搭建EOS运行环境。首先我们需要了解一下EOS程序的结构,它由三部分组成:
1. nodeos:EOS运行节点,负责出块和提供api服务。
2. keosd:EOS的秘钥安全存储组件,和钱包有较大关联。
3. cleos:EOS命令行界面,负责与区块链和钱包交互。
  接下来我们就来搭建EOS运行环境,EOS的环境搭建有两种方式:源码编译和Docker。源码编译对运维技能要求非常高,一次编译需要几个小时,如果你的服务器缺一个组件就有可能导致整个编译的失败。如果你不想上来就把EOS玩成SOS,那么我建议你选择Docker模式。
  本教程采用Ubuntu 18.04 + Docker 17.12的服务器环境。如果你还不熟悉Linux和Docker,可以先不管他是什么,当成dos跟着本教程做即可,毕竟我们的重点是EOS本身。

1.安装Docker

-- Ubuntu命令行中输入下面命令,然后一直下一步即可
sudo apt-get update
sudo apt-get install docker-ce

2.安装EOS

docker pull eosio/eos-dev

sudo docker run --rm --name eosio -d -p 8888:8888 -p 9876:9876 -v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev  /bin/bash -c "nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --http-validate-host=false --contracts-console"

  上面的命令执行完后,控制台会输出一串16进制字符串,说明EOS已经成功安装和启动了,暂时不用管命令中的参数是什么(我未来会补充)。
  接下来打印一下EOS日志,看看是否有其它问题。

sudo docker logs --tail 10 eosio

如果输出类似这样的结果,说明一切OK:

3097501ms thread-0   producer_plugin.cpp:1087      produce_block        ] Produced block 00006b9261587354... #27538 @ 2018-07-18T05:51:37.500 signed by eosio [trxs: 0, lib: 27537, confirmed: 0]
3098002ms thread-0   producer_plugin.cpp:1087      produce_block        ] Produced block 00006b9359e8845d... #27539 @ 2018-07-18T05:51:38.000 signed by eosio [trxs: 0, lib: 27538, confirmed: 0]
3098501ms thread-0   producer_plugin.cpp:1087      produce_block        ] Produced block 00006b9426b1add8... #27540 @ 2018-07-18T05:51:38.500 signed by eosio [trxs: 0, lib: 27539, confirmed: 0]
3099001ms thread-0   producer_plugin.cpp:1087      produce_block        ] Produced block 00006b9573619a44... #27541 @ 2018-07-18T05:51:39.000 signed by eosio [trxs: 0, lib: 27540, confirmed: 0]

  好了,EOS安装完成了,看着很神秘其实很简单吧。下一节课我们将学习钱包方面的内容。

The end
标准

EOS开发教程-1-前言

  • 本系列教程面向技术人员,不涉及过多的解释什么是什么,比如什么是区块链、什么是以太坊、什么是中心化,知乎上有非常多的优秀文章解释上述内容,当前真正的痛点是如何进行EOS开发。如欲转载请先联系我,谢谢。
  • EOS已经上线主网一个多月了,和Eth怼了一个月,结果Eth没被EOS怼死,反而被FCoin怼死的,EOS反而好好的。中心化和去中心化的争议在我看来只是概念炒作,并不会影响我们这些做开发的。而无法忍受的网络拥堵问题才是我放弃Eth转而投奔EOS的原因。
  • EOS-为炒币而生,BM不但是个优秀的程序员,还是个优秀的经济学家。EOS上不但能炒币还能炒内存,而且它的权益机制充分体现了有钱能使鬼推磨。ETH上给再多gas,该堵还是堵,堵的连tx都提不上去。所以ETH目前高额的gas和超长的确认时间导致对匿名和公平需求极强的xx彩和顶级皇家xx都无法落地。写完的代码只能闲置在测试网上运行。
  • 目前EOS版本为DAWN 4.X,正式版1.10。其实网上已经有了不少EOS的教程,但是EOS继承了某国产手游引擎的优良传统,一代版本一代坑,而且绝对不会主动告诉你。所以很多2.0和3.0的教程在4.0上是跑不通的。本教程将用最新版代码实现,理论上兼容任何DAWN 4.X。
  • 如果你还不了解什么是EOS和它的特性,看下它的白皮书,谷歌翻译一下就好。
  • 下一节课开始,我们将从搭建EOS环境到实现合约进行一条龙学习。
The end