首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链-CyberMiles区块链源代码分析

CyberMiles的愿景是在区块链基础上打造全新的电商平台。CMT是CyberMiles的项目发行的代币。CyberMiles项目目前测试网络上线,筹备近期主网上线。CyberMiles在Github上公开了区块链项目代码,代号Travis:https://github.com/CyberMiles/travis。

本文从源代码的角度详细介绍CyberMiles的区块链项目的实现以及CMT代币经济模型。

1)整体框架

CyberMiles源代码的整体框架如下图所示:

简单的说,CyberMiles基于Tendermint的共识机制框架,结合了Ethermint以及Cosmos-SDK项目,实现了投票/监管机制以及CMT的代币经济模型。

Base ABCI APP是逻辑入口。stake module实现了投票相关逻辑,governance module实现了监管相关逻辑。和交易状态相关的信息是通过go-ethereum的stateDB存在levelDB中。和投票/监管相关信息存储在sqlite3数据库中。

2)源代码结构

api - RPC接口相关逻辑

app - ABCI APP的相关逻辑,主要是三个APP:base, ethereum和store。

bin - 启动脚本

client - 客户端逻辑(attach到RPC)

cmd - 服务端命令行逻辑

commons - 常用模块(现在是账户管理)

console - js客户端逻辑

errors - 错误定义

genesis - 创世纪块解析逻辑

modules - stake/govenance/nonce/auth模块实现

server - ABCI APP的接口实现

test - 测试代码

types - 类型定义

utils - 工具类逻辑实现

version - 版本相关

vm - 虚拟机状态管理

3)Travis初始化和启动逻辑

初始化和启动代码在cmd/travis目录。初始化命令为:travis node init。

节点初始化,主要是初始化两个功能模块:initTendermint以及initEthermint。

启动命令为:travis node start,启动逻辑调用关系如下:

启动逻辑先启动了go-ethereum的node服务(Ethermint),接着启动tendermint的模块。

4)转账交易流程

通过travis attach命令可以连接到travis提供的RPC服务,用户可以在js的console环境下,提交交易。

第1步:用户通过console接口,连接到go-ethereum的RPC服务,提交交易。

第2/3步:通过Tendermint的MemPool的RPC服务广播相应的交易。

第4步:在Tendermint和其他节点形成共识,生成区块时,通过ABCI接口,通知Base App。

第5步:和交易本身相关的交易,转交给Ethermint处理。

第6/7步:go-ethereum处理交易,并记录状态在levelDB中。

5)投票和验证人相关逻辑

投票以及验证人参选等客户端逻辑在cmd/travis/client.go代码中。服务端的逻辑实现在module/stake目录中。投票人投票以及验证人参选的过程,先封装成一个特殊交易(智能合约创建交易),经过Tendermint达成共识后,由Base App区分开,调用stake模块。相关的流程如下图:

stake module使用Cosmos-SDK,也就是说stack module处理的sdk.Tx结构。Travis将投票以及验证人参选相关的“交易”和代币转账的交易做了统一(投票相关的交易包装成了一个特殊的代币交易):

封装逻辑在commands/txs/s/helpers.go文件中的wrapAndSign函数。

投票以及验证人参选的具体逻辑十分简单,操作sqlite3数据库而已,具体逻辑参看module/stake/db.go。

6)区块奖励逻辑

投票以及验证人的区块奖励逻辑在module/stack/award_calculator.go文件。有关区块奖励,CyberMiles的DPOS的说明中也有详细介绍,可参看另外一篇文章

区块链 - CMT的DPOS共识机制

。值得注意的是,官方的介绍中,验证人的奖励的计算公式有误。

简单的说,CMT每年通胀率为8%。投票人按比例进行分配。投票人奖励的一部分(按补偿比例)分给验证人。

总结:CyberMiles旨在打造基于区块链的电商生态。CMT是CyberMiles的代币名称。Travis是CyberMiles的项目代号。Travis基于Ethermint以及Cosmos-SDK设计公链,增强了投票以及验证人机制。CMT的每年的通胀率为8%。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180610G1K8NN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券