如何解决区块链的硬伤:对时间的感知

阅读数:657 2018 年 6 月 19 日

话题:语言 & 开发架构区块链

加密数字货币希望能最终撼动银行,为了让其变为现实,加密钱包的功能就不能被银行系统比下去。银行最基本的功能之一是自动转账。但不幸的是,区块链中没有“时间”的概念,而我们需要改变这个现状。

举一个常见的例子,比如缴税,截止日期是每月 10 号,我们不想要提前转账,希望就在最后一天转。第二个例子,每个月我们都要交房租,我们希望未来的一年每个月都能自动交易。两种情况银行系统都能实现,但是加密数字货币的钱包呢?

加密数字货币的答案是什么?2 个最流行的加密数字货币是比特币和以太坊。从技术先进程度来看 2 个平台,以太坊由于交易快速而更占优势。什么意思?在比特币中,我们只能在地址间传输值。但在以太坊中,我们可以在区块链中创建程序和设置逻辑。由此,去中心化应用被创建了。比如去中心化的音乐网站就是一个例子。

回到自动转账的问题,在比特币中这是不可能的。时间的概念是不存在的,只有区块。当然,你可以开启一个所谓的“CRON”,也就是在某个特定的时间点启动计算进程。比如说,它会试着让控制台客户端执行交易。这是一个中心化的方式,所有的机器或互联网问题都可以中途停止这个执行。这并不是你想要的,对不对?

CORN 的想法在以太坊中和在比特币一样无效。但以太坊还有其它方式。实际上,它给出了一个可实行的、去中心化管理的解决方案。我之前提到过的智能合约,在这种逻辑下我们可以同时进入当前的块编号和 UNIX 时间。这意味着我们可以保存智能合约情况下的交易详情。这个智能合约可以在由你指定的窗口期内执行,比如说五分钟。

在以太坊中还没有实现自动转账的原生方案,但是这个平台允许创建一个更上一层的协议——智能合约。

以太坊闹钟

能够实现这种自动转账的协议是以太坊闹钟,2015 年由以太坊基金会成员 Piper Merriam 创建。当交易被执行时,用户可以选择时间或块。由于不能 100% 保证时间 / 块的执行,我们希望用户选择一个时间窗口来执行。比如 A 想要在 5:15 发给 B 一个以太币,那么,他 / 她可以将 5:15 作为窗口开始时间,并将窗口时长设为 5 分钟。则交易的最晚执行时间可以是 5:20。

协议的简单介绍视频

交易的执行是由 TimeNodes 的网络保证的,当自动转账的时候,用户需要设置 1 笔小奖励金,这样他或她就准备好了向某人支付交易执行的酬劳。这创造了一个市场以及网络中的第二个角色——TimeNode,通过物质刺激去执行交易。

实际上,TimeNode 在通过一个打开的标签页在浏览器中引入以太坊钱包。这个钱包会用来执行自动转账和收集奖励金。允许自动转账和 TimeNode 机制的站点是:https://app.chronologic.network。为了测试这个功能,你需要安装MetaMask(仅用于调度),并使用 Kovan 测试网。这个协议很快就会运行在以太坊主网上。目前协议被ZK Lab审计,保证用户资金的安全。

技术细节

让我们从一笔自动转账的交易执行过程来分析,这笔交易可以通过eac.js-cli(一个 JavaScript 的控制台客户端)或web 应用来实现。包括控制台客户端和应用都使用底层相同的库——eac.js-lib

两种方式(控制台客户端或 web 应用),最终都是调用在 TimestampScheduler 智能交易(如果我们选择在特定的时间转账)或 BlockScheduler 中一个叫 schedule 的方法。接下来,会为每笔自动转账的交易创建新的智能交易——TransactionRequest。这个创建会被在 RequestFactory 合约中注册,并被网络中的节点观察到。在这个网络中,每个 TimeNode 都运行着一个控制台客户端或浏览器标签页,从而能捕捉到 RequestFactory 放出的 RequestCreated 事件。TimeNode 保存着所有缓存中的交易,等时间一到,它会执行交易并获得奖励金。

这个机制的有趣之处在于可以“认领”交易,给了一个节点去执行一个交易的优先权。更进一步思考,这也意味着以太坊需要定金的机制,如果节点认领了一个交易但没有执行,就会失去定金。

所有以太坊闹钟的智能交易都是用 Solidity 写的,Solidity 是最受欢迎的以太坊平台编程语言。

集成

在巴黎举办的以太坊社区大会上,我们进行了 60 多个采访,得出的结论是包括开发者和以太坊用户都需要自动转账的能力。在以太坊世界中,crowdsales 每天都在发生。由于时区的关系,它们可能在晚上开始。相比等着去买 token,使用以太坊闹钟协议,可以节省时间。

第一个可以自动转账的以太坊钱包是MyCrypto

感谢这个集成,用户可以使用“稍后发送”按钮,选择合适的时间去发起交易。下一个集成也将到来,但是首先我们要等待审计。和以太坊的创始人—— Vitalik Buterin 交流的时候,我们发现以太坊基金会计划将自动转账的功能在以太坊中本地化。没有实现的原因是时间不足,这个功能实现的计划被推迟了。

视频:以太坊创始人 Vitalik Buterin 对以太坊闹钟的看法

未来

如果你是以太坊的用户,未来几个月内你就可以在最常用的钱包里使用自动转账了。另一方面,如果你对 TimeNode 和赢取执行交易的奖励金感兴趣,现在就开始测试吧。

原文链接:https://hackernoon.com/blockchain-doesnt-know-time-there-s-need-for-a-change-492e56a00e7d

感谢海兴对本文的审校。