最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发
最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发前言环境重点声明:1,安装虚拟机也好, 双系统也好, 把Linux装了2, 安装EOSIO开发环境, 使用js4eos 可以跳过这一步, 直接进入第三步3, js4eos编译, 部署eos合约前端调用合约, scatter钱包授权4, 后台调用, 后期整理, 我先洗个澡!!)前言EOS做为一个新发行的货币,目前在...
最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发
)
前言
EOS做为一个新发行的货币, 目前在代币市场的热度也是比较高, 你想从事EOS代币,智能合约开发, 你首先得具备以下知识点,
- 必需得懂一门编译语言 ,这是你开发的基础, 逻辑思维很重要;
- 有一定的前端开发经验, 本教程会涉及EOS前端开发;
- 有web开发经验, 最好会一门后端开发语言, 目前不能完全去中心化;
- 最好会Linux, Mac也可以, 目前EOS合约只支持C++编写, 楼主买不起Mac, 所有使用的是Linux ;
- 最后你得有耐心;
环境
- Linux 内存8G+ 硬盘40GB+ 可以使用虚拟机, 但是要把配置提高,EOSIO安装环境需要使用, 你如果不够, 也有办法解决
- Windos 这个不是必需的, 写代码方便而已
- NodeJS 后台推荐使用语言, 版本不要低于8.0.0
- 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 action
void 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
更多推荐
所有评论(0)