and how it would shape the future world

Mainstream adoption is always the center in discussions of the future of the blockchain industry. While blockchain’s decentralized, traceable and trustless characteristics make it a natural fit for many business applications, the prerequisite of redesigning business values and logics based on tokens and smart contracts hinders the big migration. Technical and operational barriers make blockchain a riskier and more expensive choice that many businesses are reluctant to experiment with. That’s why the launch of the InterWork Alliance (IWA) on 2nd June has become one of the most exciting news for the industry recently.

“Interworking” refers to the situation when 2…


As a smart contract developer, it is critical to have a defensive mindset where your code is the only thing that you can trust.

On this blog, I will share some tips that could make your smart contract more secure. All of these tips are based on existing vulnerabilities that have been exploited by hackers, which causes severe damage to the Blockchain community. Though knowing these tips will not make your smart contract immune to hackers, it can help you to avoid the most common bugs.

Hackers are everywhere

As a smart contract developer, it is critical to have a defensive mindset where your code is the only thing that you can trust.

Do not trust your users

When you are writing code, you should always assume that your users are hackers…


A Standards-based Approach to Digital Assets

Digital Assets

Digital assets are programmable assets that exist in the form of electronic data. With blockchain technology, the digitization of assets can be decentralized, trustful, traceable, highly transparent, and free of intermediaries. On the Neo blockchain, users can register, trade, and circulate multiple types of assets. Proving the connection between digital and physical assets is possible through digital identity. Assets registered through a validated digital identity are protected by law.

Digitization or tokenization is the activity of transforming rights — or a unit of asset ownership — into a digital asset or token on a blockchain. Tokenization may be applied to…


For the first time, blockchain developers can go forward and backward in time to analyze and fix complex bugs.

A sneak preview of the “Time-Traveling Debugger” by the author

Marching Forward

The blockchain marches on, ever forward, relentless, in an inexorable journey to add new transactions and to create new blocks to append to the decentralized ledger. It is immutable, creating a perpetual, permanent, and fixed history of transactions.

The cryptographic state-machine infrastructure that powers this decentralized ledger has led to a wave of innovation that is unparalleled in the history of computing; however, this has also challenged the limits of conventional software development and specifically debugging tools and techniques.

Bugs and Debugging on a Chain

State Machines can make perfectly accurate mistakes; the code is written…


Neo Name Service (NNS) will be a native service on Neo3 to simplify hash string addresses with a full support for the NFT standard.

In current blockchains, the smart contract addresses and account addresses are often a complex and lengthy hash string, which are ‘too difficult’ for the human brain. We need a short, memorable sentence to replace these hash strings when used.

To make it more user friendly, we are introducing a native domain name system — Neo Name Service (NNS) in Neo3, using easy-to-remember domain names as a replacement for difficult-to-remember strings. Eg. Users can initiate a transaction directly to a certain domain name, the effect is the same as transferring money to a certain address.

Imagining, when buying a product, would…


In terms of synchronous and asynchronous modes, Oracle can be roughly divided into:

• Asynchronous & Multiple transactions

The user request transaction be packaged on chain first, then the oracle response transaction which attached with data, be packaged again, and finally trigger to execute the user’s real task. Like the traditional oracle, using callback mechanism, and the user’s task is executed after the oracle response executed.

• Synchronous & Multiple transactions

The user request transaction be broadcast first, but will be waiting for the oracle response transaction. And oracle response will be executed before the user request transaction.

• One…


1. Introduction to block synchronization mechanism of Neo2

In Neo2, the process of synchronize block is more complicated. There are two steps: synchronize block headers and synchronize blocks.

As shown in the following figure, is the flow chart of synchronization mechanism of Neo2. Synchronize block headers corresponds to 1,2 steps:


背景

可信执行环境(Trusted Execution Environment,TEE)是一个由处理器直接管理的隔离区域,在可信执行环境中运行的代码将完全隔离于系统以及Hypervisor。

目前,主流的芯片架构平台都有各自的可信执行环境。

ARM平台

ARM平台有TrustZone,目前我们用的安卓或苹果,都是通过TrustZone保护我们录入的指纹信息、脸部信息等个人隐私数据。

Intel平台

Intel平台有Software Guard Extensions(SGX),归功于Intel提供的便利的SDK和开发环境,成为了目前学术界使用最广泛的一个TEE平台,也是目前已有的较多在区块链项目中使用的TEE平台。

AMD服务器

AMD的服务器芯片中有Secure Encrypted Virtualization (SEV),这个主要是加密服务器上运行的虚拟机内存,原理是在AMD的处理器里内置一块小的ARM芯片,专门用来加密虚拟机的内存和在状态切换时加密寄存器。

可信执行环境在区块链中的应用案例

ChainLink 预言机

在区块链的世界里,数据的流入只能通过用户进行的交易而产生,即区块链本身就是由用户交易驱动的。

无论是普通的转账交易还是对合约的调用,一切都只能从用户交易开始。一个封闭的系统虽然在执行转账交易这种简单逻辑时还能运转自如,但当涉及到合约执行时就显得捉襟见肘了。

区块链与现实世界的结合一定需要智能合约的加持,但在区块链虚拟机这种隔离环境里执行智能合约时却往往无法满足现实世界里对各种数据的需求。因此,预言机应运而生,区块链的预言机就是一种为智能合约提供现实世界的数据的系统,例如航班信息,黄金价格等,这样在合约执行时就可以依据现实世界的数据来执行判断逻辑。

ChainLink项目是基于康奈尔大学的FanZhang研发的合约可信数据源Town Crier而建议的。在TownCrier系统中有专门用于运行Intel SGX的节点,它是用于和现实世界中的可信数据源建立Https连接,并且在节点的SGX内运行合约来指定数据获取的具体逻辑。

在这个数据获取的模型中,Intel SGX节点是经过Remote Attestation验证过的合法TEE节点,且运行的是未被修改过的预言机合约。因此,通过此模型而获取的数据只有两种结果,要么获取不到,要么就是真实可信的数据。

- 目前预言机的两种主要实现方式

一种是基于共识基础的预言机,共识节点之间通过对特定数据进行共识验证从而判断现实世界的数据是否可靠,这也是目前Neo3正在着手的课题之一。

另一种就是在可信执行环境与现实世界中的可信数据源间建立可信的通信通道,由可靠的数据源将数据发送给可信执行环境下的预言机系统,然后再将数据发送给区块链。通过远程验证(Remote Attestation)后,可信执行环境中的程序一定会严格按照设定的逻辑执行,所以,通过这种预言机获取的数据是可信的。ChainLink就是基于此逻辑设计的预言机区块链系统。

Ekiden 隐私保护的区块链

出自于康奈尔大学的Ekiden,主要利用可信执行环境以一种隐私保护的形式来执行智能合约。

在Ekiden的网络里,节点分为计算节点和合约节点。合约节点用于区块链本身的管理维护,计算节点用于执行用户的交易。用户的交易直接发给合约的执行节点,然后在TEE里运行,执行的结果将会以密文的形式保存在区块链上。

TeeChan 支付管道

支付通道是改善比特币支付可扩展性的解决方案之一,能够解决区块链本身的数据存储,共识等待,手续费高以及拓展性等问题,但支付通道的创建过程是需要用户向区块链发送交易来完成的,这个过程不仅需要消耗手续费,还需要一个完整的确认周期。

为了解决这个问题,帝国理工的 Joshua Lind 在TEE里创建区块链账户,通过管理支付通道的方式避免创建支付通道的繁琐过程。

在TeeChan系统中,没有支付通道的用户可以直接在线下创建支付通道,由于TEE环境本身的隔离性,即使用户本身也无法随意的动用TEE内账户里的资产,因此只要有支付通道在对方TEE里创建,那么你就不需要担心对方在没有你允许的情况下把那笔钱用在别的地方。通过在TEE里创建支付通道,TeeChain避免了创建通道的漫长等待过程。

此外,如果一个状态通道在整个生命周期中没有发生任何的资产变动,那么用户可以直接在TEE中协商关闭通道,而不需要向区块链提交任何的交易。

Neo与可信执行环境结合的优势

介绍了一些项目后,我最想说的还是Neo本身和TEE结合的天然优势。

相对去中心化

在我看来,「相对去中心化」是Neo本身最独特的优势。不像比特币和以太坊有沉重的包袱,被一堆利益纠葛所捆绑,也不因为所谓的信仰压制而让创新举步维艰。

同时,这也能够保证共识节点的稳定运行,有助于算力的提升。参考EOS项目对于节点配置的要求,我认为Neo完全可以对交易提供更强的算力支持,而不用像比特币或以太坊一样担心会对一些节点产生DOS的效果。

共识机制

我在早期文章《一个可能的Neo链上安全随机数解决方案》里就分析了Neo合约本身共识机制的优势。Neo共识机制在执行交易之前有一轮复杂的共识协商过程,我认为这个过程大有可为。

- 一个可能的随机数生成方案

除了协商共识外,议员也可以协商些别的议题,比如随机数。既然信任大多数的议员,那么在议员共同协商下,可以在新区块生成前先产生一个随机数。没有任何人可以预测,也没有任何人可以更改,在我看来这是一个可行的随机数生成方案。PoW和PoS共识机制里就无法实现这种可行的随机数生成方案,简直是dBFT的天然珍珠。

尤其是目前好像随机数生成依然是区块链世界里的一大难题。如果Neo有志于在链游方面发展,这个随机数解决方案是否可以参考下呢?

可信执行环境下的Neo

前面已经分析了Neo本身的一些特性,这些特性其实可以拓展发挥出更多的功能,尤其是与可信执行环境进行结合的情况下。

隐私保护的交易

参考Ekiden对于隐私交易的处理方式,其实Neo以其相对去中心化的特点更容易实现基于可信执行环境的隐私保护交易。

当然Neo本身并不主打隐私保护,所以也没必要把所有的资产都抹去用户信息,但至少可以在合约调用的过程中对用户发送的信息进行加密保护。

共识节点私钥保护

和别的区块链项目一样,Neo的共识节点也需要其保证议员的账户一直处于可用状态,以此完成不间断的交易验证区块生成的过程。虽然这是正常操作,但也将议员的账户置于危险之下,因为谁都不能保证议员的共识节点永远不会被黑客攻陷。一旦共识节点被攻陷,黑客获得了对共识节点的控制权,那么黑客就很可能从内存中获取到议员的私钥从而窃取议员的资产。

但是如果将TEE引入Neo共识节点并将议员的私钥加载在TEE中,所有的需要议员签名的过程都将在TEE里执行,并只能用来签名特定类型的交易或者区块而不许转账或者导出私钥,那么即使议员的共识节点被黑客控制链,议员的资产也依然是处于保护状态。

私钥寻回

假如所有的议员节点都支持TEE环境,那么是否能够直接允许用户在Neo平台来生成自己的账户?

议员节点将以动态隐私数据共享的形式来维护用户的私钥,此外用户在创建私钥时,让用户提供一些只有用户自己知道的信息作为依据。当用户丢失密钥时,可以通过向Neo提供关键数据来恢复密钥找回资产。由于用户信息的收集以及账户生成的过程都是直接经过TEE进行,因此即便Neo议员节点也无法获取具体的用户隐私信息。

安全随机数

正如我在分析Neo优势时所说,Neo本身独特的共识机制其实是大有可为的。虽然我们无法相信单一节点生成的随机数,但我们可以通过议员的协商过程来多方生成一个最终的安全随机数。

触发交易

在参与NEL社区开发NNS产品时,我发现一个区块链很让人难受的地方是所有的交易必须立即发送且立即执行,不能是一种先发送然后依据某个事件触发执行的方式,这很难过。

假如我有两个或者三个交易需要按顺序执行,而且每个交易需要在不同的区块里执行,那我唯一的办法就是在第一个交易执行成功后再发送下一个交易,然后以此类推,这样的操作方式是很反人类的。

那我们是不是可以在TEE里实现一种触发交易呢?将触发交易发送给TEE,然后挂靠具体事件,通过将区块链的一些信息发送给TEE触发事件,再由事件通知交易执行,这样是不是更加便利呢?

而且,目前看来这样的交易形式也只有与TEE结合才是最可靠的。因为在Neo环境里,即使合约调用交易失败了,也依然会被写入区块链,这就导致如果用户发出的触发交易不能按照顺序被严格执行,那么很可能会被人打乱执行顺序从而导致交易失败。而TEE就可以完美保护交易顺序。

站在时代前沿

可信执行环境和区块链的结合,应该是一种大势所趋。过去每年的安全定会都会不少相关文章,经过几年科研领域的不断探索,相信未来在工业界也会慢慢出现更多相关的项目。

衷心希望Neo可以在此,有所成就,有所突破。

本文介绍了可信执行环境,并列举了多个成功将可信执行环境和区块链结合的案例。

通过分析Neo项目本身的特点,本文提出了几个将可信执行环境与Neo创造性结合的潜在入手点。

以上均是个人的技术构想,若有疏漏之处,万望见谅。

作者:廖京辉

— View the entire Neo Column collection here:

— Want to become a columnist? Email to: marketing@neo.org


“围墙花园”并不是一个区块链的专属概念。Facebook、Twitter、微信、支付宝、甚至苹果的iOS,当今几乎每一个互联网科技巨头都在建立自己的围墙花园。通过外部分享限制、生态搜索限制与小程序限制,大量用户被绑定在某一个生态里。AppStore内的开发者被苹果强迫抽成、百度里无法搜到微信10w+文章、在微信里分享一个淘宝链接也要使用非主流语言写成的“淘口令”。除了为自己生态锁住流量、保证用户信息的安全与内容的质量,这些花园的建立也让目前的互联网环境高度中心化。

而在以去中心化为己任的区块链世界,“围墙花园”问题也是所有基于智能合约的区块链都持续面临的一个难题。简单而言,由于智能合约的作用范围仅限于所在的区块链,这使得智能合约无法与区块链之外的其他实体进行交互。

虽然这一问题在Neo3中可以通过引入运行在共识节点上的Oracle预言机得到缓解,这允许Neo区块链获取外部数据,但要想完全实现与外部数据交互仍然是不可能的。事实证明智能合约无法操作任何私有信息、保存私钥或主动触发链外的操作。

由于智能合约的运行会受到这些严重的限制,那么需要这些功能的区块链解决方案又该如何避开这个问题呢?

一种解决方案是使用预言机,这是一种可信的服务器,可保存私有数据、密钥或凭据,并监听来自智能合约的事件,在触发这些事件时执行相应的操作,从而可承担智能合约的部分功能。当然,这个解决方案需要信任这样的服务器,这会失去在公链上构建项目所具备的去信任的属性。

康奈尔大学的研究所创新性地提出了一个更好的解决方案,即在可信执行环境(TEEs)中运行预言机,TEEs是嵌入到CPU中的硬件系统,在其中运行的程序是完全相互隔离的,使得其他部分的CPU或计算机不可能改变其状态或篡改内部运行的代码,因为一切都受到硬件级别的隔离保护。

然而,对于预言机而言,TEEs最重要的特性是,在TEE中创建代码实例时,可以创建一个证明:用TEE的私钥签名的TEE状态的哈希(包括TEE中的所有内存和代码)。然后,可以使用此证明向其他节点证明服务器正在运行特定的代码并处于特定的状态,因此它将始终遵循该代码(如果您提供了一个密码,并且代码中没有任何发送该密码的指令,则可以确保密码不会被泄露)。

此外,由于所有与Intel SGX兼容的CPUs(实现了TEE)都有一个来自Intel的唯一私钥,因此可以使用该私钥来对所创建的证明进行签名,以便向任意实体证明代码实际上是在TEE内运行的,确保服务器处于已知的状态并且不会被篡改,从而可以随时了解服务器的运行过程。

Neo Column

Posting articles contributed from columnists on Neo.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store