EOS特性
eos提供不同区块链应用都需要的一些共同的功能和模块
方便在eos上迅速开发自己的应用
eos处理交易的规模比以太坊高出几个量级,tps达1-10万
拥有eos代币的比例分配eos网络的带宽、存储和运算资源
EOS智能合约开发
以太坊的智能合约可以移植到EOS
mac或者linux可以直接部署节点,windows系统需要先安装虚拟机,通过linux镜像部署节点,通过c++编写合约,通过命令行部署和调用智能合约
EOS私链搭建
1、clang v6.0.0 or later安装(sudo apt-get install clang)
2、CMake安装(sudo snap install cmake)
3、EOSIO v1.7.0版本安装(wget https://github.com/EOSIO/eos/releases/download/v1.7.0/eosio_1.7.0-1-ubuntu-18.04_amd64.deb
./eosio_1.7.0–1-ubuntu-18.04_amd64.deb
)
4、EOSIO.CDT v1.5.0安装(wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.5.0/eosio.cdt_1.5.0-1_amd64.deb
./eosio.cdt_1.5.0–1_amd64.deb
)
5、EOSIO.Contracts v1.6.0安装(wget https://github.com/EOSIO/eosio.contracts/archive/v1.6.0.zip
unzip v1.6.0.zip
mv eosio.contracts-1.6.0 contracts
)(如果没有安装解压就先安装解压sudo apt-get install unzip)
6、服务器节点配置(Ubuntu 18.04 LTS OS, 16GB of RAM, 4 vCPUs and 30GB of HDD.)(亚马逊云服务器https://aws.amazon.com/cn/free/?sc_channel=PS&sc_campaign=acquisition_CN&sc_publisher=baidu&sc_medium=bz&sc_content=pc&sc_detail=HL&sc_category=pc&sc_segment=test&sc_country=CN&trkCampaign=request_for_pilot_account&trk=baidu-ppc-test&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc)
前置环境安装完成后,创建三个实例节点
7、创建开发钱包,用于存储公钥和私钥(cleos wallet create --name=YOUR_WALLET_NAME --to-console)
8、创建文件夹bootbios(mkdir bootbios
cd bootbios
mkdir genesis
)
9、创建genesis.json文件(vim genesis.json)("initial_timestamp": "2018-12-05T08:55:11.000",
"initial_key": "EOS_PUB_DEV_KEY",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 100000,
"target_block_cpu_usage_pct": 500,
"max_transaction_cpu_usage": 50000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6
},
"initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
)
10、创建公钥私钥,并复制公钥替换9、中的EOS_PUB_DEV_KEY(cleos create key --to-console)
11、查看钱包状态(cleos wallet list)(cleos wallet unlock)(cleos wallet unlock --name=YOUR_WALLET_NAME)
12、导出公钥(cleos wallet import --name=YOUR_WALLET_NAME --private-key)
13、完成第10步
14、创建三个文件(touch genesis_start.sh
touch clean.sh
touch stop.sh
)
15、设置三个文件的执行权限(sudo chmod +x *.sh)
16、genesis_start.sh中粘贴如下内容(#!/bin/bash
DATADIR="./blockchain"
if [ ! -d $DATADIR ]; then
mkdir -p $DATADIR;
fi
nodeos \
--genesis-json $DATADIR"/../../genesis.json" \
--signature-provider EOS_PUB_DEV_KEY=KEY:EOS_PRIV_DEV_KEY \
--plugin eosio::producer_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
--plugin eosio::history_api_plugin \
--plugin eosio::history_plugin \
--data-dir $DATADIR"/data" \
--blocks-dir $DATADIR"/blocks" \
--config-dir $DATADIR"/config" \
--producer-name YOUR_PRODUCER_NAME \
--http-server-address 0.0.0.0:8888 \
--p2p-listen-endpoint 0.0.0.0:4444 \
--access-control-allow-origin=* \
--contracts-console \
--http-validate-host=false \
--verbose-http-errors \
--enable-stale-production \
--p2p-peer-address INSTANCE2_IP:4444 \
--p2p-peer-address INSTANCE3_IP:4444 \
>> $DATADIR"/nodeos.log" 2>&1 & \
echo $! > $DATADIR"/eosd.pid"
)(EOS_PUB_DEV_KEY用公钥替换,
EOS_PRIV_DEV_KEY用私钥替换)
如果有多个节点,对多个节点进行如上一致操作
17、拷贝genesis_start.sh(cp genesis_start.sh start.sh)(删除start.sh中的--genesis-json $DATADIR"/../../genesis.json" \这一行)
18、stop.sh中粘贴如下内容(#!/bin/bash
DATADIR="./blockchain/"
if [ -f $DATADIR"/eosd.pid" ]; then
pid=`cat $DATADIR"/eosd.pid"`
echo $pid
kill $pid
rm -r $DATADIR"/eosd.pid"
echo -ne "Stoping Node"
while true; do
[ ! -d "/proc/$pid/fd" ] && break
echo -ne "."
sleep 1
done
echo -ne "\rNode Stopped. \n"
fi
)
19、clean.sh中粘贴如下内容(#!/bin/bash
rm -fr blockchain
ls -al
)
20、启动传世文件并查看(./genesis_start.sh
ls -l
)
21、进入文件夹(cd blockchain)查看文件(tail -f nodeos.log)
22、需要以下的系统账户(eosio.bpay
eosio.msig
eosio.names
eosio.ram
eosio.ramfee
eosio.saving
eosio.stake
eosio.token
eosio.vpay
eosio.rex
)
23、创建公钥私钥(cleos create key --to-console)
24、将key导入钱包(cleos wallet import --private-key)输入私钥(private key: imported private key for: YOUR_PUB_KEY)
25、创建eosio.bpay账户(cleos create account eosio eosio.bpay YOUR_PUB_KEY)
26、重复以上23-25的步骤创建22步骤中的账户
27、创建智能合约,可能需要30-40分钟(cd
cd contracts
./build.sh -e /usr/opt/eosio/1.7.0 -c /usr/opt/eosio.cdt/1.5.0
pwd
)
28、设置合约目录地址CONTRACTS_PATH,并创建合约(cleos set contract eosio.token YOUR_PATH/build/contracts/eosio.token/)
29、创建另外一个eosio.msig 合约(cleos set contract eosio.msig YOUR_PATH/build/eosio.msig/)
30、创建代币ECNUCoin,总发行量为10 billion(cleos push action eosio.token create '[ "eosio", "10000000000.0000 ECNUCoin" ]' -p eosio.token@active)
31、分配代币(cleos push action eosio.token issue '[ "eosio", "1000000000.0000 ECNUCoin", "memo" ]' -p eosio@active)
32、创建eosio.system合约(cleos set contract eosio YOUR_PATH/build/eosio.system/)
33、给eosio.msig授权(cleos push action eosio setpriv '["eosio.msig", 1]' -p eosio@active)
34、初始化系统账户(cleos push action eosio init '["0", "4,SYS"]' -p eosio@active)
第一个实例节点处理完毕,开始处理第二个节点
35、创建如实例节点1的文件结构(mkdir bootbios
cd bootbios
mkdir genesis
)
36、在bootbios文件中创建genesis.json文件(vim genesis.json)({
"initial_timestamp": "2018-12-05T08:55:11.000",
"initial_key": "EOS_PUB_DEV_KEY",
"initial_configuration": {
"max_block_net_usage": 1048576,
"target_block_net_usage_pct": 1000,
"max_transaction_net_usage": 524288,
"base_per_transaction_net_usage": 12,
"net_usage_leeway": 500,
"context_free_discount_net_usage_num": 20,
"context_free_discount_net_usage_den": 100,
"max_block_cpu_usage": 100000,
"target_block_cpu_usage_pct": 500,
"max_transaction_cpu_usage": 50000,
"min_transaction_cpu_usage": 100,
"max_transaction_lifetime": 3600,
"deferred_trx_expiration_window": 600,
"max_transaction_delay": 3888000,
"max_inline_action_size": 4096,
"max_inline_action_depth": 4,
"max_authority_depth": 6
},
"initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
}
)
37、进入genesis目录 (cd genesis)创建文件(touch genesis_start.sh
touch stop.sh
touch clean.sh
)
38、修改以上文件的执行权限(sudo chmod +x *.pem)
39、将以下内容拷贝至genesis_start.sh(#!/bin/bash
DATADIR="./blockchain"
if [ ! -d $DATADIR ]; then
mkdir -p $DATADIR;
fi
nodeos \
--genesis-json $DATADIR"/../../genesis.json" \
--signature-provider EOS_PUB_DEV_KEY=KEY:EOS_PRIV_DEV_KEY \
--plugin eosio::producer_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
--plugin eosio::history_api_plugin \
--plugin eosio::history_plugin \
--data-dir $DATADIR"/data" \
--blocks-dir $DATADIR"/blocks" \
--config-dir $DATADIR"/config" \
--producer-name YOUR_PRODUCER_NAME \
--http-server-address 0.0.0.0:8888 \
--p2p-listen-endpoint 0.0.0.0:4444 \
--access-control-allow-origin=* \
--contracts-console \
--http-validate-host=false \
--verbose-http-errors \
--enable-stale-production \
--p2p-peer-address INSTANCE1_IP:4444 \
--p2p-peer-address INSTANCE3_IP:4444 \
>> $DATADIR"/nodeos.log" 2>&1 & \
echo $! > $DATADIR"/eosd.pid"
)
40、创建公钥私钥(cleos create key --to-console)替换39中的“EOS_PUB_DEV_KEY”, “EOS_PRIV_DEV_KEY”
41、拷贝genesis_start.sh到start.sh(cp genesis_start.sh start.sh)
42、删除start.sh文件中的这一行(--genesis-json $DATADIR"/../../genesis.json" \)
43、拷贝其他实例中的stop.sh和clean.sh到这个节点
44、执行(./genesis_start.sh)(此时节点将会被创建,查看tail -f blockchain/nodeos.log)
45、第三个节点如上操作即可
46、
网友评论