学习任何的区块链,首先就需要了解其中的基本功能,而要了解基本功能当然是动手尝试一遍,但是在正式网中,很多功能是没办法测试的,或者测试成本比较高,所以就需要搭建一个测试网,可以对该测试网任意操作,并了解区块网络从初始配置,到正式上线整个流程。
eos区块链中,正式网已经被激活,运行了一段时间,手上也没有eos,那就需要搭建一个测试网络。

系统环境

ubuntu 18.04

1.源码编译程序

1.1下载源码

eos源码地址:https://github.com/eosio/eos

git下载该源码

git clone https://github.com/EOSIO/eos --recursive

1.2脚本自动编译

cd eos
./eosio_build.sh

然后

sudo ./eosio_install.sh

在eos/build/bin目录下生成程序

1.3程序拓扑


cleos:终端控制台,可通过控制keosd以及nodeos操作eos区块链
keosd:钱包管理软件,负责eos公钥、私钥对的生成,对交易进行签名,钱包的锁定以及解锁
nodeos:eos的全节点程序,完成区块的生成、同步、p2p、智能合约执行、eos的全部功能

2私有网络配置

2.1初始化程序配置

运行nodeos以及keosd,系统就会生成初始的配置文件

2.2修改keosd钱包软件配置

keosd配置文件目录为~/eosio-wallet/config.ini,

修改其中的unlock-timeout配置配置项,默认是900,单位秒,我们修改为36000000

vim /root/eosio-wallet/config.ini

修改的配置为

//keosd 的api端口8900,在cleos时应对应设置正确
http-server-address = 192.168.10.11:8900
unlock-timeout = 36000000

2.3修改nodeos节点配置

nodeos配置文件路径~/.local/share/eosio/nodeos/config/config.ini

配置文件的各个字段说明,请看文章https://blog.csdn.net/w88193363/article/details/85834743

修改为如下

bnet-endpoint = 192.168.10.11:4321
//使用cleos时,nodeos的地址选项
http-server-address = 192.168.10.11:8888p2p-listen-endpoint = 192.168.10.11:9876p2p-peer-address = 192.168.10.161:9876
p2p-peer-address = 192.168.10.13:9876
p2p-peer-address = 192.168.10.14:9876agent-name = "EOS Test Agent"enable-stale-production = trueproducer-name = eosio plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::history_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin private-key =["EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG", "5J3kr9m8oA4SdxLwGG2v8grqCsHs1ieNGWsmmAgAGq9S7hepm5H"] 

3创建密钥并导入

3.1. 创建密钥

在配置用户之前,我们需要先创建密钥分配到各个用户当中,系统用户9个,测试转账的用户3个,我们这边是单节点测试网,所以就不需要投票节点,九个系统用户共用一个密钥对。总共需要创建4个密钥对。

root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos create key --to-console
Private key: 5JEHzhkEYQRsVF9X5aEUceeu5iNVU74J6vSfDg1vS3GkDhMfFFr
Public key: EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos create key --to-console
Private key: 5J1Xkj4s1E4rbmYSYopnboPrXWVADSADk1MWZAR5XgWRDp4RcbW
Public key: EOS6vKV7zQu9PDfSFhDDyANfY7ChhGK7VmpeEwDToXYqrGvN7VnGe
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos create key --to-console
Private key: 5KEi73cCXkVBooya4Ar4TYn1Vy1w2DGmt85VHswVoojo9r2KpYy
Public key: EOS8UH2VVj2wAv7Q4Kvs2A8mMMG9Qw1n2LYtoqE9ijxrrZDQ9ZXLx
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config#

总共4对密钥

//eosio key
Private key: 5J3kr9m8oA4SdxLwGG2v8grqCsHs1ieNGWsmmAgAGq9S7hepm5H
Public key:EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG//testuser1111
Private key: 5JEHzhkEYQRsVF9X5aEUceeu5iNVU74J6vSfDg1vS3GkDhMfFFr
Public key: EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z//testuser2222
Private key: 5J1Xkj4s1E4rbmYSYopnboPrXWVADSADk1MWZAR5XgWRDp4RcbW
Public key: EOS6vKV7zQu9PDfSFhDDyANfY7ChhGK7VmpeEwDToXYqrGvN7VnGe//testuser3333
Private key: 5KEi73cCXkVBooya4Ar4TYn1Vy1w2DGmt85VHswVoojo9r2KpYy
Public key: EOS8UH2VVj2wAv7Q4Kvs2A8mMMG9Qw1n2LYtoqE9ijxrrZDQ9ZXLx

另外,需要特别注意的是这里eosio key 是和创世用户nodeos的配置文件中的private-key是一致的,这里不能弄错,否则会涉及到权限报错的问题。其它的密匙对由 cleos create key 命令随机产生即可。

3.2 运行nodeos

命令行运行

root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# nodeos

3.3 运行keosd

命令行执行

keosd

3.4 创建钱包并导入之前创建的密钥

命令行创建钱包

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet create -n test01 --to-console

root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet create -n test01 --to-console
Creating wallet: test01
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JM8aqKzWQBg6vpjGoVVsFQ4AcNfYFn2PWGXKES3N3r8rvC4Grc"

导入之前创建的密钥
命令行

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5J3kr9m8oA4SdxLwGG2v8grqCsHs1ieNGWsmmAgAGq9S7hepm5H
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5JEHzhkEYQRsVF9X5aEUceeu5iNVU74J6vSfDg1vS3GkDhMfFFr
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5J1Xkj4s1E4rbmYSYopnboPrXWVADSADk1MWZAR5XgWRDp4RcbW
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5KEi73cCXkVBooya4Ar4TYn1Vy1w2DGmt85VHswVoojo9r2KpYy

命令行返回信息

root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5J3kr9m8oA4SdxLwGG2v8grqCsHs1ieNGWsmmAgAGq9S7hepm5H
imported private key for: EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5JEHzhkEYQRsVF9X5aEUceeu5iNVU74J6vSfDg1vS3GkDhMfFFr
imported private key for: EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5J1Xkj4s1E4rbmYSYopnboPrXWVADSADk1MWZAR5XgWRDp4RcbW
imported private key for: EOS6vKV7zQu9PDfSFhDDyANfY7ChhGK7VmpeEwDToXYqrGvN7VnGe
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5KEi73cCXkVBooya4Ar4TYn1Vy1w2DGmt85VHswVoojo9r2KpYy
imported private key for: EOS8UH2VVj2wAv7Q4Kvs2A8mMMG9Qw1n2LYtoqE9ijxrrZDQ9ZXLx
root@wjl-ubuntu:~/.local/share/eosio/nodeos/config#

导入eosio sign的私钥

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet import -n test01 --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

查看钱包包含的公钥,以验证导入是否成功
命令行

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet keys

返回信息

>root@wjl-ubuntu:~/.local/share/eosio/nodeos/config# cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 wallet keys
["EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG","EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","EOS6vKV7zQu9PDfSFhDDyANfY7ChhGK7VmpeEwDToXYqrGvN7VnGe","EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z","EOS8UH2VVj2wAv7Q4Kvs2A8mMMG9Qw1n2LYtoqE9ijxrrZDQ9ZXLx"
]

4创建九个系统用户

4.1 系统用户说明

这九个系统用户的名称及其作用如下说明:
eosio.bpay:矿工获取出块奖励的临时代管账户,增发EOS的1%的25%会先转到这个账户;
eosio.msig:多重签名管理的账户;
eosio.names:靓号账户拍卖管理的账户;
eosio.ram:内存买卖管理的账户;
eosio.ramfee:内存买卖收取手续费的账户,按照每笔交易千分之5的费率收取手续费;
eosio.saving:增发EOS临时存放账户,增发总量 5%,其中80%放在此账户,另外 20%再分成25%和75%,分别给eosio.bpay和eosio.vpay;
eosio.stake:管理EOS抵押的账户;
eosio.token:发行和管理token的账户;
eosio.vpay:矿工按照获得投票多少比例获取奖励的临时代管账户,增发EOS的1%的75%会先转到这个账户.

4.2 设置系统用户

分别创建

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.bpay EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.msig EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.names EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.ram EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.ramfee EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.saving EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.stake EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.token EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 create account eosio eosio.vpay EOS5PsdQvdpwTZdhRhiPqeCqZ1Hmz2L2QEe7m5rz2JbqkFsGYkjqG

5加载四大合约,发行代币

5.1 加载合约

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 set contract eosio.token /home/eos/eos/build/contracts/eosio.token/
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 set contract eosio.msig /home/eos/eos/build/contracts/eosio.msig/
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 push action eosio.token create '["eosio", "1000000000.0000 SYS"]' -p eosio.token
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888  push action eosio.token issue '["eosio", "1000000000.0000 SYS", "memo"]' -p eosio
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 set contract eosio /home/eos/eos/build/contracts/eosio.system/
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 push action eosio setpriv '["eosio.msig", 1]' -p eosio@active

注意事项
在这里有几个需要注意的地方:
加载系统合约的时候有可能会有一个报错: …too long. 可以在命令行最后面加上 -x 3000 的选项,3000是一个大概的数字,自行调整这个数据到正确运行为止;
智能合约的文件路径必须是全路径,尽量不要使用相对路径;
代币发行的大小是用的uint32_t类型,所以代币发行不能超过这个类型的数字,否则会报错;
系统合约加载不成功,检查一下九个系统用户是否正确创建,其它三个合约是否正确加载;

5.2 发行自定义代币

5.2.1 创建代币
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 push action eosio.token create '["eosio", "1000000000.0000 WJL"]' -p eosio.token
5.2.2 发行代币
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888  push action eosio.token issue '["eosio", "1000000000.0000 WJL", "memo"]' -p eosio

5.3 查看eosio账户余额

完成以后,在eosio用户里有10亿 SYS 代币,可以命令查看。

cleos --wallet-url http://192.168.10.11:8900 -u http://192.168.10.11:8888 get account eosio

返回信息

created: 2018-06-01T12:00:00.000
privileged: true
permissions: owner     1:    1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CVactive     1:    1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
memory: quota:       unlimited  used:     1.117 MiB  net bandwidth: used:               unlimitedavailable:          unlimitedlimit:              unlimitedcpu bandwidth:used:               unlimitedavailable:          unlimitedlimit:              unlimitedSYS balances: liquid:    799957914.0000 SYSstaked:            0.0000 SYSunstaking:         0.0000 SYStotal:     799957914.0000 SYS

这边已经转账过,所以余额不是10亿 SYS 代币

6创建普通用户

命令行执行

cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 system newaccount --transfer eosio testuser1111 EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z --stake-net "10000.0000 SYS" --stake-cpu "10000.0000 SYS" --buy-ram "20000.0000 SYS"
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 system newaccount --transfer eosio testuser2222 EOS6vKV7zQu9PDfSFhDDyANfY7ChhGK7VmpeEwDToXYqrGvN7VnGe --stake-net "10000.0000 SYS" --stake-cpu "10000.0000 SYS" --buy-ram "20000.0000 SYS"
cleos --wallet-url http://192.168.10.11:8900 --url http://192.168.10.11:8888 system newaccount --transfer eosio testuser3333 EOS8UH2VVj2wAv7Q4Kvs2A8mMMG9Qw1n2LYtoqE9ijxrrZDQ9ZXLx --stake-net "10000.0000 SYS" --stake-cpu "10000.0000 SYS" --buy-ram "20000.0000 SYS"

查询余额

cleos --wallet-url http://192.168.10.11:8900 -u http://192.168.10.11:8888 get account testuser1111

命令行返回

created: 2019-01-05T03:12:44.500
permissions: owner     1:    1 EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25zactive     1:    1 EOS7nSFf1EaJg8r3GwMRyq6kkkLAw6hk9yRkhrwNLkGNQPNCxj25z
memory: quota:     1.201 GiB    used:     3.365 KiB  net bandwidth: staked:      10000.0000 SYS           (total stake delegated from account to self)delegated:       0.0000 SYS           (total staked delegated to account from others)used:                 0 bytesavailable:        16.87 GiB  limit:            16.87 GiB  cpu bandwidth:staked:      10000.0000 SYS           (total stake delegated from account to self)delegated:       0.0000 SYS           (total staked delegated to account from others)used:                 0 us   available:        57.58 min  limit:            57.58 min  producers:     <not voted>

引用文献

  1. https://blog.csdn.net/weixin_39842528/article/details/81034018

  2. nodeos 配置文件字段说明

  3. 官方文档-源码编译程序

eos 测试网搭建,单节点,并使用命令行完成系统合约部署、账户创建、资产转账相关推荐

  1. 基于eth测试网搭建Chainlink节点

    基于ETH测试网搭建Chainlink节点 本文主要参考 Chainlink 官方文档(https://docs.chain.link/docs/running-a-chainlink-node) , ...

  2. 命令行测试网速_3个方便的命令行互联网速度测试

    命令行测试网速 能够验证网络连接速度使您可以控制计算机. 可以通过命令行检查Internet和网络速度的三个开源工具是Speedtest,Fast和iPerf. 速度测试 Speedtest是一个古老 ...

  3. local-network 2k 本地2k测试网搭建

    local-network 2k 本地2k测试网搭建 一. 2k测试网 1. 下载源代码 2. 选择分支 3. 设置环境变量 4. 清理环境 5. 编译2k 6. 下载证明参数 7. 预密封两个 2K ...

  4. Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操

    文章目录 安装JDK 安装zookeeper 安装kafka 下载解压 配置hosts 启动kafka服务 server.properties核心配置详解 基本命令 创建主题 发送消息 消费消息 查看 ...

  5. 菜鸟也学hadoop(1)_搭建单节点的hadoop

    其实跟官方的教程一样 只是 我想写下来 避免自己搞忘记了,,,,好记性不如烂笔头 首先确认自己是否安装了 java, ssh 以及 rsync 没有装的直接就 apt-get install 了嘛,, ...

  6. 基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2

    目录 ​编辑 安装环境 vmware ubuntu 安装Ubuntu后必做的几件事情 Docker 安装 docker 更新 cgroupdriver 为systemd 验证 Kubernetes i ...

  7. 【小卒ubuntu使用第六篇】ubuntu下如何搭建远程控制服务(包括命令行方式的ssh局域网搭建、和图形化界面的teamviewer和anydesk工具的安装使用)

    最近由于实验室技术需要,组建网络服务,刚开始只是局限于局域网下,所以只采用ssh就足够了,连接同一个局域网,分布式控制机器合作,比较简单,但是后来主机天天携带不方便,就需要穿网的服务,经过自己的摸索和 ...

  8. android弱网模拟路由器,Mac 下使用命令行模拟弱网环境

    做音视频开发,我们经常需要模拟弱网环境,观察 app 在弱网下的表现,比如,丢包.延迟.抖动.限制带宽条件等,Mac 系统有一个弱网工具 APP,叫做 "Network Link Condi ...

  9. EOS开发基础之二:使用cleos命令行客户端操作EOS(钱包wallet基础操作)

    不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...

最新文章

  1. 江南Style之---西湖
  2. python拼音怎么写-Python 中拼音库 PyPinyin 的用法
  3. linux的/etc/hosts的作用
  4. Matlab读取avi视频并播放
  5. 腾讯面经 | 数据从业者的一次“典型”面试
  6. 从理念到实践跳跃式演进!云的原生“免疫系统”如何有机作战?
  7. hbase shell中命令无法删除?
  8. HTTPS-思君如满月,日日减清辉
  9. java httpclient 重定向_httpclient 中post请求重定向
  10. vue中使用element-ui的表单验证功能prop属性
  11. JD_Source Code for problem 1581
  12. VIIRS-NPP夜光遥感数据下载
  13. 无法在驱动器0分区上安装windows解决方法
  14. MySQL免安装版本的配置
  15. np.stack()函数详解
  16. 父亲节python代码半个心_2019父亲节活动方案,暖心来袭!
  17. 2018 再见,你好 2019
  18. Linux下优雅的让程序后台运行
  19. HTML+CSS+JS网页设计期末课程大作业 悦世界游戏介绍(7个页面) web前端开发技术 web课程设计 网页规划与设计
  20. java模拟新浪微博_Java模拟新浪微博用户注册

热门文章

  1. 苏宁家电召开O2O购物节动员会 平台六方位支持迎战双十一
  2. 主成分分析(PCA)原理及推导
  3. 电脑重启f12怎么处理_联想电脑开机按f12后,怎么设置默认启动项
  4. 分解质因数 C语言实现
  5. Xamarin.Android之绑定库教程
  6. 一个出身寒门的状元之编程
  7. 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)
  8. mac Matlab 运行一段时间后 崩溃 Matlab遇到一个内部错误,需要关闭
  9. 800万超优质壁纸免费等你来拿!全世界最良心的壁纸站!
  10. GeoScene Pro 2.1下载地址与安装基本要求