EOS区块链应用开发指南_虞家男 编著_AZW3_MOBI_EPUB_PDF_电子书(无页码)_虞家男 编著
内容节选
4.1 什么是EOS智能合约 在真实世界中,合约本质上就是对大家都同意的一组输入(Input)经过处理(Action)的输出结果(Outcome)的治理。合约的类型可以是法律智能合约,也可以是其他,但都是对某种“游戏规则”的定义。其处理的内容可以是资金的转账等。 EOS智能合约是写在EOS区块链上的程序,然后由超级节点来运行。智能合约定义了接口(Action、参数、数据结构)以及实现接口的代码。这些智能合约代码被编译成字节码形式由超级节点来执行。区块链保存了所有智能合约的记录。每一个智能合约必须实现相应的李嘉图合约,从而绑定法律相关条款。 4.2 C/C++ 基于EOS.IO的区块链使用的是WebAssembly(WASM)来执行用户编写的智能合约。WASM是一种新兴的Web标准,谷歌、微软、苹果等公司都提供了支持。对编写WASM标准的智能合约来说,使用Clang/LLVM和它的C/C++编译器是目前最成熟的编译工具链。 开发中其他的第三方工具链包括Rust、Python和Solidity等。虽然这些语言看起来相对简单,但它们可能会影响你所编写的智能合约的性能。对于开发高性能和安全的智能合约来说,C++是最好的语言,将来EOS的智能合约还会继续支持C++。 4.2.1 预处理和头文件 代码的开头声明了头文件,主要是EOS智能合约的API库: 4.2.2 构造函数 智能合约的类名可以与智能合约名不同,智能合约名是其账户名。构造函数为空,参数为智能合约账户名: 4.2.3 私有函数 私有函数都是工具函数,供类内部的其他函数调用。 4.2.4 公有函数 EOS智能合约中的公有函数大多数是供别的账户调用的Action,根据hpp文件,我们需要实现create、issue、transfer这3个公有函数(Action)。 4.2.5 设置Action EOS系统的智能合约是以Action为基本操作单位的,我们要将需要声明为Action的函数告知EOS系统,通过以下宏即可实现: 4.2.6 .h、.hpp和.cpp文件 1. 头文件 没有.h文件,程序也能正常工作。.h文件中包含了一些公共的内容,所有需要使用公用函数的.cpp,只需用#include包含即可;.h文件做的是类的声明,包括类成员的定义和函数的声明。 与.h文件类似,.hpp文件是C++程序的头文件和一般模板类的头文件。 一般来说,.h文件里只有声明,没有实现,而.hpp文件里声明和实现都有,.hpp文件可以减少.cpp文件的数量。 2. 程序文件 “#include”不是指令,它只是将指定文件的内容原封不动地复制进来。所有的内容都放在一个.cpp文件内,编译器会将这个.cpp文件编译成.o文件,即编译单元。一个程序可以由一个编译单元组成,也可以由多个编译单元组成。一个.cpp文件对应一个.o文件,然后将所有的.o文件通过链接器链接起来,组成一个可执行程序。如果一个.cpp文件要用到另一个.cpp文件定义的函数,需要在第一个.cpp文件中写上另一个.cpp文件的函数声明。 .cpp文件的开头一般是#include".h",相当于把.h文件的内容复制到.cpp文件的开头,这与将内容全部写在.cpp文件中其实是一样的。 4.3 WebAssembly EOS使用WebAssembly对智能合约的C++代码进行编译和执行,其核心原因就是WebAssembly性能好。 JavaScript是一个叫Brendan Eich的开发者用10天时间做出来的。因此,JavaScript存在一些“天坑”,其最大的问题是性能慢。随着Web App越来越复杂,这个“慢”渐渐变得不可忍受。然后,各种解决方案被提出,最新潮的一种就是WebAssembly——使用C++代码编译为wast文件,然后Node.js能直接执行这个文件,从而使其运行速度变得非常快,乃至Web App有望达到原生App的性能。 WebAssembly是一种新的字节码格式,缩写是WASM,提供了一种新的底层安全的二进制语法。WebAssembly的技术原理比较复杂,本书就不展开了,可以参考相关资料。 除了C/C++,还有其他更多的编程语言,比如Java,都属于编译型语言。而浏览器是无法运行编译型语言的,只能运行另一类编程语言——解释型语言。 编译型语言是把源代码先编译为机器码(也就是可执行程序,比如.exe文件),运行时只需要把机器码交给CPU执行即可。编译型语言的优点是运行速度快、效率高,缺点是可移植性差。 解释型语言直接以源代码的形式出现,运行时再解析为机器码并执行。所有的脚本语言(比如,JavaScript)都是解释型语言。解释型语言的特点是不能独立存在,必须寄生在其他程序(比如,浏览器)内。 因此,WebAssembly就像......
- 信息
- 作者简介
- 前言
- 第1章 初识EOS
- 1.1 区块链操作系统
- 第2章 EOS的工作原理
- 2.1 EOS系统架构
- 第3章 开发工具和环境
- 3.1 EOS客户端安装
- 第4章 编写智能合约
- 4.1 什么是EOS智能合约
- 第5章 EOS RPC接口
- 5.1 配置插件
- 第6章 创建和部署DApp
- 6.1 什么是DApp(去中心化应用)
- 第7章 部署基于EOS的侧链
- 7.1 主链和侧链
- 本书总结
- 参考文献