DxChain
DxChain
Apr 5 · 10 min read

回望2018年2月,DxChain发布了技术白皮书并完成了基石轮融资。4月初,DxChain研发及运营团队成立,5月私募结束,8月公募完成。经历了几个月的钻研奋斗、设计与开发,DxChain陆续发布了MVP(最小可行性产品)、Testnet Beta、Testnet 1.0、SDK以及首款区块链云存储产品DxBox。DxChain构建区块链存储和计算公链的能力和决心毋庸置疑。

值此团队成立周年之际,DxChain顺利发布Testnet 2.0,在原有Testnet基础上大幅提升了底层性能。在接下来的几个月中,DxChain将在Testnet 2.0的基础上推动大规模存储功能的提升和测试,主网开发进程也将稳步推进。

感谢社区成员及投资人的一路支持!


DxChain Testnet 2.0 简介及 2019 Q1 研发进度更新

2019年4月2日,DxChain团队发布了Testnet 2.0,并开发了一系列自动化测试部署工具。

以下为此次研发进度更新的主要内容:

1. 支持智能合约

2. JSON RPC 升级
2.1. WebSocket
2.2. Unix Socket IPC
2.3. 谷歌Protocol Buffer

3. P2P 网络功能增强

4. 更多指令的实现

5. 自动化工具
5.1. 本地节点部署
5.2. 区块浏览器部署
5.3. 程序和资源监控
5.4. 程序测试

6. Javascript 控制台支持

7. 数据库性能研究


1. 支持智能合约

根据众多社区开发者的意见反馈,我们在DxChain Testnet 2.0中增加并实现了智能合约功能,为下阶段区块链存储应用的产品化打下了坚实的基础。

DxChain Testnet 2.0智能合约与存储合约的结合,具备以下几个重要意义:

  • Testnet 1.0已经实现的存储合约尚未与智能合约结合,因此只能支持存储合约的自动续约以及合约相关通证 (DX) 的分发。在Testnet 2.0中,我们把存储合约与智能合约相结合,从而极大拓展了DxChain所能支持的存储相关功能,任何开发者都可以根据自身的需求,通过智能合约来创造基于DxChain的新功能和产品
  • 根据我们的测试,DxChain Testnet 2.0所开发的智能合约功能,能够完美地与以太坊虚拟机系统兼容。换句话说,任何已经能够在以太坊网络上运行的程序,都可以直接移植到DxChain上并稳定运行。这样能够完美解决开发者将各种应用程序从以太坊迁移到DxChain时可能出现的兼容性问题,从而大大节省开发者的研发时间和成本。
  • 目前的以太坊智能合约几乎无法支持存储相关的交易和应用。即使基于以太坊开发的Swarm能够在理论上提供存储相关需求的解决方案,但Swarm本身不够稳定和成熟,远远达不到产品级运用的需要。DxChain Testnet 2.0所开发的智能合约可以与存储合约完美结合,从而增加已有存储合约的适应性。
  • 目前,大多数分布式应用程序是通过Solidity开发的,学习和使用一门新语言来开发智能合约需要大量的学习时间,大大增加了开发成本。在增加了智能合约功能之后,区块链开发者不需要再学习新的技术和语言,就可以基于DxChain使用Solidity进行分布式应用程序的开发,大大降低了Dapp研发的技术门槛和成本

2. JSON RPC升级

DxChain Testnet 1.0只提供了对HTTP RPC的支持。在最新的Testnet 2.0中,我们实现了新的RPC功能。

2.1. WebSocket

WebSocket的实现,意味着订阅系统实现的可能。在订阅系统中,客户端可以订阅一个事件,每当这个事件被触发时,服务器端就会自动把结果发还给客户端。在区块链系统中,我们可以把区块链的变化看作一个事件,并支持节点对这些变化的订阅。

在Testnet 1.0的设计中,当区块链产生了变化,这个信息会传播给所有的节点,无论对方是否真的需要这个信息。在Testnet 2.0中,WebSocket以及订阅系统的实现,可以确保区块链变化的信息只会传送给该事件的订阅者,从而减小网络流量,有效提升数据传输的速度。

2.2. Unix Socket IPC

除了WebSocket以外,Unix Socket IPC 也添加到了Testnet 2.0的JSON RPC系统中,用来提高进程与进程之间的交流。因为,当进程都运行在同一台服务器上时,他们不需要建立网络连接也可以进行通讯。

2.3. 谷歌Protocol Buffer

除此之外,我们对两种数据序列化机制,即JSON和Protocol Buffer,进行了更深入的研究和测试。目前,我们的RPC系统使用的是JSON机制。我们的研究结果表明,在数据压缩方面,Protocol Buffer比JSON更高效,数据可以被压缩得更小。这也就意味着,当有大量的数据需要在网络中进行传输时,Protocol Buffer的使用可以大大提高数据传输的速度。基于这样的研究结果,我们正在考虑替换掉JSON RPC系统。但我们仍需要进行更多的测试去观察在DxChain Testnet中数据的大小与两种机制传输速度之间的相关性。我们会根据速度差异的大小,来衡量最终的决策。


3. P2P网络功能增强

在Testnet 2.0中,我们实现了静态节点和信任节点的功能,因此能有效提高存储需求方和存储提供商连接的稳定性。以下是对这两个功能的简介:

  • 静态节点:本地节点与静态节点的连接永远会被维护,任何节点连接的限制不会适用于这些节点上;
  • 信任节点:与本地节点的连接不会被维护,但是任何节点连接的限制都不会被适用。

除此之外,基于IP的白名单功能也被添加到了现有的P2P网络中。用户可以使用ipwhitelist这个指令,从白名单中添加或删除IP 地址,并且只有在白名单中的节点,才可以对本地节点进行连接。这样,用户在节点的连接选择上拥有了更多的权限,也提升了整体系统的安全性。


4. 更多指令的实现

在Testnet 1.0中,我们的系统只支持有限的指令,例如查询区块链状态、转账、文件上传和下载等。在Testnet 2.0,我们根据系统新增功能的需要,加入了更多的指令:


5. 自动化工具

为了提升代码的质量、系统的稳定性以及可靠性,我们设计并开发了自动化工具包,用来支持自动化的程序部署以及测试。该工具包脚本是用Python实现的,在不久的将来也会开源,为更多的开发者提供私链测试途径和服务。目前工具包所支持的功能包括:本地节点部署、区块浏览器部署、程序和资源监控、程序测试。

5.1. 本地节点部署

在本地节点部署之前,自动化工具会首先从本机上,通过程序,创建最新的gdxc执行文件。然后,这个执行文件会被传送到开发者指定的远程服务器(支持多个服务器节点部署)。当传送过程成功结束后,gdxc程序会在自动创建的终端复用器上执行。节点会自动建立跟初始化节点的连接,然后进行区块链同步。所有的节点设置,例如初始化节点,IP 白名单,都会从开发者定义的设置文件中读取。

5.2. 区块浏览器部署

当本地节点部署成功之后,开发者可以使用区块浏览器(DX Explorer)查看节点的状态。区块浏览器是一个连接到节点的网页应用,开发者可以从中得到所有DxChain区块的信息,比如区块高度,父块哈希,交易等。

5.3. 程序和资源监控

为了确保程序的有效性和整体性能,我们设计并实现了程序和资源自动监控功能。如果程序因为任何原因崩溃了,包含具体程序崩溃原因的电子邮件就会发送给开发者。另外,如果系统资源占用达到了某个预设界限(比如CPU使用率达到了100%),警告邮件也会发送给开发者。如此一来,开发者可以及时发现并修正代码中出现的错误,降低系统风险。

5.4. 程序测试

最后,当节点成功部署后,不同的测试会阶段性的执行。以下是我们自动工具包所支持的测试类型:(1) 回归测试;(2) 集成测试;(3) 单元测试;(4) 性能测试;(5) 可靠性测试。


6. Javascript控制台支持

目前,大多数分布式应用都是通过Javascript库来实现的,为了让我们的程序变得更加友好,我们在Testnet 2.0中添加了Javascript翻译器的功能。

该翻译器是根据Go语言的otto程序包来实现的。当Javascript代码被传送到到控制台后,代码会被转译成Go语言,然后进行执行,并返回结果。

Javascript翻译器功能的添加,使得我们能够开发更多的Javascript库,从而更好地支持分布式应用的开发。对于任何拥有一定网页研发经验的开发者来说,他们也可以在不用深入理解区块链原理的情况下,基于DxChain成功开发出属于自己的分布式应用。


7. 数据库性能研究

目前,在Go语言中有两种较受欢迎的的键值对数据库,他们分别是:LevelDB和BoltDB。

LevelDB运用了LSM树,键值对会被顺序存储在不同的文件中。这些文件会在一定时间,合并成一个大的文件,以此来优化数据读取的性能。通过我们的测试,数据越多,读取性能会被影响的越大,但是数据写入的性能几乎保持不变。

BoltDB运用了B+树。这种类型的数据库更适合大规模的数据读取,因为数据读取可以多进程发生。与LevelDB不同的是,BoltDB只会生成一个文件,用来存储所有的数据,也就意味着写入的性能,并没有LevelDB高效。

在Testnet 2.0中,我们采用BoltDB来作为数据库引擎。但我们将持续在系统上进行LevelDB和BoltDB的性能对比,并根据后续的大规模测试结果对现有的数据库方案进行改善。

感谢大家的关注以及对DxChain团队一如既往的支持和信赖!

关于DxChain

DxChain致力于创建一个去中心化的大数据存储及计算公链。
DxChain独创的存储侧链、计算侧链以及主链“三链合一”的架构设计,为数据拥有者提供具有安全和隐私保护的分布式大数据存储,并能通过运行机器学习算法,实现大数据的价值挖掘和商业交换。
DX是DxChain网络的原生协议通证,未来将通过网络存储矿工、计算矿工及出块矿工的挖矿任务产生,同时作为区块链网络大数据存储及商业交换的支付通证。更多信息, 请访问DxChain官网www.dxchain.com。
Telegram:
https://t.me/DxChainGroup
Twitter:
https://twitter.com/DxChainNetwork

DxChain中文

Big Data Meets Blockchain

DxChain

Written by

DxChain

http://www.dxchain.com — decentralized big data and machine learning network powered by a computing-centric blockchain

DxChain中文

Big Data Meets Blockchain

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade