EOS源代码架构解析(三)

eos项目(v1.0.9)主要可以分为以下八个模块:

  1. 编译模块

  2. 主程序模块

  3. 依赖库模块

  4. 插件模块

  5. 智能合约模块

  6. 测试模块

  7. Docker工具模块

  8. 文档说明模块

 

 

 

5、智能合约模块

 

 

EOS项目的基本功能是通过系统合约提供的,用户可以调用已经部署上链的智能合约实现特定的功能,也可以通过C++语言自行编辑.cpp智能合约,并通过系统提供的eosiocpp编译器将.cpp、.hpp文件编译成.wasm和.abi文件部署上链,下面简单介绍一下eos项目中智能合约文件夹下的各个合约文件功能,文件结构如下图。

 

 

EOS项目的智能合约代码位于eos/contracts目录下,包括三个层次:

  • 系统合约层;

  • 依赖库层;

  • 测试与示例层。

 

5.1 系统合约层

总结下来,EOS项目共有5个系统级智能合约:

  • eos/contracts/eosio.bios

  • eos/contracts/eosio.msig

  • eos/contracts/eosio.sudo

  • eos/contracts/eosio.system

  • eos/contracts/eosio.token

 

5.1.1 eosio.bios

eos/contracts/eosio.bios合约用于启动EOS的P2P网络,该合约可以直接控制其他帐户的资源分配并访问其他特权API调用,具体启动流程如下:

  • 初始启动节点部署该合约,并设置所需的参数;

  • 待连接节点通过初始启动节点的地址与之相连;

  • 初始启动节点调用bios合约,为待连接节点设置权限。

 

 

5.1.2 eosio.msig

eos/contracts/eosio.msig目录定义了多签系统合约,实现了一个多签功能,由于EOS要求系统的每一次更新都需要出块节点完成一次多签,当签名数达到2/3+1时,更新才能生效。所以出块节点可以调用这个合约实现多签功能。

 

5.1.3 eosio.sudo

eos/contracts/eosio.sudo合约实现了创建EOS系统中root账户的功能,用于修改系统代码与更新合约。

 

5.1.4 eosio.system

eos/contracts/eosio.system目录可以算是EOS系统合约中最重要的部分,实现了EOS项目的所有基本功能:

  • 创建新账户;

  • 部署智能合约;

  • 交易RAM;

  • 抵押获取资源(net、cpu);

  • 投票;

  • 领取节点奖励;

  • ……

 

5.1.5 eosio.token

eos/contracts/eosio.token目录实现了发行token的功能,可以说EOS本身代币或后续基于EOS的代币都是通过该合约发行的,主体函数包括:

  • 发行新代币;

  • 初始分发;

  • 转账;

  • 查询余额。

 

 

5.2 依赖库层

上述5个系统合约的实现离不开一个庞大的依赖库,其中包括数据的定义(account、asset等)、还包括一些常用函数(权限管理、序列化等),我们将在后续的算法分析中结合特定示例详细展开。

 

5.3 测试与示例层

EOS给出了一些有趣的示例合约和测试文件供用户理解原理与测试功能,主要包括:

  • eos/contracts/dice:掷骰子对赌合约;

  • eos/contracts/bancor:bancor算法调用入口文件;

  • eos/contracts/exchange:去中心化交易所合约;

  • eos/contracts/hello:helloworld合约;

  • eos/contracts/social:类似Steem的社交平台合约(只包含基本功能);

  • eos/contracts/test_前缀:一些测试文件。

     


 

 

6-8、其他模块

 

 

EOS项目中的测试模块、Docker工具模块和文档说明模块属于辅助模块,所以放在一起总结。

 

6. 测试模块

EOS提供了一些测试文件,供用户测试节点是否运行正常,其中测试分两大类:

  • 对链功能的测试:包括与区块链之间的数据交互,transaction分发等;

  • 对网络层的测试:包括P2P网络传输功能、cleos与nodeos之间的通信等;

 

7. Docker工具模块

EOS允许通过Docker运行节点或钱包,eos/Docker文件夹下包含了一些通过Docker启动并运行程序的必要文件:

 

 

8. 文档说明模块

最后一章,我们罗列以下EOS给出的一些说明类文档:

  • eos/README.md:节点部署等说明;

  • eos/LICENSE.txt:版本号与许可文件;

  • eos/tutorials:关于主网启动与exchange合约使用教程。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

akai9898

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值