Neutron是Qtum量子链近期的研发重点之一。它是一个集成虚拟机的整体解决方案,最初是为了集成x86虚拟机的“硬连接”方案,我们重构了这个方案,使Qtum(或别的区块链)可以运行多种虚拟机。Neutron目前还在密集的开发之中,准备在今年晚些时候上线。本文将对Neutron进行详细的说明和解释。

Neutron简介

1

Neutron在虚拟机和区块链的其他部分之间提供了一个环境无关接口。这是通过统一的Neutron API(应用程序编程接口)完成的,该API使区块链软件的各个组件可以通过一种通用语言彼此“对话”,而无需学习任何新技巧。使用Neutron,其他软件组件无需针对特殊情况、异常、或者别的奇怪代码进行编程(程序员将其称为“简陋代码”、“意大利面条代码”或者其他NSFW术语)。相反,Neutron提供了一个稳定、安全、有前瞻性的平台,用于集成各种虚拟机,而无需接触任何VM代码。

在深入了解Neutron的更多详细信息之前,我们先从Rust编程语言、中间件在体系结构中的作用以及基于租用的智能合约存储开始。

什么是Rust?

2

集成x86 VM的Neutron平台的主要功能是将Rust用于智能合约编程。Rust是2006年由Mozilla开发的一种类似C ++的编程语言,以内存安全(无危险的指针操作或自动垃圾回收)而著称[参考1]。它还包括可大大提高开发人员生产效率的现代化工具,例如集成的测试平台和程序包管理。

Rust将在Qtum智能合约生态系统中提供“第一级别”的支持。以前,x86 VM考虑过几种不同的语言,例如C、Go和Python,这仍然是Qtum Neutron的发展方向。但是,我们会首先将重点放在把Rust作为主要语言上。

Rust将成为我们提供语言支持的主要“易于使用”目标,并且所有文档都将以Rust为例编写。我们将提供用于编写智能合约的原生Rust API(crates),并打算在Qtum智能合约生态系统中支持Rust的大部分功能,包括带有“cargo test”的cargo,用于轻松的自动化测试,以及“cargo run”,用于部署智能合约。我们计划在上线后支持其他语言和工具,但是在初始阶段,我们将重点放在Rust上。

我们选择Rust是因为它对程序员编写和调试安全代码十分高效。这是用Rust写的经典的“ Hello World!“。

中间件

3

如果您在2018年的任何时候播放音乐或收听广播,您可能会听到由格伦·马里斯(Maren Morris)演唱格莱美奖提名歌曲《中间》(The Middle):

Oh baby, why don’t you just meet me in the middle?

I’m losing my mind just a little.

So why don’t you just meet me in the middle?

In the middle...

“中间件”在人际关系和区块链软件堆栈中都占有重要地位。“中间件”在将高级功能与较低级协议(事务,块和网络层)连接方面起着至关重要的作用。如果没有良好的中间件层来支持智能合约,程序员就需要处理明显更多的“认知负担”。令人满意的中间件将程序员需要担心的问题与它的实际工作方式分离开来,因此,他们能更轻松地工作。

对于Qtum架构,我们可以看到Neutron在堆栈中间扮演着核心角色:

租赁存储

4

纽约百老汇的常客可以将音乐剧“出租”视为1994年版的“汉密尔顿”,主题歌合唱为:

Headlines, bread lines

Blow my mind

And now this deadline

“Eviction or pay”

Rent

“Rent”和“ Hamilton”在当时都是百老汇音乐剧的突破口,而Rent是Neutron的突破性区块链功能。

基于租金的存储将减缓可怕的区块链存储膨胀。当前,借助Qtum EVM,“状态”智能合约存储已超过常规区块链交易的规模。在以太坊上,智能合约状态存储是以太坊(完整的未修剪得存档历史记录)膨胀到超过4TB的主要原因,使完整节点远远超出了普通人台式机的存储能力。

Neutron将提供一种创新的方法,使智能合约为存储支付租金。该设计已经成型,并扩展了旧的Qtum-x86“任意长度的键和值”方法(准确存储您的需求)。与所有其他租用系统相比,我们得租用系统设计简单(因此易于实施),并且将着重于激励措施,以实现在区块链上仅保留共识所需的数据。只有活跃的合约数据才会在线,并且实际使用智能合同的用户会自动支付租金。

上图显示了如何只让活跃的字节码和数据成为区块链的一部分。具有某些管理功能的通证合约可以使用此功能。经常被使用的通证函数将保持活动状态,而很少使用的管理功能可能会变为非活动状态,直到管理员需要对通证执行某种操作。如果需要,将从存储完整状态的“归档”节点检索不活跃的代码和数据,并支付一定费用以将不活跃的状态恢复回可用的活跃状态。从合约的角度来看,这种设计的好处是它是一个完整的“黑匣子”:使用小得多的存储空间,且不给智能合约开发人员增加任何麻烦。

将租金和新的NeutronDB数据库结合起来有以下好处:

  • Qtum全节点将需要更少的硬盘空间;

  • 尽管区块链的全节点大小仍然不是100%有界,但这将大大减少节点每年增加的存储量;

  • 用户将在智能合约中控制其数据。如果类似ERC20的智能合约有1000个帐户余额的状态,则当您需要访问自己的余额时,您只需要为自己的余额支付租金,而无需为其他用户的999个余额支付租金;

  • Neutron智能合约将能够使用任意长度的键和值。这极大地简化了智能合约逻辑设计,并减少了在EVM智能合约设计中已经出现的错误和安全问题。由于您可以控制存储布局而不是编译器,因此它也使升级变得更加容易;

  • 即使智能合约的某些(未使用)状态已从区块链中删除,它也有可能继续运行;

  • 可以逐位还原大量状态。这避免了对大型合约状态恢复可能超出区块限制的问题,或者难以说服Staker收录大额交易;

  • 用于智能合约状态的SPV证明将大大简化,并且使用范围更小(即从智能手机检查智能合约状态将需要更少的带宽)。

更多Neutron细节

5

通常,Neutron中间件的作用是适配上下两层,以便这些层不必进行任何更改,甚至可能不知道“堆栈”中的任何更改。Neutron中间件层之上和之下的层中的细节应该解耦甚至隐藏,以便Neutron可以成为整个过程的中立协调者。

接下来,我们将更多地了解Neutron在“管理”与上面各层的接口以及“管理”到较低协议级别中的作用。

Neutron的向上管理

6

更好的开发者体验

我们为开发人员考虑到了后端和前端的问题!具有x86 VM智能合约的Neutron将把Rust用于智能合约代码和更多传统的软件工程范例。这意味着您可以更轻松地加入生态系统,而无需学习非常特殊的技术和危险的不成熟编程语言(是的,我们在说Solidity)。Rust着眼于安全性并避免程序员犯错误,这使得开发者很难犯低级错误。Rust的范例迫使程序员处理极端情况,诸如“谁拥有此内存”之类的概念必须明确并预先处理。它被称为一种难以编写的语言,但是在满足编译器要求之后,它通常是正确的且没有错误。

安全第一

Neutron具有专注于安全性的内置功能,可以解决EVM中的一些令人恐惧的安全性问题。这将使编写不安全的智能合约更加困难,并为开发人员提供更多工具来确保其合约安全。

可升级的智能合约

Neutron将具有轻松管理智能合约升级的能力,而无需使用复杂的“代理模式”,这些模式是许多安全问题的根源(例如,在相互调用的层中编写智能合约,这很危险)。可以轻松更新软件以添加新功能或修复错误的概念!智能合约可以全部或部分升级其字节码,并具有分散治理的余地,以控制如何完成升级。

为了帮助管理智能合约之外的升级,将对以太坊和Qtum中传统使用的Gas机制进行修改,使其包含一个新概念,以帮助合约应对其无法控制的生态系统变化,例如硬分叉和图书馆合约升级。我们将稍后将发布更多详细信息。

修复重入问题

Neutron还将利用简单直接的解决方案来解决重入问题,以便只有明确建立允许重入的合约才可以执行重入。EVM中当前的技术并没有限制可重入性(合同可以在执行过程中调用自己)。DAO和许多其他不幸的EVM智能合约可以证明[2],这会导致意外和“有趣”的结果。修复程序将包含一些功能,它们要么简单地不允许重入调用,要么以其他方式检测到合约当前处于重入情况,并停止执行。

隔离见证与多签地址

在当前的EVM实施中,智能合约仅限于使用旧版Qtum地址(以“ Q”开头)。借助Neutron,智能合约可以与所有Qtum地址类型(例如SegWit,MultiSig等)(地址以“ M”,“ qc1”等开头)进行交互。添加此功能意味着智能合约可以与MultiSig地址进行本地交互,包括将MultiSig地址识别为智能合约调用的“发送方”,并将币直接发送至这些地址。

API

Neutron API(应用程序编程接口)意味着开发者可以轻松添加新的VM,以共享相同的基础架构,例如,将来可能会添加WASM。这样,就可以为WASM和x86编译相同的合约源代码(在大多数情况下),并且在部署之前,可以使用字节码大小的度量,执行成本等确定实际部署的平台。它还将具有轻松添加可验证且非图灵完备的专用虚拟机的能力,这些虚拟机对于可在其中构建的智能合约类型(可能针对DeFi或扩展应用程序进行了优化)更加安全。

查看更多Neutron Star代码库和正在开发的Neutron API,Neutron智能合约开发者可以访问:https://github.com/qtumproject/neutron-star

NeutronDB

Neutron提供了一个新数据库NeutronDB用于智能合约存储。NeutronDB基于Qtum较旧的DeltaDB设计,该设计是为联机/脱机应用程序设计的,并且可以快速、可扩展地存储为一系列增量(状态差异)的数据。NeutronDB将使用Merkle Patricia树尝试将EVM存储“状态”替换为Qtum基于LevelDB的EVM存储“状态”,该尝试将所有状态存储在一棵树中。相反,NeutronDB使用多个树来建立最终的世界状态。这方面使运行智能合约的SPV(简单付款验证)轻型钱包更加高效,并且意味着完整节点所需的资源更少。

Neutron的向下管理

7

Neutron将包括一个UTXO(未用交易输出)状态系统(“全局” NeutronDB存储除外)。这将使通证、NFT(不可替代通证)和其他潜在的“一次性”状态在区块链上表示为UTXO。这应该为类似QRC20的令牌启用许多新应用程序,以便可以从Lightning Networks和其他Layer2的扩容工具更轻松地使用它们。这也允许完整节点跟踪更少的状态,并且可以彻底改变通证合约的开发方式。

Neutron还将把Qtum的UTXO模型公开给智能合约,从而使更简单的托管风格的智能合约可以“通知”交易已经进行。这将允许托管合约标记已满足要求的完成检查点。这样可以自动对正在发送的交易做出反应,例如清除托管抵押。这些功能将对所有实现UTXO或其他Qtum功能的区块链公开。(示例:DEX掉期合约要求在释放1000 TKN之前将100 QTUM发送到非合约地址。在EVM实现中,这将涉及先发送到合约,然后从合约“拉出”非合约地址至少要进行2或3笔交易。在Neutron中,这样的事情可以在单笔交易中完成,而无需智能合约就可以直接持有资金)

不只是Qtum,不只是区块链

Neutron的构建与区块链无关,因此可以集成到各种区块链甚至非区块链去中心化技术中,只要它需要运行和验证某种不受信任的代码。智能合约将选择一个“功能集”。有些人可能只是想要“基本功能”,每个集成Neutron的区块链都应该能够支持。其他人可能需要更复杂的功能集,例如UTXO和隐私功能,它们可能仅适用于Qtum或与Qtum更相似的区块链。这使Neutron不仅可以促进Qtum区块链本身,也可以促进更广阔的平台经济。

参考内容:

1. Rust编程语言:

https://www.rust-lang.org/

2. theDAO问题分析:

https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/

中间件应用程序错误 修复方案_Qtum Neutron:新一代区块链虚拟机中间件会给Qtum带来哪些新功能?...相关推荐

  1. 程序猿们,别着急入手区块链,先给自己选好武林门派再练功不迟

    在金庸的笔下,中原武林,门派林立:既有少林寺.逍遥派.丐帮.大理段氏.武当派.华山派.日月神教等强大派系,也有青城派,蓬莱派,峨嵋派,昆仑派,崆峒派等实力不凡的较小派系.学武拜师,入哪门哪派甚是关键. ...

  2. 程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)

    本案例为币包的实际技术应用: 做区块链币包的可以看看,当年老师付我也是想了很久的. 虚拟币币包的工具有很多,那么他们使用的是什么技术实现的呢.咱们利用就将数学[枚举]的虚拟币内环实际应用给大家讲一讲. ...

  3. 2018-11-08 微信小程序上做基于以太坊的区块链Dapp

    1.以太坊开发环境搭建 a.Geth  节点的安装     下载:https://www.ethereum.org/cli b.创建一个配置文件 genesis.json 用于创建创世块和设置网络 c ...

  4. clr错误 8004005程序将立即终止是什么原因 | clr80004005错误修复方法

    想必经常使用电脑的亲们可能遇到过运行某个程序的时候出现"clr错误 8004005程序将立即终止"的问题,网上注册表.net修复等多种方案经威航软件园严格测试发现根本无法解决clr ...

  5. 太 6 了!区块链包包、疫情防控大脑……程序员这样玩转区块链!

    在今年315晚会上,品牌连锁餐厅将过期的汉堡包正常提供给消费者食用事件登上热搜,引起大众哗然. 早在2019年,国务院发布<关于深化改革加强食品安全工作的意见>,对于区块链技术的食品安全应 ...

  6. 【程序员必看】如何用Python从0开始创建一个区块链?

    在数字货币盛行的档口,比特币,这币那币到底值不值得信赖呢?也许你像很多人一样感到新奇,想接近它,但只因背后的区块链技术,阻断了向新领域尝试的步伐.不过,对于程序员来说,想真正搞懂比特币,搞懂区块链,可 ...

  7. 由浅入深区块链技术,程序员不得不看的十篇好文

    http://www.infoq.com/cn/news/2018/01/blockchain-ten-articles 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...

  8. 2023年最新的区块链交易所开发的架构方案

    区块链技术已经引起了全球的关注,并成为金融领域的一个重要趋势.随着加密货币市场的发展,越来越多的人开始关注区块链交易所的开发,以满足数字资产交易的需求.在这篇文章中,我们将从技术角度探讨区块链交易所的 ...

  9. 欧科云链研究院:5大常见区块链错误

    区块链技术因其智能功能在技术驱动的世界中蓬勃发展.但是需要清楚地了解市场趋势与现实之间的差异,并与企业的业务目标同步.需要注意以下常见的区块链错误,以避免在不久的将来产生任何严重后果. 未能理解或使用 ...

最新文章

  1. 递归神经网络预测股票好文章
  2. JAVA 学到什么水平就可以转战 Android 了?
  3. Android 模拟输入那点事
  4. (16)WEB前端开发规范之HTML规范
  5. 万份销量,五星好评!这门Python神作刷爆朋友圈!
  6. Vue中使用watch来监听数据变化
  7. python websocket django vue_Python Django Vue 项目创建过程详解
  8. 【DevOps】在CentOS中安装Rancher2,并配置kubernetes集群
  9. php的威富通支付接口,威富通支付接口 - osc_hlr8sqnv的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Ubuntu下好用的文档比较工具Meld,代替Notepad++的文档对比功能?
  11. 局域网监控软件——邮件监控
  12. 腾讯2021校园招聘-后台综合-第二次笔试 Apare_xzc
  13. HSF 入门-发布和调用hsf服务
  14. dede采集插件自动采集文章图片自定义接口
  15. Apollo学习笔记(15)Mini-Snap
  16. 微信网页下载无效 微信无法打开分享的链接的解决方案
  17. JavaScript教程——从入门到精通-石川-专题视频课程
  18. 航美传媒美国上市 融资1.8亿美元
  19. eclipse 快捷调整字体_一键就能调文字大小?Word当中你所不知的快捷键-eclipse字体大小设置...
  20. 工作分解结构 WBS

热门文章

  1. T-SQL中的随机数
  2. Spring中JdbcTemplate中使用RowMapper
  3. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
  4. Lightoj 1281 New Traffic System (记忆化Dijkstra)
  5. Set Matrix Zeroes leetcode
  6. Splunk安装和配置及源码编译安装SVN
  7. postgresql-9.3.0级联复制搭建及简单配置
  8. 以咨询顾问为我终生职业(转)
  9. 鸿蒙2.0 安卓,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  10. 深度强化学习_深度学习理论与应用第8课 | 深度强化学习