最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发

  • 前言
  • 环境
  • 重点声明:
  • 1,安装虚拟机也好, 双系统也好, 把Linux装了
  • 2, 安装EOSIO开发环境, 使用js4eos 可以跳过这一步, 直接进入第三步
  • 3, js4eos编译, 部署eos合约
  • 前端调用合约, scatter钱包授权
  • 4, 后台调用

)

前言

EOS做为一个新发行的货币, 目前在代币市场的热度也是比较高, 你想从事EOS代币,智能合约开发, 你首先得具备以下知识点,

  1. 必需得懂一门编译语言 ,这是你开发的基础, 逻辑思维很重要;
  2. 有一定的前端开发经验, 本教程会涉及EOS前端开发
  3. 有web开发经验, 最好会一门后端开发语言, 目前不能完全去中心化;
  4. 最好会Linux, Mac也可以, 目前EOS合约只支持C++编写, 楼主买不起Mac, 所有使用的是Linux ;
  5. 最后你得有耐心;

环境

  1. Linux 内存8G+ 硬盘40GB+ 可以使用虚拟机, 但是要把配置提高,EOSIO安装环境需要使用, 你如果不够, 也有办法解决
  2. Windos 这个不是必需的, 写代码方便而已
  3. NodeJS 后台推荐使用语言, 版本不要低于8.0.0
  4. EOSIO 智能合约编译部署环境, 网上有js4eos方式, 不用安装eosio, 也就是说Linux的配置可以省去

重点声明:

博主已经躺了不知道多少坑,才实现, 由于开发环境升级较快, 楼主也不想重复造轮子, 很多教程将已链接形式提供, 博主稍加点拨,

1,安装虚拟机也好, 双系统也好, 把Linux装了

虚拟机安装: http://www.nocmd.com/740.html
注意下载链接哪里有激活秘钥, 安装之后输入进去就行了, 双系统就不需要安装虚拟机了

Ubuntu 18 https://www.ubuntu.com/download/desktop
版本更新了没有关系, 下载最新版的就行了,

虚拟机安装Ubuntu : https://jingyan.baidu.com/article/ad310e801a04db1849f49e3a.html
老老实实看

2, 安装EOSIO开发环境, 使用js4eos 可以跳过这一步, 直接进入第三步

不要问我怎么进Linux
执行命令安装git: apt install git 或者 yum install git
这里有一个坑, 需要开启root,
输入 sudo passwd
不停的重复输入密码回车,设置你的开启root密码
输入 su 会让你输入密码, 输入你设置的root密码, 就可以安装git了

执行命令下载eosio源码
重要 : git clone -b v1.3.x https://github.com/EOSIO/eos --recursive
不要git最新的eosio, 那个版本没有eosiocpp, 网上很少教程
完成了上面的这步之后,接下来就是编译EOSIO,也是最耗时间的一步,如果在配置比较低的机器上(2核8G云主机,大概需要5个小时左右),在命令行敲入如下指令:
执行 cd eos

中间某些情况下可能会出现编译错误,只要最后没有见到一个用ASCII码显示的EOSIO这几个字母,就是用标点符号拼出来的EOSIO, 就是没有编译成功,导致没有编译成功的问题有很多种,如果有碰到这种情况,请输入:
执行 ./eosio_build.sh
如果./eosio_build.sh 失败了, 卡住不动了, 再次执行就好了, 不会重复加载的

最后一步!
./eosio_install.sh
这一步在一分钟之内会执行完成,然后恭喜你!已经完成了冗长的软件环境的准备工作。

首先我们在contracts目录下从skeleton合约(skeleton的意思就是骨架,可以理解为是一个空的项目)创建一个chatroom目录:
cd contracts
cp skeleton chatroom
cd chatroom
mv skeleton.hpp chatroom.hpp
mv skeleton.cpp chatroom.cpp

接下来我们选择我们平常经常使用的代码IDE来打开chatroom.cpp,进行修改。我们要提供一个接口叫say,目的就是为了区块链上能够记录下哪个用户说的哪句话,所以我们要把hi这个接口改成say,并且增加一个参数content,聊天的内容。我们的思路是用区块链的log来记录所有的聊天信息。改完之后代码如下:

#include <eosiolib/eosio.hpp>using namespace eosio;class chat : public eosio::contract {public:using contract::contract;/// @abi actionvoid say( account_name user, std::string content) {require_auth(user);eosio_assert( content.size() <= 256, "chat content need to have less than 256 bytes." );eosio_assert( content.size() > 0, "chat content needs to have at least 1 byte." );}};EOSIO_ABI( chat, (say) )

至于合约怎么写, 可以参考, https://eos.readthedocs.io/zh_CN/latest/ eosio开发中文文档

编辑完之后,我们开始编译,最终要编译出chatroom.wasm和chatroom.abi,这两个文件是最终要传到链上的,其中abi是接口的描述文件,wasm是合约的二进制代码,通过以下命令:
eosiocpp -o chatroom.wasm chatroom.cpp
eosiocpp -g chatroom.wasm chatroom.cpp
不止这几个文件, 请参考这个文章 http://www.blockchainbrother.com/article/2906
把需要编译的文件搞出来, .cpp的内容就不用改了, 主要看他怎么编译的

启动测试链

接下来我们就要在我们自己的链上来测试这段合约的运行情况,第一步我们要做的就是把链给启动起来。
首先修改config.ini文件,首先先敲一次nodeos命令,会报错,没关系,我们要先第一次运行来产生默认的config.ini,默认会生成在如下地方:

  • Mac OS: ~/Library/Application Support/eosio/nodeos/config/config.ini
  • Linux: ~/.local/share/eosio/nodeos/config/config.ini

要进行如下的修改:

filter-on = *
enable-stale-production = true
producer-name = eosio
signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
plugin = eosio::chain_api_plugin
plugin = eosio::history_plugin
plugin = eosio::history_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::bnet_plugin
plugin = eosio::producer_plugin

signature-provider保持公钥和genesis.json里面配置的一样即可,保存好修改

通过如下命令启动:

nodeos --delete-all-blocks
如果开始产块就一切正常,屏幕会不停的刷, 那就是正常, 不要停止, 打开一个新的命令行

部署
如果出现钱包的各种问题, 请先翻译报错, 然后访问 http://eosfans.io/wiki/cleos-command-reference 找到对应的解决方案

第一次运行的话我们需要准备好一个钱包文件,通过cleos wallet create来创建一个默认钱包,记住输出的privatekey秘钥,然后执行:

cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

来导入刚刚配置在config.ini里面的私钥,这个私钥控制的是eosio账号,我们需要通过这个账号来给我们创建一个部署合约的账号,命令如下:

cleos create account eosio eosio.chat EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

我们这里用和eosio同样的公钥,这样开发的过程中比较简单,实际在主网上部署的话,要用其他的方法,这个会在接下来的教程中详细介绍。

然后我们把合约部署到刚刚创建的eosio.chat账号下:

cleos set contract eosio.chat contracts/chatroom

不出问题正常的情况下,我们会看到:

Reading WASM from contracts/chatroom/chatroom.wasm...
Skipping set abi because the new abi is the same as the existing abi
Publishing contract...
executed transaction: b3cf96a311ee718d9cc9b934fe010401f6e046faa7eb00feba176dfca62586e8  2752 bytes  486 us
#         eosio <= eosio::setcode               {"account":"eosio.chat","vmtype":0,"vmversion":0,"code":"0061736d01000000013c0c60037f7e7f00600000600...
warning: transaction executed locally, but may not be confirmed by the network yet         ]

这样类似的输出,这样就表示我们的合约已经部署成功了!

调用
在保持钱包打开的情况下,我们通过如下的命令来实验我们刚刚部署到测试网的合约:

cleos push action eosio.chat say ‘{“user”:“eosio.chat”,“content”:“hello world”}’ -p eosio.chat@active
如果你的eosio.chat 密码忘记了, 可以尝试用eosio账户进行部署

如果提示钱包已经锁上,则需要用cleos wallet unlock —password <钱包密码>来解锁再进行上面的调用。

这个时候如果不出问题的话,可以得到如下的类似的输出:

executed transaction: a37e4f797c7349b02faa164cb14ae36baf5cafa746379718e46c3655fa920085  120 bytes  179 us
#    eosio.chat <= eosio.chat::say              {"user":"eosio.chat","content":"hello world"}
warning: transaction executed locally, but may not be confirmed by the network yet         ]

那么我们如何看我们的聊天记录呢?我们通过cleos get actions eosio.chat的返回值类似:

#    2   2018-10-25T10:45:57.500           eosio.chat::say => eosio.chat    c2f372ec... {"user":"eosio.chat","content":"hello world"}

部署到主链就换个网络就好了, 现在是测试网络, 需要配置nodeos生成的config.ini文件

3, js4eos编译, 部署eos合约

还是Linux, 安装Nodejs 参考 https://blog.csdn.net/wangtaoking1/article/details/78005038
js4eos 比较简单, 网上又有很多教程, 这里就直接发地址了 https://blog.csdn.net/ITleaks/article/details/83277378

有一个坑就是,TMD的那个测试网络我一直没测通, 获取不了免费的EOS, 最后合约没有部署, 很烦, 但是js4eos 还是能部署的

前端调用合约, scatter钱包授权

安装scatter 钱包, 下载链接 https://www.chromefor.com/scatter_v6-1-10/
安装到谷歌游览器, 如果安装失败, 请自行百度, 谷歌游览器插件安装失败怎么办!

注册eos账户, 可以让老用户帮你注册, 若不想麻烦就下载一个麦子钱包, 里面可以注册eos账户, 账户选择EOS, 不是EOS原力,
APP下载链接: http://www.mathwallet.org/cn/

scatter 钱包里面有绑定的eos账户, 需要操作他进行授权
这一套是没有框架的, 全是js, 这是一套搭建好的项目, 可以进行登入, 和调用合约
链接:https://pan.baidu.com/s/1-O7W-7dbuzD7e4j0yh3zkA
提取码:24v1

4, 后台调用

使用命令行插件, 使用cleos语法这样是最简便的
Nodejs 插件: require(‘child_process’);
JAVA也有, 自己百度去吧,
直接操作命令行,接收返回,自己解析
有问题发邮箱 1559733088@qq.com
我尽量回复, 目前EOS网上教程还是挺少的, 别喷我
以太坊智能合约代码, 我没有写注释, 能看懂的就看吧…
链接:https://pan.baidu.com/s/1QSvmWCPUBFzx2W4yu_sBWQ
提取码:6b2l

最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发相关推荐

  1. linux iis 环境配置教程,Linux系统Java环境配置教程

    1.卸载Linux系统自带的JDK 我们要删除掉自带的JDK环境 再次查询是否已经删除 2.安装自己下载的JDK 2.1 下载JDK,地址: http://www.oracle.com/technet ...

  2. 2022最新H5盲盒交友系统

    2022最新H5盲盒交友系统 测试环境:Nginx+PHP7.2+Mysql5.6 删除PHP7.2的禁用函数,安装扩展sg11 网站运行目录 /public 伪静态设置为 thinkphp 数据库配 ...

  3. 基于JAVA物业后台管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA物业后台管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA物业后台管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  4. EOS智能合约与DApp开发入门教程

    EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化应用(Decentralized Application)而设计,其代码开源. 比特币被称为区块链1.0,因为它开 ...

  5. win2003系统服务器搭建,最新版WIN2003系统服务器环境搭建教程.doc

    最新版WIN2003系统服务器环境搭建教程 ==================================================================== 新网合租特此说明: ...

  6. Alios-Thins教程连载 ①如何搭建阿里开源系统Alios-Things环境,烧录到乐鑫esp8266,打印 HelloWorld 。(附带镜像)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 如何搭建阿里开源系统Alios-Things环境,烧录到乐鑫e ...

  7. 原神服务端搭建架设教程win系统(附客户端+服务端+环境配置)

    原神服务端搭建架设教程win系统(附客户端+服务端+环境配置) 大家好,我是艾西原神一款开放世界冒险3D游戏以七种元素(分别为风.雷.岩.火.水.草.冰)交汇的幻想世界"提瓦特"创 ...

  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建

    第 1 章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的.Android Studio的开发环境是如何搭建的.如何创 ...

  9. 安装飞利浦系统服务器,飞利浦电视小飞OS系统最新软件安装教程!

    本帖最后由 路人甲是野百合 于 2020-8-19 15:34 编辑 近日楼主看到不少网友在问飞利浦电视怎么安装第三方软件和当贝市场的问题,至于一些常规的安装方法可以参照这里:https://www. ...

最新文章

  1. windows下安装pygtk报g_assertion_message无法定位libglib-2.0-0.dll错误解决
  2. Cannot determine Numba type of <class ‘numba.core.dispatcher.LiftedLoop‘
  3. python hook教程_python中使用pyhook实现键盘监控的例子
  4. ArrayList不是并发安全的?那么在高并发环境下怎么使用集合
  5. cmake使用教程(一)-起步
  6. 有重复元素的排列问题pascal题解
  7. linux oracle 创建表空间2016,Linux下Oracle表空间及用户创建
  8. lucene学习笔记_学习Lucene
  9. 如何从过滤器中排除URL
  10. mysql参数配置调优详解配置(1)
  11. MyEclipse: The Table cannot be found on the database
  12. 【报告分享】2020中国股民图鉴.pdf(附下载链接)
  13. Nginx valid_referer 防盗链
  14. linux新手记录;可执行文件直接运行
  15. 贪吃蛇html游戏代码
  16. Scala(1) -- Scala下载安装及idea环境配置
  17. 计算机论文鉴定表指导教师评语,毕业论文指导老师评语|毕业论文鉴定表评语...
  18. 【生活】驾照C1-科二手册
  19. 做了个小程序,拿到天使轮投资了!
  20. 【2011年全国试题3】已知循环队列存储在一维数组A[0…n-1],且队列非空时,front和rear分别指向队头元素和队尾元素。若初始时队列为空,且

热门文章

  1. python3.x中的生成器generator调用next方法
  2. ubuntu查看文件和文件夹大小
  3. 傅里叶变换的Matlab代码
  4. Java和js常用表达式
  5. java 生成 防伪码,C#生成防伪码的思路及源码分享
  6. 一b变频器说明书参数一览表_电工常见的23个变频器问题整理,附专业解答
  7. Java+Selenium3.3.1环境搭建
  8. LDD3源码分析之阻塞型I/O
  9. python 3.7.3 运算7错误_Python中通常不应该犯的7个错误
  10. 一元享移动怎么样_移动大王卡千万别买!!!