EOS区块链技术开发(二)智能合约
强烈建议直接去看EOSIO官网上的教程:https://developers.eos.io/
不要看我的??博文了,以下博文就是我当时随便写写的,现在也没有什么时间详细修改。如果有问题可以提问。
注:由于EOSIO仍在不断更新,所以以下内容的一些步骤可能会在将来某天失效。本开发手册编写时间是在2018.10至2018.11.可能会不断更新。
说一下EOSIO软件和EOS区块链的区别:就行Linux源码和实际跑在机器上Linux操作系统一样。
3 智能合约编写
搬运自EOSIO官网:
第一个智能合约
智能合约就看这个网站:
https://developers.eos.io/eosio-cpp/docs/introduction
要玩转EOS(写Dapp),你需要精通智能合约编写+cleos、nodeos等命令操作。其中第二部分是你对于eos整个体系的运转、实现的了解程度的体现。
总结一下我现在知道的关于智能合约编写的内容:
3.1 是什么
智能合约就是一个区块链意义下的程序,放在区块链节点上的代码(相当于中心化服务器中的程序)。这个程序可以说是一个cpp文件,带有一个类,这个类必须继承contract类。在这个类中写成员变量和成员函数。部分函数会是action。要成为一个action,需要定义宏,比如:
EOSIO_ABI( hello, (hi))
于是最后最后可以被调用。
这个宏起的作用是dispatching,但是也有其他dispatching的方法。
除此之外,这个类中还应该有table类的结构和相关代码用于数据持久化技术。
3.2 怎么用
智能合约写好以后,首先需要编译,使用命令:
eosio-cpp -o hello.wasm hello.cpp –abigen
就可以编译该文件为abi文件+wasm文件。其中abi文件是类Json的传递数据结构、控制信息的文件。但是有的时候abi文件会出错,所以需要手动改。Abi文件十分重要,从智能合约最后一定要写ABI的宏就知道,abi文件有点类似于血管,流通在整个智能合约体系中。
成功得到abi和wasm文件后,就可以部署智能合约了:
cleos set contract hello CONTRACTS_DIR/hello -p hello@active
你必须要把合约和一个account绑定。所以通常你会为每个智能合约创建一个账号。
最后,当合约部署完毕,你就可以使用它了。比如:
cleos push action hello hi '["bob"]' -p bob@active
3.3 数据存储
EOSIO好像不是用数据库来存储数据的,而是用自己创建一个结构体,并且自定义一些函数来完成数据的update /insert等操作,这种数据结构(Schema)成为multi-index(说实话只要只有多属性的数据肯定是多索引的吧…)。这或许是因为eos体系中的账户信息等都是存在内存中的原因吧。
3.4 关于EOS的设置:主要是针对插件–plugin
config.ini的路径前面说过了:
cd ~/Library/Application*Support/eosio/nodeos/config
EOS区块链技术开发(二)智能合约相关推荐
- EOS区块链技术开发(〇)起源
EOS区块链技术开发(〇)起源 1 Why 1.1 EOS区块链 1.2 CSDN 2 How 3 What 参考资料 1 Why 1.1 EOS区块链 为什么选择EOS呢?自然是因为性能.ETH的性 ...
- EOS区块链技术开发(一)环境搭建
强烈建议直接去看EOSIO官网上的教程:https://developers.eos.io/ 不要看我的??博文了,以下博文就是我当时随便写写的,现在也没有什么时间详细修改.如果有问题可以提问. 注: ...
- 区块链技术必杀技之——智能合约
区块链技术智能合约 1.1 什么是智能合约 虽然在法律范畴上来说,智能合约是否是一个真正意义上的合约还有待研究确认,但在计算机科学领域,智能合约是指一种计算机协议,这类协议一旦制定和部署就能实现自我执 ...
- 区块链应用开发(智能合约的开发和WeBASE合约IDE的使用)
文章目录 四.智能合约的开发和WeBASE合约IDE的使用 一.实验概述 二.实验目标 三.实验环境及建议 四.实验步骤 4.1 启动Webase 4.2 智能合约开发 4.2.1 合约功能设计 4. ...
- 【区块链技术开发】ganache-cli指令与Windows10桌面版的ganache区别
专栏:[区块链技术开发] 前期文章: [区块链技术开发]智能合约与图像存储在外部存储器IPFS(InterPlanetary File System) [区块链技术开发]十个比较流行的以太坊智能合约开 ...
- 【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式
专栏:[区块链技术开发] 前期文章: [区块链技术开发]基于Web3.js以太坊网络上的智能合约的交互及其应用 [区块链技术开发]OpenZeppelin智能合约库:提高智能合约的安全性和可靠性,加速 ...
- 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码
专栏:区块链技术开发 目录 1.介绍Truffle Box 2.Truffle Box功能方法 3.Truffle Box模板案例 truffle Box预构建模板的示例代码 运行构建模板的示例代码 ...
- 蚂蚁区块链投票案例(二)---投票合约设计开发
文章目录 摘要 背景 案例场景 用例分析 系统管理员注册 添加小区.添加房屋 编辑房屋 发起投票 统计投票 业主注册 业主实名认证 客房关系认证 投票 合约设计 设计原则 合约设计 合约开发 命名规则 ...
- 不容错过 | 超干货免费公开课「EOS区块链应用开发入门实战」,文末送书!
扫码报名,观看直播课 区块链的发展,被认为是新一代互联网WEB 3.0.从原则上讲,要真正借鉴互联网成功发展几十年的经验,而不是简单照搬 web 1.0 的方式各种炒作.今后的正确发展方向是把互联网成 ...
最新文章
- LabVIEW图像特征与机器视觉概念(理论篇—4)
- Scala Trait详解
- 苹果发布首款 Mac 自研芯片 M1,贯通生态快人一步!
- 用python画xy散点图-使用python绘制散点图并标示密度
- HDU2204 Eddy's爱好(容斥原理)
- Spring5-IOC底层原理
- win7无损扩大c盘空间_无损网络导航的空间模型
- 面向小姐姐的编程——JAVA面向对象之继承(三)
- 详解Nacos的高可用特性(转载)
- 哪些Mac快捷键可以精准定位光标位置
- 2022年版中国电子信息产业趋势预测及投资战略规划分析报告
- 加权平均数的例子_什么是加权平均数(加权平均数公式例子)
- 华为服务器设置raid0为系统盘,服务器设置raid0
- Apache主机如何强制HTTP重定向到HTTPS WorldPress
- surface哪些可以升级win11
- 三级面包屑的页面跳转到二级面包屑页面时,报错:Rendered fewer hooks than expected.
- 全国应用计算机水平考试,全国计算机应用水平考试
- 程序基石系列之C++多态的前提条件
- 《计算机网络技术》第四章课后习题答案(全)
- 什么是 PKI? 公钥基础设施的定义和指南