数字货币交易所开发源码丨数字货币交易所系统开发(详细及逻辑)

简介: Raft算法是目前使用最广泛的非拜占庭容错类共识算法。 Raft算法主要依靠投票机制和日志复制机制来实现节点间的共识。节点通过投票选出一个leader,由leader负责处理所有请求,再将请求以日志的方式复制到其他节点。

Solo

  1. 算法简介

SOLO是单节点无共识投票过程的“共识算法”。

  1. 算法用途

快速部署单节点运行,降低试用门槛;

供开发人员进行除网络和共识模块的全流程测试。

  1. 如何使用算法

部署一个长安链节点,将链配置的共识算法进行如下修改,清除数据启动即可:

共识配置

consensus:
# 共识类型(0-SOLO,1-TBFT,3-Maxbft,4-RAFT,10-POW)
type: 0
Raft
4 算法简介
Raft算法是目前使用最广泛的非拜占庭容错类共识算法。 Raft算法主要依靠投票机制和日志复制机制来实现节点间的共识。节点通过投票选出一个leader,由leader负责处理所有请求,再将请求以日志的方式复制到其他节点。

  1. 算法用途

不考虑恶意节点的多节点环境;

需要支持高TPS的环境。

  1. 共识接口说明

Raft 实现了长安链的ConsensusEngine接口。 Start 方法用来初始化Raft内部状态及启动Raft实例。 Stop 方法用来停止Raft实例。

type ConsensusEngine interface {
// Init starts the consensus engine.
Start() error

// Stop stops the consensus engine.
Stop() error
}

  1. Raft共识与核心引擎交互图

流程图如下:
Raft共识与核心引擎交互图

  1. 如何使用算法

Raft共识建议配置节点数为2n+1(n>=0),将链配置(参见配置模块,链配置章节)的共识算法进行如下修改,清除数据启动即可:

共识配置

consensus:
# 共识类型(0-SOLO,1-TBFT,3-HOTSTUFF,4-RAFT,5-DPoS,10-POW)
type: 4
nodes:

- org_id: "wx-org1.chainmaker.org"                                                                                                   
  node_id:                                                                                                                           
    - "QmcQHCuAXaFkbcsPUj7e37hXXfZ9DdN7bozseo5oX4qiC4"                                                  
- org_id: "wx-org2.chainmaker.org"                                                                                                   
  node_id:                                                                                                                           
    - "QmeyNRs2DwWjcHTpcVHoUSaDAAif4VQZ2wQDQAUNDP33gH"                                                  
- org_id: "wx-org3.chainmaker.org"                                                                                                   
  node_id:                                                                                                                           
    - "QmXf6mnQDBR9aHauRmViKzSuZgpumkn7x6rNxw1oqqRr45"                                                  

TBFT

  1. 算法简述

TBFT 是一种拜占庭容错的共识算法,可以在拜占庭节点数小于总数1/3的情况下,保证系统的安全运行。 TBFT 的每轮共识可以分为5个步骤:

NewRound: 共识投票的准备阶段,会初始化共识相关状态;

Proposal: 提案阶段,leader节点会打包区块,并广播给follwer节点;

Prevote: 预投票阶段,follower节点在收到proposal并验证proposal合法后,广播自己的prevote投票到其他节点;

Precommit: 预提交阶段,节点收到 >2/3 针对proposal的prevote投票后,广播自己的precommit投票到其他节点;

Commit: 提交阶段,节点收到 >2/3 针对proposal的precommit投票后,提交proposal中的区块到账本。

其中共识投票是指其中的Proposal,Prevote,Precommit三个阶段。 阶段图示如下:
共识算法-tbft算法阶段图

流程图如下:
共识算法-tbft流程图

  1. 与PBFT的区别

TBFT基于Tendermint算法,与PBFT的最大区别在于:PBFT有一个固定的leader节点打包交易,当leader节点故障的时候会 使用view-change子协议更换leader;而在TBFT中,leader是轮换的,每提交n个块(可以配置)leader会轮换成下一个节点。 因此,TBFT比PBFT有更好的公平性。

TBFT实现了随机性交易的剔除,当一个交易具有随机性执行结果的时候(该交易在不同节点执行结果不一致,比如说该交易调用合约时获取一个时间戳或者产生一个随机值),TBFT可以通过共识对该交易进行剔除,从而保证链的稳定性和正确性。从节点在收到提案进行验证的时候对这种随机性的交易的读写集进行判断,如果读写集不一致,则会在发起prevote投票的时候,加上对该交易进行剔除的投票。当收集到f+1个对该交易的剔除投票,则会调用核心引擎对该交易进行剔除。

  1. 与msgbus交互流程

Raft共识与核心引擎交互图
ProposaState: TBFT发送给核心引擎本节点在当前高度是否是leader节点,核心引擎判断是否需要打包区块
Proposal: 核心引擎打包区块并发送给TBFT
Verify: 当本节点收到主节点发来的区块后,向核心引擎验证区块读写集等信息
VerifyResult: 核心引擎返回给TBFT Verify的结果,当区块合法时,本节点将会投票给区块
Commit: TBFT完成共识后,向核心引擎发送提交区块的信号,核心引擎提交区块到账本
BlockInfo: 核心引擎告知TBFT已提交区块的高度等信息,TBFT进入下一个高度

相关文章
|
NoSQL 关系型数据库 MySQL
数字货币永续合约/币币交易所系统开发(开发案例),币币交易所/永续合约交易所开发源码及体验版
Market analysis:Exchanges can also provide market charts and analysis tools for digital currencies,helping users understand market dynamics,trends,and price change
|
存储 监控 安全
区块链交易所开发、 数字货币交易所可二开添加定制化功能
区块链交易所开发是一项复杂的工程,需要技术团队精通多种技术领域,包括但不限于区块链技术、加密算法、交易系统设计、安全性和风险管理。开发一个成功的区块链交易所需要考虑到许多因素,包括用户体验、交易效率、安全性、合规性和可扩展性。首先,交易所的开发需要考虑用户体验。
|
区块链 数据库
区块链交易所系统开发稳定版丨数字货币交易所系统开发(成熟技术)
区块链是一种按照时间顺序将数据private void printRequestInfo
永续合约交易所/币币交易所系统开发案例详细,币币合约交易所/秒合约交易所系统开发方案项目(源码平台)
 永续合约是一种新型的合约,它是从传统的期货合约演变来的。但是相比于期货合约,永续合约没有到期或者结算日,It is more like a margin Spot market.Therefore,its trading price is relatively close to the reference index price of the target.
|
数据挖掘 API
秒合约交易所/永续合约交易所/币币交易所系统开发(开发稳定版)及案例项目/源码说明
Develop API interface for quantitative spot contract tracking system:Develop API interface in the quantitative spot contract tracking system to interface with exchange APIs.This interface needs to be designed according to the specifications and requirements of the exchange API,and ensure that it mat
|
移动开发 Android开发
关于永续合约交易所及币币交易所系统开发详细程序及案例分析
 All digital currency transactions,exchanges,withdrawals,futures trading commissions,and other activities that occur on the platform by users require a handling fee to be charged by the platform.
|
安全 区块链
数字货币秒合约系统开发(开发案例)丨数字货币合约交易/秒合约交易所系统开发(方案详细)/程序开发/源码项目/成熟技术
 Blockchain 2.0 has become a term for decentralized blockchain databases.Utilize blockchain data structures to validate and store data,and use distributed node consensus algorithms to generate and update data,利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约,编程和操作数据的全新的分布式基础架构与计算范式。
|
区块链 数据库 开发者
数字货币去中心化交易所系统开发(详细功能)/案例设计/程序逻辑/成熟技术丨数字货币去中心化交易所开发源码项目
区块链技术,也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术不是一个单项的技术,而是一个集成了多方面研究成果基础之上的综合性技术系统。There are three indispensable core technologies:consensus mechanism,Cryptography principle and distributed data storage.
|
安全 API 区块链
区块链钱包交易所系统开发详细逻辑丨数字货币交易所钱包系统开发(开发案例)及源码部署
  在区块链中,每个块包含了一定数量的交易信息和该块的唯一标识符,同时还包含了前一个块的哈希值。这样的设计保证了区块之间的顺序和完整性,一旦一个块被添加到区块链中,它就不可更改。这使得区块链成为一个安全可信的分布式账本,可用于记录和验证各种类型的交易。