智能合约(1):编写第一个智能合约HelloBOS。
《区块链财富指北》系列文章由NOCY.COM策划,肖南飞主笔撰写。
技术选型基于BOScore公链,旨在以有趣易懂的方式传播普及区块链技术,不构成任何投资建议!
0x01 传统金融的颠覆者
陈志武教授在《金融通识课》中有一句贯彻全篇的总结:
“金融的本质是价值的跨时空交换。
而合约,就是价值跨时空交换的载体。
人类社会文明发展之初至现在,社会经济秩序的构建都是基于传统合约来实现的,
如保险合约、贸易合约等等。
传统合约,最大的痼疾在于违约风险,即合约中利益方不履约。
智能合约,就是将合约条款通过代码形式进行锁定和传递,并且由代码直接干预和分配。
它杜绝任何可能的人工干预(如欺诈)及不确定性(如违约、纠纷),让合约结果变得更为清晰、可预测。
智能合约的出现第一次将区块链的应用从单纯的支付转账扩展到了所有的商业逻辑。
智能合约正在席卷传统金融行业,成为游戏规则颠覆者。
0x02 安装CDT开发包
CDT的全称是Contract Development Toolkit,翻译过来就是智能合约开发工具包。
BOSCore的CDT开源地址:https://github.com/boscore/bos.cdt
拉取cdt的docker最新版,截止本文是v3.0.2版本:
docker pull boscore/cdt:v3.0.2
新建boscdt文件夹,然后启动CDT容器,映射boscdt文件夹到容器的/data目录,并保存在后台一直运行:
docker run --name boscdt -v ~/boscdt:/data -itd boscore/cdt:v3.0.2 /bin/bash
查看下运行情况:
docker ps
以后,只需要用下面的exec命令就可以进入boscdt容器内,执行编译智能合约等各种操作:
docker exec -it boscdt /bin/bash
0x03 安装VScode编辑器
VScode是微软主导开发的一款免费,开源,轻量,跨平台代码编辑工具。
官方下载地址:https://code.visualstudio.com/Download
VScode是近年来非常流行的代码编辑器,相关下载使用教程在网上搜索即可,在此不再展开。
代码编辑器,各有所好。如果你有原来用的乘手的,直接用原来的即可。
0x04 编写第一个智能合约代码
在boscdt文件夹下建立一个名为boscfzb12345的新文件夹。
在boscfzb12345文件夹内创建boscfzb12345.cpp。
在EOSIO系统中,创建智能合约时通常将命名文件及文件夹与部署的账户名称保持一致。
即:要在boscfzb12345账号上部署的智能合约,取名为boscfzb12345.cpp即可。
在boscfzb12345.cpp中输入如下代码:
#include <eosio/eosio.hpp>
using namespace eosio;
class [[eosio::contract]] boscfzb12345 : public contract {
public:
using contract::contract;
[[eosio::action]]
void hi( name user ) {
print( "Hello, ", user);
}
};
保存后,使用eosio-cpp编译该源文件。
eosio-cpp -o boscfzb12345.wasm boscfzb12345.cpp
在VSCode编辑器中,boscfzb12345.cpp同级文件夹里出现了同名的wasm和abi两个编译后文件。
0x05 部署合约到BOS主网
下面我们将合约部署到BOS主网的boscfzb12345账号。
cleos -u https://api.boscore.io set contract boscfzb12345 ~/boscdt/boscfzb12345 -p boscfzb12345@active
然后,用boscfzb12345发送Action测试下。
cleos -u https://api.boscore.io push action boscfzb12345 hi '["boscfzb12345"]' -p boscfzb12345@active
发送成功。
合约的print命令并没有在命令行后面打印出“Hello,boscfzb12345”。
这是因为我们是直接在BOS主网上,对应主网节点没有配置–contracts-console来开启合约调试模式。
再在区块浏览器上查看下boscfzb12345账号。
https://bos.bloks.io/account/boscfzb12345
boscfzb12345账号下多了一个Contract选项。
这意味着该账号已经部署了一个智能合约,在该选项下还可以看到hi这一操作选项。
0x06 下篇内容预告
在下篇文章里,我们继续探索智能合约。
智能合约(2):发行自己的链上通证(Token)。
Token一词,开始有人翻译为“代币”,好理解但是不够准确。
孟岩老师后来重新把token翻译为“通证”,即可流通的加密数字凭证。
既包含有代币、积分的意思,也可以理解为进入某区块链项目的通行证。
通证(Token)本身是没有价值的,只是价值的载体。
需要依附于链上或者链下的项目,来承载对应的价值。
当然,共识也是一种价值,而且是一种很强大的价值。
比如黄金、比如比特币,他们的价值主要来源于强大的共识。
在这篇文章里,我们来体验下如何发行自己的链上通证(Token)。
0x07 联系及投票支持
《区块链财富指北》系列文章github存档地址:http://nocycom.github.io。
NOCY.com团队致力于区块链基础知识传播,欢迎读者朋友留言共同交流。
由于发文时间仓促及区块链领域技术迭代频繁,在教程中可能有这样或那样的错漏之处,还请读者与我们一起查漏补缺、将系列教程优化的更好。
如果觉得这系列教程有点意思,请投票支持我们的节点:BOS公链NOCYCOM节点,EOS公链NOCYCOM节点。您的投票是本教程持续更新的动力源泉,谢谢。