GNU Lesser General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

ONLYCHAIN区块链底层系统OCSystem-DotNet深度技术分析

项目背景与痛点

在当前区块链技术迅猛发展的背景下,开发者社区迫切需要一个易用、高效、灵活的区块链底层系统作为基石。onlychain/OCSystem2.0 项目应运而生,它旨在提供一个基于 .NET 栈的完整区块链解决方案,以满足企业在构建去中心化应用(DApps)时对安全性、可扩展性和性能的需求。传统的区块链系统往往在代码可读性、维护和性能优化方面存在一定局限,而 OCSystem 通过精心设计,解决了这些痛点,提供了一条更为简洁、高效的开发路径。

核心技术揭秘

技术架构

OCSystem 的核心设计旨在简化区块链系统的开发流程,提供了模块化、松耦合的架构,方便开发者灵活定制。其关键技术栈主要包括 .NET Core,以及一个独立的智能合约运行时环境。模块化设计使得开发者可以根据需要自由选择功能组件,而不是被动地接受一整套功能。

graph TD A[用户请求] --> B{"参数校验"} B -->|"通过"| C[执行业务] B -->|"失败"| D[返回错误] C --> E[发送交易] E --> F{"状态确认"} F -->|"确认"| G[持久化] F -->|"失败"| H[回滚]

核心组件

在 onlychain/OCSystem2.0 中,关键组件包括:

  • 模块化引擎:该模块提供了一个灵活的架构,使得系统能够根据实际需求进行扩展和定制。
  • 智能合约运行时:内置一个智能合约运行时环境,支持多种编程语言编写智能合约,提升了系统的通用性和可编程性。
  • 高性能共识机制:OCSystem 支持多种共识算法,包括但不限于 PoW、PoS 和 PBFT,以适应不同场景下的需求。
  • 分布式存储:采用分布式存储技术保证数据的安全性和可靠性,支持数据的分片存储和检索。

数据流

OCSystem 的数据流包含了多个关键步骤,从用户请求到状态确认,每个环节均由不同模块共同协作完成:

  1. 用户发送交易请求。
  2. 交易在客户端经过参数校验。
  3. 通过校验的交易被执行,生成一个新的区块候选。
  4. 区块通过共识机制被验证。
  5. 验证后的区块被持久化到分布式存储中。

功能亮点与差异

相比其他竞品,OCSystem 具有众多个性化的功能亮点:

  • 模块化设计:提供高度灵活性,开发者可以根据业务需求随时增减功能模块。
  • 高性能和扩展性:得益于分布式存储和多种共识算法的支持,系统的性能和扩展性获得大幅提升。
  • 智能合约支持:强大的智能合约运行时环境允许开发者利用各种编程语言编写合约,极大地提高了系统的灵活性和适用范围。

应用场景与落地建议

OCSystem 适用的场景非常广泛,尤其适合那些需要高并发处理能力、高度定制化需求的区块链应用场景,比如供应链金融、分布式存储及高并发数字资产交易平台等。建议开发者在实际落地过程中,充分评估业务需求和性能瓶颈,选择最适合的共识机制和存储方案。

综合评价

OCSystem 2.0 显著提升了区块链系统开发的效率和灵活性,提供了不少显著的技术优势。然而,系统本身在某些较为复杂的定制场景下,仍需进一步扩展和优化。总体上,它是一套值得推荐的项目,为开发者提供了坚实的基石。

关于

GitHub 原始描述(英文)

ONLYCHAIN blockchain underlying system-OCSystem-DotNet

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
1160
价值分
544
活跃状态
活跃
暂无主题

语言占比

C
C#
C++
CMake
HTML
LLVM

README

去中心化应用型公链


OC(OnlyChain)系统,提出最大兼容全领域商业应用的区块链生态系统架构,旨在实现去中心化应用和半中心化应用的数据兼容和性能扩展。该系统架构搭建后,将有组织的协调分布式计算机为应用提供服务,其中基础层包含对数以百计处理器、内存、硬盘、带宽、接口的调度使用,通过智能合约将一系列去中心化的核心业务在链上高效的协同运转工作,OC系统深度优化集群技术,在应用业务上,每秒可处理海量数据。通过节点面版集成生态应用插件,在丰富生态应用的同时,助力企业和开发者以更低门槛构建自己事业。OnlyChain 是一套可兼容并能快速处理去中心化与半中心化应用的高性能区块链应用生态系统,深度结合指数型组织的成功商业模式,建立更加高效、完善的应用生态。

OCSystem是根据开源LGPL许可证发布的,按“原样”提供,不附带任何明示或暗示的担保。OCSystem提供的任何安全性部分取决于其使用,配置和部署方式。OCSystem建立在许多第三方库(例如WABT(Apache许可)和WAVM(BSD 3子句))的基础上,它们也按“原样”提供,没有任何形式的保证。在不限制前述内容的一般性的情况下,OnlyChain不作任何陈述或保证OCSystem或任何第三方库将按预期执行或不存在错误,错误或错误代码。两者都可能以大或小的方式失败,可能完全或部分地限制功能或危害计算机系统。如果您使用或实施OCSystem,您需要自担风险。 OnlyChain既不启动也不基于OCSystem运行任何初始的公共区块链。

1、数据结构
在OC系统中采用和以太坊相似的MPT数据结构,在该版本中增加系统TOKEN锁仓的结构支持

2、共识机制
OC系统采用 BFT-DPOS 共识体系,依靠该共识算法防止出现生产节点之间的作恶和分叉风险,保障生产出的区块100%安全可靠。

2.1 改进型BFT算法
在原有的BFT算法上进行改进,这里称为改进型BFT算法。由于PBFT算法不适用投票系统,恶意节点很容易操控局势,让一部分节点以为出块成功,另一部分节点以为出块失败,从而导致出块节点受到惩罚,网络不佳的情况下也可能发生这种情况,且效率欠佳。 改进型BFT算法流程如图: 改进型BFT算法流程

2.2 委托权益证明(DPOS)
OC系统上的任意令牌持有者可以通过投票器进行投票选择支持指定的区块生产者即竞选节点,投票者与 生产者为互利共生的关系,想成为生产者除了需要满足各项指标,还需获取足够多的支持者。在OC区块链系统中,具备21个超级节点,9个备选节点,N个竞选节点和轻节点,除了轻节点外每个节点都有权利被一个群体采用令牌作为权益支持证明,以此作为是否入围当选21超级节点的最重要条件之一。

2.2.1 投票
用户拥有一票30投的权益,投票对象不可重复,投票节点数量范围0~30,根据所投统计量作为重要参考依据,决定竞选节点是否入围超级节点。

3 出块规则
OC系统的出块规则为每 2 秒生产一个区块,在主链上,一个生产者负责 3 轮的出块任务,21 个生产者共计 63 轮进行生产,历时 126 秒,63 轮为一个周期结束后,需要重新选举节点出块。出块顺序根据投票情况进行顺序出块,假定某个块没有按照规定时间出块,将跳过该块,进入下一个块的生产。 现阶段为固定时间间隔出块,在未来将考虑动态间隔出块,这是出于节约区块链系统资源而考虑,大致如下: 每隔100个区块调整一次出块时间,前100个区块的平均交易量设为x,求出期望出块时间y=10/(1-x/1000),然后计算△y=y-y’(y’是当前出块时间)。如果△y<-0.5,那么△y=-0.5,如果△y>0.5,那么△y=0.5。最后当前出块时间y’=y’+△y,如果y’>10,那么y’=10,如果y’<0.5,那么y’=0.5。也就是说最短出块间隔0.5s,最长出块间隔10s。其最终效果是当上链操作非常频繁时,出块间隔会趋于0.5s,当闲置时,出块间隔趋于10s。

4 区块同步
如图所示,当A出块后,将区块分成20份,其中14份为区块数据,6份为纠错码(纠删码技术),每份分别分发给对应的节点,当每个节点接收到数据后,再将区块发送给其它节点,那么每个节点收到任意14份数据就能够恢复出A出的区块数据。这样处理的优势有如下几点:
1)将区块的粒度变的更细,然后进行并行传输,有效增加传输速度。
2)当某节点接收到的区块数据不完整时,此时几乎无需重新通过网络重新请求拉取区块(造成数据冗余),只需通过纠删码技术以最小的代价恢复缺失的部分数据。
输入图片说明

4.1 同步过程中遇到的几种情况处理
1)大部分节点未接收到14份数据,则认为A出块失败或未出过块。
2)对于未能恢复(未收到)区块的个别节点,忽略它们的存在,直到它们网络状态良好。

纠删码技术实现参考链接

5 密码学
OC系统的公私钥生成、签名与验证采用改进后的迷你快速的Secp256k1椭圆曲线算法,其中消息加密传输细节如图所示: 密码学

6 地址水印
为了防止未来硬分叉后出现的双花攻击,给地址加上了水印功能,不同链上有不同的水印标识,这样两条分叉上的地址是无法互通的,而且这个水印不占据任何空间。例如有原地址:0296bf07ae95af84e0c77259c72de5f609ca772f,链上水印标识:0000000000000000000000000000000000000001,原地址与水印异或后的地址才是这个链上的真实地址:0296bf07ae95af84e0c77259c72de5f609ca772e

7 零知识证明
以下为零知识证明的作用范围和必备条件:
1)证明区块链头部可信:需要超级节点列表(签名证明),初始状态下可以从创世区块获得超级节点名单。
2)证明超级节点列表可信:需要区块链头部(Hash树证明)。
3)证明账户存在或不存在:需要区块链头部(Hash树证明)。
4)证明查询账户的信息正确:需要区块链头部(Hash树证明)。
5)证明查询前30名得票节点正确:需要区块链头部(Hash树证明)。
6)证明查询30名后得票节点正确:无法证明。
7)证明交易存在:需要区块链头部(Hash树证明)。
8)证明交易不存在:无法证明(全节点返回该交易不存在不意味着真的不存在)。
9)证明查询的最高区块高度正确:无法证明。

8 网络通信
采用Kademlia协议作为节点发现技术支持,其中在Kademlia协议中,在原来的B编码基础上进行了变种B编码,以此支持更多的数据类型。另外对于请求部分,在可能引发的ddos攻击请求地方进行了工作量证明机制,对于普通用户需要几十毫秒才能发起请求,但对于黑客来说需要消耗自身大量的算力。即要求action+nonce的hash结果前面有几个0,轻节点可以在几十毫秒到几百毫秒内算出符合要求的hash值,基本不影响用户体验,并且可以大幅减少全网恶意action的数量。

9 智能合约
智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。在接下来的几个版本中,OC系统可能将使用标准虚拟机字节码的设计原则,嵌入属于OC系统自有的合约系统。

执照

LGPL 3.0

注意事项

有关版权和许可条款,请参阅LICENSE。

评论

暂无评论