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
编译完成之后会显示
![](/assets/blank.gif)
然后执行安装
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
参考
- GitHub - EOSIO/eosio.cdt: EOSIO.CDT (Contract Development Toolkit) is a suite of tools used to build EOSIO contracts
- eosio.cdt一键安装_区块链斜杠青年的博客-CSDN博客
后文 《EOS智能合约开发点滴记录-第二篇智能合约编写》
EOS智能合约开发-开发环境搭建相关推荐
- 原 EOS智能合约开发入门
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. EOS智能合约的开发需要使用llvm和abigen来生成abi文件. 为此eos提供了一个 名为eosiocpp的工具. ...
- EOS智能合约开发与交互
EOS智能合约的开发.编译.部署与交互. ## 运行示例代码 ### 1.启动节点服务 在1#终端启动nodeos,建议先清除历史数据: ``` ~$ rm -rf ~/.local/share/eo ...
- Beosin成都链安发布在线EOS-IDE免费版本 EOS智能合约在线编辑、编译、运行调试、部署一步到位...
Beosin EOS-IDE产品链接: https://beosin.com/EOS-IDE/index.html#/ (推荐Chrome浏览器) 每一个区块链开发的程序员都需要一个界面友好,操作方便 ...
- c++ eos智能合约开发_十分钟教你开发EOS智能合约
EOS环境搭建和启动节点 下面从EOS入门的环境搭建.编译运行一个智能合约.发送一些Aigsen,给大家做一些展示,希望能让非技术人员也有一些收获. 首先下载EOS环境搭建和启动节点.这一步其实还是比 ...
- 十分钟教你开发EOS智能合约
十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...
- c++ eos智能合约开发_TrustBase平台智能合约的开发与实现
2020年11月,TrustBase团队研究并实现了基于Web的波卡智能合约应用平台.鉴于波卡智能合约开发缺少完善易用的开发工具的支持,TrustBase团队自主开发了基于Substrate框架的全新 ...
- EOS智能合约开发(四)EOS智能合约部署及调试(附编程示例)
EOS的智能合约里面有一个action(动作)和transaction(交易)的概念. 对于我们开发以太坊开发者来说,基本上只有transaction的概念.如果我只要执行一种操作,而且是只读操作,就 ...
- EOS智能合约与DApp开发入门教程
EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化应用(Decentralized Application)而设计,其代码开源. 比特币被称为区块链1.0,因为它开 ...
- c++ eos智能合约开发_[EOS智能合约]第二节:用EOS开发一个To-do List小应用
EOS Asia 本教程原文作者为EOS Asia,亚洲最具技术实力和最国际化的EOS超级节点竞选者.EOS Asia 同时也是EOS Gems和Traffic Exchange Token这两个项目 ...
最新文章
- DIOCP (一) DIOCP常见问题。
- python3 url 编码 解码
- 哪里的草莓质量又好又便宜呢?水果批发市场(前提你买的得多)
- python爬取淘宝数据魔方_淘宝数据魔方技术架构解析
- 见过的最详强的讲ESP定律脱壳(推荐)
- python 有趣的爬虫_Python有趣|微博榜单爬虫,尽知天下事
- 海康、大华连接相机失败:未安装USB3驱动或驱动无效
- 迷你博客的少年烦恼:Twitter的中国效仿者
- 2022-2027年中国股权众筹行业市场调研及未来发展趋势预测报告
- html5 safari浏览器 全屏显示 隐藏工具条,HTML5全屏API不IPhone SE Safari浏览器工作,也...
- 一个简单好用的磨皮祛斑算法理论和python实现
- 什么是IDaaS?IDaaS有什么应用意义?
- 在Linux服务器上如何开启安全的SNMP代理
- 2021年中山大学计算机专业学硕复试线,2021中山大学研究生分数线一览表(含2019-2020历年复试)...
- js写css字体,js如何写出css动画 ?js写css动画的方法(代码)
- 探究vite——新一代前端开发与构建工具(一)
- 基于 QPlay 的智能无线流媒体传输音箱的设计
- 通过emmc分区挂载根文件系统
- RVO避开agent
- Codeforces841B Godsend
热门文章
- 互联网上的“罪恶之城”:40多国联合行动才端掉它
- 麓言信息平面设计师自学怎么学-自学平面设计从哪里入手
- Angular ng-repeat 单选框默认选中第一个
- JNI第一天 JNI基本数据类型
- 从vue迁移到react_从AngularJS迁移到React-您如何衡量性能提升?
- 带你了解数据库的存储过程
- A Robot 3C Assembly Skill Learning Method by Intuitive Human Assembly Demonstration论文解析
- 【实习日记】SEO 优化和系统升级弹窗
- Python字符串介绍详解
- 说说这些年命理上遇到的婚姻情感问题?