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. 信息
  2. 作者简介
  3. 前言
  4. 第1章 初识EOS
  5. 1.1 区块链操作系统
  6. 第2章 EOS的工作原理
  7. 2.1 EOS系统架构
  8. 第3章 开发工具和环境
  9. 3.1 EOS客户端安装
  10. 第4章 编写智能合约
  11. 4.1 什么是EOS智能合约
  12. 第5章 EOS RPC接口
  13. 5.1 配置插件
  14. 第6章 创建和部署DApp
  15. 6.1 什么是DApp(去中心化应用)
  16. 第7章 部署基于EOS的侧链
  17. 7.1 主链和侧链
  18. 本书总结
  19. 参考文献