最近一直在做Dapp开发,一直忙的没时间更新博客,最近换工作空闲时间,更几片连续文章,总结下EOS合约开发的步骤,一些遇到的问题,以及一些实际场景,哪些数据适合上链的选取,以及怎样方便调用.方便一起的学习的同学参考,以及自己备忘.
我们先尽量简单直白的说下什么是EOS链,资源,智能合约,以及之间的关系.
-
EOS链
我们可以把EOS链想成一个由多台服务器组成的一个计算机云集群{无意突出此链的中心化}.每台服务器(节点)上都部署着一个EOS节点程序,各个节点彼此链接.这个计算机集群,根据投票排名前21名的节点,可以参与计算任务(出块),并且计算后会有相应的奖励(挖矿). -
资源:RAM,CPU,NET
我们把EOS链想成云服务器集群,我们购买的EOS账号就相当于在云服务的服务商那购买了个账号,然后给账号购买使用的资源:存储(RAM),算力(CPU)用于计算任务,网络(NET)用于任务与集群传输.我们使用EOS链,就相当于使用云服务器提供商提供的计算和存储服务. -
智能合约
我们可以把智能合约想成是一个执行脚本,每个合约可以部署到自己的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
安装
$ brew tap eosio/eosio.cdt
$ brew install eosio.cdt
卸载
$ 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以及社区其他节点,大都在此系统上运行,相对测试较多,并且查找问题资料相对较多.
常见问题
- ubuntu安装完,执行eosio-cpp compile可能会报错误
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
参考
版权属于:区块链中文技术社区 / 转载原创者
本文链接:https://bcskill.com/index.php/archives/534.html
相关技术文章仅限于相关区块链底层技术研究,禁止用于非法用途,后果自负!本站严格遵守一切相关法律政策!