eos 测试网搭建,单节点,并使用命令行完成系统合约部署、账户创建、资产转账
学习任何的区块链,首先就需要了解其中的基本功能,而要了解基本功能当然是动手尝试一遍,但是在正式网中,很多功能是没办法测试的,或者测试成本比较高,所以就需要搭建一个测试网,可以对该测试网任意操作,并了解区块网络从初始配置,到正式上线整个流程。
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>
引用文献
https://blog.csdn.net/weixin_39842528/article/details/81034018
nodeos 配置文件字段说明
官方文档-源码编译程序
eos 测试网搭建,单节点,并使用命令行完成系统合约部署、账户创建、资产转账相关推荐
- 基于eth测试网搭建Chainlink节点
基于ETH测试网搭建Chainlink节点 本文主要参考 Chainlink 官方文档(https://docs.chain.link/docs/running-a-chainlink-node) , ...
- 命令行测试网速_3个方便的命令行互联网速度测试
命令行测试网速 能够验证网络连接速度使您可以控制计算机. 可以通过命令行检查Internet和网络速度的三个开源工具是Speedtest,Fast和iPerf. 速度测试 Speedtest是一个古老 ...
- local-network 2k 本地2k测试网搭建
local-network 2k 本地2k测试网搭建 一. 2k测试网 1. 下载源代码 2. 选择分支 3. 设置环境变量 4. 清理环境 5. 编译2k 6. 下载证明参数 7. 预密封两个 2K ...
- Apache Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_配置参数详解_基本命令实操
文章目录 安装JDK 安装zookeeper 安装kafka 下载解压 配置hosts 启动kafka服务 server.properties核心配置详解 基本命令 创建主题 发送消息 消费消息 查看 ...
- 菜鸟也学hadoop(1)_搭建单节点的hadoop
其实跟官方的教程一样 只是 我想写下来 避免自己搞忘记了,,,,好记性不如烂笔头 首先确认自己是否安装了 java, ssh 以及 rsync 没有装的直接就 apt-get install 了嘛,, ...
- 基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2
目录 编辑 安装环境 vmware ubuntu 安装Ubuntu后必做的几件事情 Docker 安装 docker 更新 cgroupdriver 为systemd 验证 Kubernetes i ...
- 【小卒ubuntu使用第六篇】ubuntu下如何搭建远程控制服务(包括命令行方式的ssh局域网搭建、和图形化界面的teamviewer和anydesk工具的安装使用)
最近由于实验室技术需要,组建网络服务,刚开始只是局限于局域网下,所以只采用ssh就足够了,连接同一个局域网,分布式控制机器合作,比较简单,但是后来主机天天携带不方便,就需要穿网的服务,经过自己的摸索和 ...
- android弱网模拟路由器,Mac 下使用命令行模拟弱网环境
做音视频开发,我们经常需要模拟弱网环境,观察 app 在弱网下的表现,比如,丢包.延迟.抖动.限制带宽条件等,Mac 系统有一个弱网工具 APP,叫做 "Network Link Condi ...
- EOS开发基础之二:使用cleos命令行客户端操作EOS(钱包wallet基础操作)
不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...
最新文章
- 江南Style之---西湖
- python拼音怎么写-Python 中拼音库 PyPinyin 的用法
- linux的/etc/hosts的作用
- Matlab读取avi视频并播放
- 腾讯面经 | 数据从业者的一次“典型”面试
- 从理念到实践跳跃式演进!云的原生“免疫系统”如何有机作战?
- hbase shell中命令无法删除?
- HTTPS-思君如满月,日日减清辉
- java httpclient 重定向_httpclient 中post请求重定向
- vue中使用element-ui的表单验证功能prop属性
- JD_Source Code for problem 1581
- VIIRS-NPP夜光遥感数据下载
- 无法在驱动器0分区上安装windows解决方法
- MySQL免安装版本的配置
- np.stack()函数详解
- 父亲节python代码半个心_2019父亲节活动方案,暖心来袭!
- 2018 再见,你好 2019
- Linux下优雅的让程序后台运行
- HTML+CSS+JS网页设计期末课程大作业 悦世界游戏介绍(7个页面) web前端开发技术 web课程设计 网页规划与设计
- java模拟新浪微博_Java模拟新浪微博用户注册
热门文章
- 苏宁家电召开O2O购物节动员会 平台六方位支持迎战双十一
- 主成分分析(PCA)原理及推导
- 电脑重启f12怎么处理_联想电脑开机按f12后,怎么设置默认启动项
- 分解质因数 C语言实现
- Xamarin.Android之绑定库教程
- 一个出身寒门的状元之编程
- 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)
- mac Matlab 运行一段时间后 崩溃 Matlab遇到一个内部错误,需要关闭
- 800万超优质壁纸免费等你来拿!全世界最良心的壁纸站!
- GeoScene Pro 2.1下载地址与安装基本要求