智能合约 EOS 智能合约开发点滴记录-第一篇开发环境搭建

Surou · March 30, 2019 · Last by strahe replied at March 30, 2019 · 1496 hits
本帖已被设为精华帖!

最近一直在做 Dapp 开发,一直忙的没时间更新博客,最近换工作空闲时间,更几片连续文章,总结下 EOS 合约开发的步骤,一些遇到的问题,以及一些实际场景,哪些数据适合上链的选取,以及怎样方便调用.方便一起的学习的同学参考,以及自己备忘.

我们先尽量简单直白的说下什么是 EOS 链,资源,智能合约,以及之间的关系.

  1. EOS 链 我们可以把 EOS 链想成一个由多台服务器组成的一个计算机云集群{无意突出此链的中心化}.每台服务器 (节点) 上都部署着一个EOS 节点程序,各个节点彼此链接.这个计算机集群,根据投票排名前 21 名的节点,可以参与计算任务 (出块),并且计算后会有相应的奖励 (挖矿).

  2. 资源:RAM,CPU,NET 我们把 EOS 链想成云服务器集群,我们购买的 EOS 账号就相当于在云服务的服务商那购买了个账号,然后给账号购买使用的资源:存储 (RAM),算力 (CPU) 用于计算任务,网络 (NET) 用于任务与集群传输.我们使用 EOS 链,就相当于使用云服务器提供商提供的计算和存储服务.

  3. 智能合约 我们可以把智能合约想成是一个执行脚本,每个合约可以部署到自己的 EOS 账号下 (可以理解成每个账号会有个专门的存储索引,指引存放的合约,每个普通账号只能同时部署一个合约,后面的会把前面的覆盖掉),合约内可以写一些逻辑,以及数据的增删改查,也可以调用其余的合约.我们外部可以用过 rpc 方法访问 EOS 链 (发起交易),指定运行哪个账号下的合约的某个接口 (执行 action).

也许举例还不够简单,或者不妥,等之后在完善. 下面我们开始主题

智能合约开发环境搭建

先介绍下智能合约的开发编译工具,在 v1.3.0 之前使用的是 eosiocpp(直接包含在 eos 项目代码内,整体项目编译完或者安装完二进制包,直接可以使用).之后版本已经弃用 (EOSIO 1.3.0 Release Notes),统一使用新版本编译工具 eosio.cdt,并放在单独的仓库管理 (需要单独编译,或者下载二进制包安装).如果只开发合约的话,可以只安装 eosio.cdt,无需再编译安装 eos 链项目. 新旧版本合约规则变化较大,目前网络上的文章一部分还停留在旧版本,不建议再参考语法.

安装 eosio.cdt

编写此文时 eosio.cdt 最新版本 1.6.1, EOSIO v1.7.0 eosio.cdt 可以使用源码编译安装,也可以直接使用官方编译好的二进制安装包

1. 源码编译安装

clone 源代码

git clone https://github.com/EOSIO/eosio.cdt

切换此时最新 release 分支

cd eosio.cdt
git checkout -b v1.6.1

编译源代码

git submodule update --init --recursive
./build.sh

编译完成之后会显示 ! 然后执行安装

sudo ./install.sh

2.二进制包安装

EOSIO.CDT 目前支持 Mac OS X brew,Linux x86_64 Debian 软件包和 Linux x86_64 RPM 软件包 如果之前已经用源码等方式安装过,需要先卸载,

Mac OS X Brew

安装 ```shell $ brew tap eosio/eosio.cdt $ brew install eosio.cdt

卸载
    ```shell
$ brew remove eosio.cdt
Ubuntu Debian Package

安装

$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb
$ sudo apt install ./eosio.cdt_1.6.1-1_amd64.deb

卸载

$ sudo apt remove eosio.cdt
Fedora RPM Package

安装

$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt-1.6.1-1.fedora-x86_64.rpm
$ sudo yum install ./eosio.cdt-1.6.1-1.fedora-x86_64.rpm

卸载

$ sudo yum remove eosio.cdt
Centos RPM Package

安装

$ wget https://github.com/eosio/eosio.cdt/releases/download/v1.6.1/eosio.cdt-1.6.1-1.centos-x86_64.rpm
$ sudo yum install ./eosio.cdt-1.6.1-1.centos-x86_64.rpm

卸载

$ sudo yum remove eosio.cdt

建议

个人还是推荐使用 Ubuntu 18.04/16.04 系统,目前了解到的 bp 以及社区其他节点,大都在此系统上运行,相对测试较多,并且查找问题资料相对较多.

常见问题

  1. ubuntu 安装完,执行 eosio-cpp compile 可能会报错误 shell libstdc++.so.6 version glibcxx_3.4.21' not found

解决方式如下

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install libstdc++6

参考

  1. https://github.com/EOSIO/eosio.cdt
  2. https://blog.csdn.net/ITleaks/article/details/85841850
strahe 将本帖设为了精华贴 31 Mar 02:09

赞,这个时候还在学习的不多了。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up