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

简介: 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
|
存储 监控 安全
区块链交易所开发、 数字货币交易所可二开添加定制化功能
区块链交易所开发是一项复杂的工程,需要技术团队精通多种技术领域,包括但不限于区块链技术、加密算法、交易系统设计、安全性和风险管理。开发一个成功的区块链交易所需要考虑到许多因素,包括用户体验、交易效率、安全性、合规性和可扩展性。首先,交易所的开发需要考虑用户体验。
永续合约交易所/币币交易所系统开发案例详细,币币合约交易所/秒合约交易所系统开发方案项目(源码平台)
 永续合约是一种新型的合约,它是从传统的期货合约演变来的。但是相比于期货合约,永续合约没有到期或者结算日,It is more like a margin Spot market.Therefore,its trading price is relatively close to the reference index price of the target.
|
移动开发 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.
|
区块链 数据库 开发者
数字货币去中心化交易所系统开发(详细功能)/案例设计/程序逻辑/成熟技术丨数字货币去中心化交易所开发源码项目
区块链技术,也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术不是一个单项的技术,而是一个集成了多方面研究成果基础之上的综合性技术系统。There are three indispensable core technologies:consensus mechanism,Cryptography principle and distributed data storage.
|
安全 API 区块链
区块链钱包交易所系统开发详细逻辑丨数字货币交易所钱包系统开发(开发案例)及源码部署
  在区块链中,每个块包含了一定数量的交易信息和该块的唯一标识符,同时还包含了前一个块的哈希值。这样的设计保证了区块之间的顺序和完整性,一旦一个块被添加到区块链中,它就不可更改。这使得区块链成为一个安全可信的分布式账本,可用于记录和验证各种类型的交易。
|
存储 安全 前端开发
中心化交易平台开发:如何构建一个有效的数字货币交易所系统
随着加密货币市场的飞速增长,许多企业都在寻找有效的解决方案,以使其加密货币交易项目取得成功。而在这里,UI/UX 的作用无疑是巨大的。系统的运行方式完全取决于界面的简洁性、导航的有效性和用户旅程的顺畅性。 对于那些选择构建集中式加密交换系统的人来说,设计尤为重要。人们经常在没有丰富交易经验的情况下使用此类平台,因此应尽可能清晰直观。但是,如何为观众提供既简单又有效的交流方式呢? 这篇文章将解释集中交换,提供一些示例,并揭示如何设计这样一个系统来应对最常见的 UI/UX 挑战。
中心化交易平台开发:如何构建一个有效的数字货币交易所系统
|
人工智能 安全 物联网
什么是数字货币交易所系统开发/数字货币交易所系统开发成熟案例及技术分析/源码版
   区块链、人工智能、数字孪生、人机交互、物联网等面向数据的新一代信息技术的演进并非偶然,而是从Web2.0向Web3.0演进的技术准备。从技术上来看,元宇宙是基于Web3.0技术体系和运作机制支撑下的可信数字化价值交互网络,是以区块链为核心的Web3.0数字新生态。他总结道,元宇宙是以区块链为核心的Web3.0技术体系支撑下的新场景、新产业和新生态,将会在数字环境下催生大量创新商业模式,形成数字空间新范式。
|
JSON 区块链 数据格式
交易所/钱包系统开发技术原理丨数字货币交易所/钱包系统开发(开发功能)及案例源码
  公链是Web3.0的核心载体,支持互操作、赋权赋能和信用机制,以及各类应用,Web3.0公链赛道主要包括Layer1、Layer2、Layer0。