本文主要介绍如何构建在EOS平台运行的DApp开发环境。

EOSIO构成组件

EOSIO是由三个component组成的。

image

  • nodeos:管理区块链节点的组件。
  • keosd:管理钱包的组件。
  • cleos:控制区块链和钱包CLI工具。

安装EOSIO

此文档以MacOS Darwin 10.12为基准。

在EOSIO的github库下载源码。

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

要安装xcode和homebrew代码。如果还没有安装的情况,先设置xcodehomebrew

  • xcode : https://developer.apple.com/xcode/
  • homebrew : https://brew.sh

源代码包含构建脚本及构建实现。

$ cd eos
$ ./eosio_build.sh

如果成功的话,就会出现下面的信息。

[100%] Linking CXX executable unit_test[100%] Built target unit_test_______  _______  _______ _________ _______(  ____ \(  ___  )(  ____ \\__   __/(  ___  )| (    \/| (   ) || (    \/   ) (   | (   ) || (__    | |   | || (_____    | |   | |   | ||  __)   | |   | |(_____  )   | |   | |   | || (      | |   | |      ) |   | |   | |   | || (____/\| (___) |/\____) |___) (___| (___) |(_______/(_______)\_______)\_______/(_______)EOSIO has been successfully built. 00:11:21To verify your installation run the following commands:/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &cd /Users/scion/git/eos/build; make testFor more information:EOSIO website: https://eos.ioEOSIO Telegram channel @ https://t.me/EOSProjectEOSIO resources: https://eos.io/resources/EOSIO Stack Exchange: https://eosio.stackexchange.comEOSIO wiki: https://github.com/EOSIO/eos/wiki

解决问题

  • 如果build过程中出现这样的error时:
CMake Error at /usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR)
Call Stack (most recent call first):/usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)/usr/local/Cellar/cmake/3.11.3/share/cmake/Modules/FindIntl.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)programs/cleos/CMakeLists.txt:29 (find_package)

应该是homebrewgettext连接到了不正确的版本,更改连接信息就可以了:

$ brew link gettext — force

在环境变量文件(~/.profile)添加gettoxt path:

export PATH=”/usr/local/opt/gettext/bin:$PATH”

参考:https://github.com/EOSIO/eos/issues/2174

  • 也有可能发生这种情况:
Mac OS 10.13.3 build error “path mongo-cxx-driver already exists”

这样解决:

sudo rm -rf /tmp/mongo*
cd /path/to/eos
rm -rf build/
git pull
git submodule update — init — recursive
./eosio_build.sh

参考:https://github.com/EOSIO/eos/issues/3197

验证

安装顺利完成。为了验证,执行下测试脚本。

$ /usr/local/bin/mongod -f /usr/local/etc/mongod.conf &$ cd build/$ make testRunning tests...Test project /Users/scion/git/eos/buildStart  1: test_cypher_suites1/35 Test  #1: test_cypher_suites ...................   Passed    0.04 secStart  2: validate_simple.token_abi2/35 Test  #2: validate_simple.token_abi ............   Passed    0.08 secStart  3: validate_eosio.token_abi...34/35 Test #34: restart-scenarios-test-hard_replay ...   Passed  151.83 secStart 35: validate_dirty_db_test35/35 Test #35: validate_dirty_db_test ...............   Passed    4.42 sec100% tests passed, 0 tests failed out of 35

下面完成安装:

$ cd build$ sudo make install

运行EOSIO

试着运行EOSIO的组件吧。这是为了构建开发环境,所以可以先用一个节点。

nodeos

用带有option的命令直接执行就行了

$ nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

其中:

  • e : 区块生成
  • p eosio : 区块生产者名称
    — plugin eosio::chain_api_plugin : 区块链相关API插件
    — plugin eosio::history_api_plugin : 历史记录相关API插件

可以用配置文件替换参数。

  • config file位置: ~/Library/Application Support/eosio/nodeos/config/config.ini
  • nodeos第一次运行时,该文件自动生成。
$ vi ~/Library/Application\ Support/eosio/nodeos/config/config.ini...
# enable-stale-production = false
enable-stale-production = true
...
# producer-name =
producer-name = eosio
...
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
...

执行nodeos :

$ nodeos

如果运行正常,可以看到在控制台上0.5秒生成block的信息。

为了确认nodeos是否正常运行,让我们试试应用程序API接口。

在运行于8888端口的应用软件服务上试试HTTP Request

$ curl -k -v 'http://127.0.0.1:8888/v1/chain/get_info' -X GETNote: Unnecessary use of -X or --request, GET is already inferred.
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
> GET /v1/chain/get_info HTTP/1.1
> Host: 127.0.0.1:8888
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: close
< Content-Length: 529
< Content-type: application/json
< Server: WebSocket++/0.7.0
<
{"server_version":"012dc012","chain_id":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f","head_block_num":363,"last_irreversible_block_num":362,"last_irreversible_block_id":"0000016ad0238cef2f6a8de2098115ba155cbbc535122912a7a62f66097adbd6","head_block_id":"0000016b8cbb9154a759f2e61968fc1069fcf0ef9468886614d0538a97d96c61","head_block_time":"2018-06-12T07:10:59","head_block_producer":"eosio","virtual_block_cpu_limit":287075,"virtual_block_net_limit":1506023,"block_cpu_limit":199900,"block_net_limit":1048576}

或是利用cleos命令执行。

$ cleos get info
{"server_version": "012dc012","chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f","head_block_num": 580,"last_irreversible_block_num": 579,"last_irreversible_block_id": "000002436a1baaeb366b55995ddad7de0822f177d60a8c6e336e3f5fcb18ecc5","head_block_id": "00000244e6923239c0649ddada0dd47a2df80df13fa825275df9ddac975e6162","head_block_time": "2018-06-12T07:12:48","head_block_producer": "eosio","virtual_block_cpu_limit": 356561,"virtual_block_net_limit": 1871085,"block_cpu_limit": 199900,"block_net_limit": 1048576
}

keosd

同样用带有option的命令直接执行就行了

$ keosd — http-server-address=127.0.0.1:8900
  • http-server-address : REST API,nodeos默认端口是8888。cleos默认端口考虑使用8900,URL不可用。

只能通过替换keosd配置文件选项来运行。

  • 配置文件位置:~/eosio-wallet/config.ini
  • 第一次keosd操作,文件自动生成。
$ vi ~/eosio-wallet/config.ini# http-server-address = 127.0.0.1:8888
http-server-address = 127.0.0.1:8900

执行keosd:

$ keosd

在运行于8900端口的应用软件服务上试试HTTP Request

$ curl -k -v ‘http://127.0.0.1:8900/v1/wallet/list_wallets' -X GETNote: Unnecessary use of -X or — request, GET is already inferred.
* Trying 127.0.0.1…
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8900 (#0)
> GET /v1/wallet/list_wallets HTTP/1.1
> Host: 127.0.0.1:8900
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: close
< Content-Length: 2
< Content-type: application/json
< Server: WebSocket++/0.7.0
<
[]

或者使用cleos命令运行:

$ cleos wallet list
Wallets:
[]

nodeoskeosd可以正常工作,现在可以使用EOSIO服务了。

参考文件是EOSIO官方wiki文档,参考了本地环境的安装。

另:《EOS智能合约与DApp开发入门》教程已经上线,爱学习等不及的可以抓紧体验一下:

分享一个EOS智能合约与DApp开发入门教程,欢迎大家来学习互动:

EOS教程

本教程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用React和EOS的各知识点完成一个便签DApp的开发。

如果你希望学习以太坊,那下面的一些教程可以帮到你:

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

博客原文在:这里

eos安装区块链开发环境相关推荐

  1. 以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图)

    以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图) 区块链设计开发小组     2019/04/01 借鉴博客:https://blog.csdn.net/cui ...

  2. 区块链开发(一)Windows平台搭建基于以太坊的区块链开发环境

    引言 Ethereum(以太坊)是一个使开发人员能够建立和发布下一代分布式应用的公共区块链平台. 通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(称为"以太虚拟机"Et ...

  3. EOS区块链开发的第一步

    对于区块链的初创企业来说,去年真的是史诗般的一年.由于以太坊区块链以及它为开发人员创建去中心化的应用程序带来了机会,许多区块链公司诞生了. 以太坊引入了Solidity语言和智能合约 - 去中心化应用 ...

  4. 区块链应用开发人员_每个区块链开发人员都应该了解这些Web3和Metamask用例

    区块链应用开发人员 by Igor Yalovoy 由Igor Yalovoy 每个区块链开发人员都应该了解这些Web3和Metamask用例 (Every blockchain developer ...

  5. 如何从事区块链开发?

    目录 第一部分:区块链基础知识 第二部分:准备工作和环境设置 第三部分:学习智能合约开发 第四部分:实践项目开发 第五部分:持续学习和跟踪行业发展 第六部分:资源和工具 从事区块链开发是一个广泛的领域 ...

  6. 区块链开发之搭建以太坊私有链

    (一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...

  7. 《Node.js区块链开发》

    <Node.js区块链开发> [注]基于ES6的最新版,正在筹划中. 特别说明 亿书,让有知识的人富起来.我们的产品,将全部基于P2P网络进行开发设计,面向未来进行技术研发. 纸质书籍:h ...

  8. 收藏贴 :2019年必备43种区块链开发工具

    2019独角兽企业重金招聘Python工程师标准>>> 本文列出2019年最新整理的用于区块链开发的43种流行的开发库.开发工具与开发框架. 原文:43个区块链开发工具 - 汇智网 ...

  9. 区块链开发中使用的最流行的编程语言

    我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的 ...

最新文章

  1. mac版lightroom cc_Mac上创建精美幻灯片的最简单方法FotoMagico Mac
  2. python使用fpdf2包和pdfrw包在已有的PDF页面上添加新的页
  3. jQuery ajax请求成功且返回了数据,但是不进success:function()
  4. Linux中ELF格式 可执行文件+动态链接器 的加载
  5. 由浅入深,聊聊权限设计
  6. 哈希表取模选择素数分析
  7. CentOS下搭建wordpress全流程
  8. [Ext JS ]3.4 数字输入框 numberfield
  9. mysql 左连接 左外连接吗_数据库左连接和左外连接有区别吗
  10. 山西大学量子计算机,关于量子力学与量子计算机
  11. 健康驿站房间线上预约系统网站分析
  12. QQ快速登录实现原理分析之localhost.ptlogin2.qq.com 怎么会映射到 127.0.0.1问题
  13. 梅罗对决没了,欧足联的错误?
  14. 网工解惑,子网掩码是什么以及子网掩码有哪些?
  15. ATM和电路交换和分组交换区别
  16. 华硕服务器怎么装系统教程视频,华硕怎么安装linux系统教程视频
  17. iOS 代理(Delegate)
  18. 机械键盘的 黑轴/茶轴/青轴/红轴 有什么区别
  19. LDA模型,获取所有的文档-主题分布(即得到文档对于每个主题的概率分布)并保存
  20. 计算机配件进口关税走势,计算机类产品关税降50% 从20%下调至10%

热门文章

  1. mysql 查询不等于空的数据查询
  2. 编曲录音宿主软件-Cubase Elements 11 v11.0.30 WiN 元素版
  3. train_test_split参数含义
  4. MySQL8.0 通过data文件和SQL语句恢复数据库
  5. Altium Designer 18 原理图编译出现off grid错误处理方法
  6. 微信小程序polyline
  7. Qt应用程序图标设置任务栏图标设置
  8. 计算机转魔方最快多少,最快的转魔方的算法?
  9. 图像的高频和低频如何区分
  10. linux内核系统调用创建和删除文件