源代码解读 [EOS 源码分析] 24 - eosiolib 库和 chain 库、fc 库的关系

Admin · 2019年12月21日 · 46 次阅读
本帖已被设为精华帖!

EOS 源码分析系列文章,由技术作者松果撰写。为帮助更多开发者了解,特获授权转载至此。感谢松果兄支持。

img

上一篇文章介绍了Action的数据结构,并结合实例分析了EOS区块的数据结构。在分析过程中大量使用了eos项目源码中的eos/libraries/chain库下的源文件,chain库中的头文件和之前介绍的eosio.cdt的eosiolib库中的头文件大部分比较类似。还有作为EOS基础库的fc库也提供了很多基础数据类型,这篇文章来分析这几个库之前的关系。

eosiolib库

eosiolib库属于eosio.cdt项目,位于eosio.cdt/libraries/eosiolib,包含的源文件和结构如下图所示:

img

eosiolib库中存放的主要是编写EOS智能合约需要引用的头文件:

  • 红色:core

  • 黄色:contracts

  • 蓝色:capi

  • 紫色:外部文件

eos/libraries/chain库

chain库属于eos主项目,位于eos/libraries/chain,包含头文件和cpp文件:

img

eos/libraries/fc库

fc库属于eos主项目,位于eos/libraries/fc,包含头文件和cpp文件:

img

fc库下的头文件按照功能存放在不同的子文件夹中:

img

eosiolib库和chain库、fc库的关系

eosiolib库可以看成为了方便EOS智能合约开发,从chain库和fc库中抽取出的代码子集。

eos/libraries/chain库不但包含eosiolib库中的基本数据类型和函数,还定义了C++和WebAssembly交互的代码。eosiolib库中的底层函数最终也要通过chain/wasm_interface.cpp中定义的一系列函数,才能转换成WebAssembly并在区块链上执行。

eosiolib库中的头文件很多在eos/libraries/chain/include/eosio/chain目录和eos/libraries/fc/include/fc目录下都能找到对应的头文件,下表列出了eosiolib库中头文件在chain、fc目录下的存在情况。

eosiolib chain fc 说明
capi group eosio.cdt的C语言API,有10个.h头文件
eosio.hpp EOS智能合约引用的基础头文件
check.hpp 断言
print.hpp 打印
serialize.hpp 序列化
varint.hpp 可变长度整型
datastream.hpp 数据流
time.hpp 时间
name.hpp 名称
symbol.hpp 符号
asset.hpp 资产
rope.hpp 升级版string
binary_extension.hpp 二进制扩展容器
ignore.hpp 忽略
fixed_bytes.hpp 固定(字节)大小的数组
crypto.hpp 加密算法
system.hpp 系统函数
contract.hpp 合约
action.hpp Action
transaction.hpp 交易
permission.hpp 权限
multi_index.hpp 多索引表
singleton.hpp 单例
dispatcher.hpp Action分发
producer_schedule.hpp 区块生产计划
privileged.hpp 权益

更多内容

币圈信息站开发目录

EOS开发系列目录

共收到 0 条回复
Admin 将本帖设为了精华贴 12月21日 17:49
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册