本文首发于kii.io。
最近在关注EOS生态,看到了一些很有意思的dapp,我想着自己写一个简易的dapp,看看它是怎么个玩法。
安装EOS Docker环境 我们根据官网上的EOS.IO developer guide装一下Docker环境。
- 拉取eos-dev镜像
docker pull eosio/eos-dev:v1.5.2
- 为nodeos和keosd创建一个共享网络
docker network create eosdev
- 运行nodeos节点,并且转发docker container内的8888端口到本机8888端口
docker run --name nodeos -d -p 8888:8888 --network eosdev -v /tmp/eosio/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev# 进入刚刚创建的docker
docker execi -it nodeos /bin/bash
# 在创建的container中运行nodeos
nodeos -e -p eosio --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=* --contracts-console --http-validate-host=false --replay-blockchain
exit
- 运行Keosd(钱包和密钥)
docker run -d --name keosd --network=eosdev -i eosio/eos-dev /bin/bash -c "keosd --http-server-address=0.0.0.0:9876"
- 验证安装是否完成
docker logs --tail 10 nodeos
输出应该类似这样:
info2018-12-27T13:10:57.501 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fbc2cbb5329... #4028 @ 2018-12-27T13:10:57.500 signed by eosio [trxs: 0, lib: 4027, confirmed: 0]
info2018-12-27T13:10:58.001 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fbdec5c5827... #4029 @ 2018-12-27T13:10:58.000 signed by eosio [trxs: 0, lib: 4028, confirmed: 0]
info2018-12-27T13:10:58.502 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fbe9b7edada... #4030 @ 2018-12-27T13:10:58.500 signed by eosio [trxs: 0, lib: 4029, confirmed: 0]
info2018-12-27T13:10:59.002 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fbf6fe1b9f6... #4031 @ 2018-12-27T13:10:59.000 signed by eosio [trxs: 0, lib: 4030, confirmed: 0]
info2018-12-27T13:10:59.502 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc0249bc603... #4032 @ 2018-12-27T13:10:59.500 signed by eosio [trxs: 0, lib: 4031, confirmed: 0]
info2018-12-27T13:11:00.004 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc1313d03fa... #4033 @ 2018-12-27T13:11:00.000 signed by eosio [trxs: 0, lib: 4032, confirmed: 0]
info2018-12-27T13:11:00.504 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc229fdc290... #4034 @ 2018-12-27T13:11:00.500 signed by eosio [trxs: 0, lib: 4033, confirmed: 0]
info2018-12-27T13:11:01.007 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc3dc86543f... #4035 @ 2018-12-27T13:11:01.000 signed by eosio [trxs: 0, lib: 4034, confirmed: 0]
info2018-12-27T13:11:01.502 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc4032f345d... #4036 @ 2018-12-27T13:11:01.500 signed by eosio [trxs: 0, lib: 4035, confirmed: 0]
info2018-12-27T13:11:02.002 thread-0producer_plugin.cpp:1522produce_block] Produced block 00000fc514623d3e... #4037 @ 2018-12-27T13:11:02.000 signed by eosio [trxs: 0, lib: 4036, confirmed: 0]
- 进入钱包看一下
docker exec -it keosd bash
cleos --wallet-url http://127.0.0.1:9876 wallet list keys
此时,我们应该能看到类似
Wallets:
[]
【Dapp开发简明教程之配置环境】这就表明,截止目前,我们的安装都是正确的。
查看endpoint信息 访问本地的
http://localhost:8888/v1/chain/get_info
,获取以下内容:
{
"server_version": "3186ddba",
"chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",
"head_block_num": 9346,
"last_irreversible_block_num": 9345,
"last_irreversible_block_id": "000024819997cea0b5d747294c68726500660793cab106e44a7b6e49f88353a7",
"head_block_id": "000024829ab39a32e482b099daeefacc2f2fcb4b76e9f25702915c055850ec7c",
"head_block_time": "2018-12-27T13:55:17.500",
"head_block_producer": "eosio",
"virtual_block_cpu_limit": 200000000,
"virtual_block_net_limit": 1048576000,
"block_cpu_limit": 199900,
"block_net_limit": 1048576,
"server_version_string": "v1.6.0-rc1"
}
cleos
是一个用于在keosd和nodeos之间交互的工具。我们先拿到keosd的IP信息,执行docker network inspect eosdev
获得如下返回:
[
{
"Name": "eosdev",
"Id": "fe1b358085ee23b67c4fac9c8a385a75c3ac3bbb26c93fba67e2454d73852ff5",
"Created": "2018-12-27T12:35:19.845673056Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.21.0.0/16",
"Gateway": "172.21.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"39887d21ad4dcac7069f0fa7ac036a4c3755b12c1f307967ed553ded13631002": {
"Name": "keosd",
"EndpointID": "fa817d5193fec763427d346ffb3d9cfa1084efed65f5063d4cb21265f79fa297",
"MacAddress": "02:42:ac:15:00:03",
"IPv4Address": "172.21.0.3/16",
"IPv6Address": ""
},
"a4333f9a87c053adf267e07b49b1e1ea869fe9eaa862fffd994c8f3c5fd26852": {
"Name": "nodeos",
"EndpointID": "1a1434c513d5225d1a53af32de0d09b120bb338bd3da4240ff887a0c485a0e67",
"MacAddress": "02:42:ac:15:00:02",
"IPv4Address": "172.21.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
这里面的
172.21.0.2
就是keosd的地址,我们创建如下的alias。alias cleos='docker exec -it nodeos /opt/eosio/bin/cleos --url http://127.0.0.1:8888 --wallet-url http://172.21.0.3:9876'
注意把172.21.0.3替换成你自己的keosd的IP地址执行一下
cleos
试试,是否输出如下:ERROR: RequiredError: Subcommand required
Command Line Interface to EOSIO Client
Usage: cleos [OPTIONS] SUBCOMMANDOptions:
-h,--helpPrint this help message and exit
-u,--url TEXT=http://127.0.0.1:8888/
the http/https URL where nodeos is running
--wallet-url TEXT=unix:///root/eosio-wallet/keosd.sock
the http/https URL where keosd is running
-r,--headerpass specific HTTP header;
repeat this option to pass multiple headers
-n,--no-verifydon't verify peer certificate when using HTTPS
--no-auto-keosddon't automatically launch a keosd if one is not currently running
-v,--verboseoutput verbose actions on error
--print-requestprint HTTP request to STDERR
--print-responseprint HTTP response to STDERRSubcommands:
versionRetrieve version information
createCreate various items, on and off the blockchain
convertPack and unpack transactions
getRetrieve various items and information from the blockchain
setSet or update blockchain state
transferTransfer tokens from account to account
netInteract with local p2p network connections
walletInteract with local wallet
signSign a transaction
pushPush arbitrary transactions to the blockchain
multisigMultisig contract commands
wrapWrap contract commands
systemSend eosio.system contract action to the blockchain.
如果是的话,恭喜你,配置成功。我们开发前的准备工作就完成啦!
Ref:
- eos developer guide
- eos wiki
文章图片
推荐阅读
- 区块链|注意,Uniswap 被拆解不可避免!这对 DeFi 意味着什么()
- 区块链|欧盟将在2020年底之前公布加密法案草案
- 区块链|【交易所-数字货币】交易所充提币处理思路
- 网络|为什么矿工费贵得越来越离谱()
- 区块链|ethereum和eos的收费模型比较