公链架构_比原链各模块功能与应用

释放双眼,带上耳机,听听看~!

公链设计架构

区块链技术起源于 2008 年中本聪的论文《比特币:一种点对点电子现金系统》,区块链诞生自中本聪的比特币。区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库分布式账本是一种在网络成员之间共享、复制和同步的数据库,记录网络参与者之间的交易,比如资产或数据的交区块链分类如下。

公链:无官方组织及管机构,无中心服务器。参与的节点按照系统规则自由地接入网络,节点间基于共识机制开展工作。

私链:建立在某个企业内部,系统运作规则根据企业要求进行没走,读写权限仅限于少数节点,但仍保留着区块链的真实性和部分。

公链总体架构

比原链( Bytom Blockchain 或者 Bytom)是一个开源的有智能合约功能的公共区块链平台。比原链公链设计架构如图所示。

公链总体架构

公链总体架构

比原链各模块功能

我们将从图所示的比原链总架构图中抽高出各个模块,逐分析及阐述。

比原链各模块功能

比原链各模块功能

比原链的用户交互层

  1. bytomcli客户端
    bytomcli是用户与 bmd 进程在命令行下建立通信的 RPC 客户端。在已经部署比原链的机器上,用户能够使用 bytom 可执行文件发起对比原链的多个管理请求bytom 发送相应的请求,请求由 bytom 进程接收并处理bytom 的一次完整生命周期结束。
  2. bvtom-dashboard
    bytom-dashboard 与 bytomcli能类似,都是发送请求与 bytom
    进程建立通信。用户可通过 Web 页面与 bymd 进程进行更为友好的
    交互通信。
    在已经部署比原链机器上,会默认开启 bytom-dashboard 功能,无须再手动部署 bytom-dashboard。实际上通过传入的参数用户可以决定是否开启或关闭 bytom-dashboard 功能。如传入- web. closed,则可以关闭该功能。项目源码地址:https:/igithub.com/bytom/bytOmdashboard
比原链架构-用户交互层

比原链架构-用户交互层

比原链接口层架构

API Server是比原链中非常重要的一个功能,在比原链的架构中专门服务于 bytom和dashboard,它的功能是接收、处理并响应与用户和矿池相关的请求。默认启动9888端口。API Server的总之主要功能如下接收并处理用户或矿池发送的请求管理交易,包括打包、签名、提交等接口操作。管理本地钱包接口。管理本地 P2P 节点信息接口管理本地矿工挖矿操作接口API Serverl服务过程中,在监听地址listener 上接收bytomcli或ytom-dashboarc 的请求访问,对每一个请求, API Server均会创建个新的goroutine来处理请求。首先, API Server读取请求内容,解析请求;其次,匹配相应的路由项;再次,调用路由项的 Handler 回调函数来处理;最后, Handler处理完请求之后绐 bytomcli响应该请求。

  1. 内核层
    内核层包括区块和交易管理、智能合约、虚拟机。比原链内核层架构如图 1-4 所示内核层是比原链中最重要的功能,代码量大约占总量的 54%区块链的基本结构是一个链表。链表由一个个区块串联组成个区块链中包含成千上万个区块,而一个区块内又包含一个或多个交易。在比原链内核层有一个重要的功能是对区块和交易进行管理。

    比原链架构之内核层

    比原链架构之内核层

    当网络中的某个节点接收到一个新的有效区块时,节点会验证新区块。当新的区块并未在现有的主链中找到它的父区块,这个新区块会进入孤块管理中等待父区块。如果从现有的主链中找到了父区块,则将其加入到主链。当网络中的某个节点接收到一笔交易时,节点会验证交易的合法性。验证成功后,该笔交易放入交易池等待矿工打包。一笔交易从发送到完成的整个生命周期需要经过如下过程:
    1)A 通过钱包向 B 发出一笔交易,交易金额为 100 比原币(BTM)
    2)该笔交易被广播到 P2P 网络中
    3)矿工收到交易信息,验证交易合法性。
    4)打包交易,将多个交易组成一个新区块。
    5)新区块加入到一个已经存在的区块链中。
    6)交易完成,成为区块链的一部分。

  2. 智能合约
    从传统意义上来说,合约就是现实生活中的合同。区块链中的智能合约是一种旨在以数字化的方式让验证合约谈判或展行合约规则更加便捷的计算机协议。智能合约本质上是一段运行在虚拟机上的“程序代码”,可以在没有第三方信任机构的情况下执行可信交易智能合约具有两个特性:可追踪性和不可逆转性。智能合约是比原链中最核心、也是最重要的部分。在后面章节中,我们会详细介绍智能合约模型(主流模型:UTX○模型、账户模型)、运行原理,以及 BⅥM 虚拟机工作机制。我们还将深入代码,了解区块链上智能合约如何在没有第三方信任机构的情况下进行可信交易。
  3. 比原链虚拟机
    比原链虚拟机( Bytom Virtual Machine,BwM)是建立在区块链上的代码运行环境,其主要作用是处理比原链系统内的智能合约BVM 是比原链中非常重要的部分,在看能合约存储、执行和验证过程中担当着重要角色。BVM 用 Equity 语言来编写智能合约。比原链是一个点对点的网络,每一个节点都运行着 BVM,并执行相同的指令。BVM 是在沙盒中运行,和区块链主链完全分开。

比原链钱包层架构

钱包可以类比于我们日常生活中的保险箱,我们关心保险箱的开门方式(密钥)和其中保存的财产(UTXO)。

比原链钱包层

比原链钱包层

比原链钱包层主要负责保存密钥、管理地址、维护 UXO 信息,并处理交易的生成、签名,对外提供钱包、交易相关的接口比原链的交易发送分为三步:
1)Buld:根据交易的输入和输出,构造交易数据。
2)sign:使用私钥对每个交易输入进行签名。
3) Submit:将交易提交到网络进行广播,等待打包。

区块链共识层架构

共识层用于实现全网数据的一敔性,区块链是去中心化账本,需要全网对账本达成共识。共识层通过验证区块和交易,保证新的区块在所有节点上以相同的方式产生。简单说,共识机制就是通过某种方式竟争“记账权”,得到记账权的节点可以将自己生成的区块追加到现有区块链的尾部,其他节点可以根据相同的规则,验证并接受这些区块,丢弃那些无法通过验证的区块。常见的共识机制有工作量证明( Proof-of-Work,PoW)、股权证明( Proof-of-stake,Pos)等PoW 共识机制利用复杂的数学难题作为共识机制,目前一般使用“hash 函数的计算结果小于特定的值”。由于 hash 函数的特性,不可能通过函数值来反向计算自变量,所以必须用枚举的方式进行计算,直到找出符合要求的 hash 值。这一过程需要进行大量运算
PoW 的复杂性保证了任何人都需要付出大量的运算来产生新的块,如果要复改已有的区块,则需要付出的算力比网络上其他节点的总和都大。PoW 优缺点对比如图所示:

区块链共识层架构

区块链共识层架构

PaW 的优点 Pow 的缺点

优点:
1.算法荷单,容易实现
2.破坏共识需要付极大的成本。
缺点:
1.消耗大量资源,成资源浪费。
2.运算过程复杂,导致区换间隔较大。
3.随者 ASC 的发,算力集中于少数用户。

PoS的优点 PoS的缺点

PoS 是另一种共识机制,这种方式要求节点将一部分加密货币锁定,并根据数量和锁定的时长等因素来分配记账权。PoS一般不需要大量计算,所以比 PoW 更加迅速和高效。
PoS的优点:
1.节能,不雷要大量计算 1.成数字货币聚集,导致“萁盲不均。
2.去中心化,所有持币人不需要没入件成本,都可参与 Pas 共识 。
PoS的缺点:
1.造成数字货币聚集,导致“萁盲不均。
2.数字货币来于ICO.早期用户容易囤积。
目前还有少量加密数字货币采用其他共识机制,但 PoW 和 Pos 是共识机制的主流。由于比原链的特性,结合比原链崇尚“计算即权力(—种已确定的利益分配的方式。只要计算力高或拥有更多的算力那就拥有了某些控制权)的主张,需要在多节点上达成较强的共识,对全局一致性、去中心化要求较高,需要在一定程度上牺牲效率,所以比原链选择了 PoW 作为公链的共识机制。

比原链数据库储层架构

比原链在数据存情层上存储所有链上地址、资产交易等信息。数据存储层分为两部分;第一部分为缓存,大部分查询首先从缓存中进行,以减少对磁盘的IO压力;第二部分为持久化存情,当缓存中查询不到数据时,转而从持久化存储中读取,并添加一份到缓存中。比原链默认使用 LevelDe 数据库作为持久化存情。 LevelDB 是Google 开发的非常高效的链值数据库。LevelDB 是单进程服务,不能同时有多个进程对一个数据库进行读写,同一时间只能有一个进程或个进程以多并发的方式进行读写默认情况下,数据存储在–home 参数下的 data 目录。以Darwin(即 MacOS)平台为例,默认数据存情在$HOME/Library/Bytom/data

数据库包括:
accesstoken.db:存储 token 信息(钱包访问控制权限)
core.db:存储核心数据库。存储主链相关数据,包括块信息交易信息、资产信息等。
discover.db:存储分布式网络中黃到端的节点信息。
trusthistory.db:存储分布式网络中端到端的恶意节点信息。
feeds.db:存情目前比原链代码版本未使用该功能,暂不介绍。
wallet.db:存储本地钱包数据库。存储用户、資产、交易、UTXO 等信息。

人已赞赏
SEO优化

seo关键词排名优化之网站分析

2019-12-5 18:04:27

GO语言区块链开发

比原链P2P分布式网络层

2019-12-12 11:21:23

⚠️
本平台上的部份文章来源于互联网,仅供网友学习交流,未经本平台作者许可或上传书面授权,请勿作他用。
若您的权利被侵害,请联系客服 QQ: 2425546468 或 点击右侧 私信:客服编辑 反馈,我们将尽快处理。
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
error: Content is protected !!