http://www.7klian.com

涨常识 | 智能合约不智能,怎么办?

那假如某个时间段自动生意业务太多了怎么办?

老钱(BS'14, MS'18), UIUC 计较机科学系硕士,师承 Zcash Andrew Miller。三年互联网事情履历。今朝接受 NAD Grid https://nadgrid.com 技能合资人。NAD Grid互联能源世界。

搞清楚智能合约触发的本质之后,想要让一个智能合约在一个条件满意时自动触发,此刻有这么几个做法:

总结

可以把自动生意业务放在所有正常生意业务前面,这样正常生意业务将基于自动生意业务执行完之后的状态之上。自动生意业务之间的顺序可以由矿工自行抉择。不外假如自动生意业务的法则巨大的话,两个差异自动生意业务大概会因为互相的顺序差异而发生差异的状态转移。

单价可以以整个区块中正常生意业务的平均 gas 单价来计较。

一个用户发一条外部生意业务 T 直接 invoke 智能合约 A 里的要领 F1;

老钱将在这篇文章里给各人科普现有的自动执行智能合约的做法,然后抛砖引玉,给出一个真正支持智能合约自动执行的平台的设计方案。

老钱认为可以引入非凡区块的观念,这个非凡区块里的所有生意业务都是自动生意业务,而且不答允存在外部生意业务。非凡区块不计入区块高度以免自动生意业务的逻辑改变。在自动生意业务太多的环境下,可以把自动生意业务打包进非凡区块。打包非凡区块的挖矿难度可以大大减小。可以有许多个持续的非凡区块,直到下一个正常区块高度到来之前。

和普通的外部生意业务一样,这个自动生意业务完成后,状态将更新而且记录在该区块里。自动执行的条件和执行生意业务的输入都应该已经存在在合约里。矿工完成一个区块的打包后,广播给全网,网络里的节点收到新区块后验证自动生意业务,而且验证是不是所有应该在这个区块高度自动执行的智能合约都已经执行了,如若否则,则拒绝接管这个区块,并期待下一个及格的区块。差异的矿工竞争时,各自打包的 candidate 区块里包括的生意业务大概各不沟通,可是他们打包的自动生意业务应该都一样。

矿工如何追踪所有需要自动执行的智能合约?

假如智能合约「自动执行」要在区块链协议层里划定好,该怎么样实现呢?

智能合约「自动执行」的新思路

自动生意业务的 Gas 怎么算?矿工经济鼓励会因此受到影响吗?

这类要领的问题在于,「自动执行」是一个由区块链外部的剧本节制的进程。区块链外部无论产生什么,区块链自己都没法节制。轮询剧本自己大概有 bug,可能要领 2 中没有人愿意帮你跑剧本轮询,这些轮询剧本也不能担保一直在线,由于这些问题的存在,智能合约的「自动执行」就不能被完全担保,因为这不是区块链协议里划定的,是在区块链外部约定俗成的。

这两种要领的本质都是一样的,都是由一个用户提倡的一条生意业务开始的。假如没有用户提倡的那条生意业务 T,无论如何智能合约 A 里的 F1 都是不会被触发的。

上述的要领 2 中,用户向智能合约里预存的特另外 ether/gas,是用来经济鼓励网络里的其他用户或某个指定用户,来为他提倡最后谁人用户触发智能合约的外部生意业务的。这两种要领的本质也都是一样的,都是由网络里的某个或某几个用户跑一个轮询剧本,来判定条件是否满意,而且抉择是否提倡外部生意业务来触发智能合约。

拿以太坊为例,我们先从一个最简朴的用例,好比谜恋猫的自动临盆,开始构想理论上的实现:即当区块高度到达X时——这是条件,自动执行智能合约。

我们可以修改以太坊的协议,把自动执行智能合约的责任转移到矿工身上,因为以太坊网络里,在任意一个时间点城市有矿工在线——想象一下,假如哪天以太坊网络里没有矿工了,那某种意义上这个网络就「死」了,所以在某种角度上,矿工可以被当作是整个网络的一个守护历程 daemon process 。

这是个有意思的问题。区块巨细的决断考量了许多因素,,所以不能随意的变动区块的巨细。

智能合约这个观念从以太坊降生的那年开始被遍及宣传,可是许多宣传中对智能合约的领略有许多常见的误区。不外亏得跟着真正静下心钻研区块链和智能合约的人越来越多,一些误区也逐渐的被批改。可是有一个误区并没有被表明清楚,也是「智能合约」这个观念的一个焦点问题:大大都人认为智能合约是可以自动执行的。

「自动执行」是什么…

作者:

自动生意业务和其他正常生意业务的顺序怎么布置?

建设一个新的自动执行法则的时候,矿工可以把这个新的法则插手一个注册表中。用户建设新的自动执行法则的生意业务将收取特另外 gas。用户也可以提倡生意业务把某个自动执行的法则从注册表中删除。不外注册表也大概因此变得很复杂,注册表的检索 ndexing 也不是很好做。

这个界说里最重要的一点就是:无须由外部生意业务触发。现有的智能合约平台,好比以太坊中,一个智能合约 A 里的某个要领 F1 的触发 invocation 一般有 2 种要领:

修改完的协议中,全网的矿工都有义务在挖出下一个区块之前,先找出哪些智能合约需要自动执行。找出之后,按照用户预先配置好的输入 input,由矿工建设并执行一条非凡的生意业务,这个生意业务可以叫做 「自动生意业务」,用以和普通的外部生意业务区分隔。

值得摸索的几个问题

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读