31

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

 5 years ago
source link: http://www.infoq.com/cn/articles/blockchain-doesnt-know-time?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

举一个常见的例子,比如缴税,截止日期是每月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

感谢海兴对本文的审校。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK