关于NEST预言机价格调用收费的几个问题
《关于NEST预言机价格调用收费的几个问题》
作者:NestCore
近期有人提到NEST预言机价格可能被复制,导致无法收费。我们认为这种质疑并不成立,因为这些复制方法存在各种问题,而且NEST可以通过一些方式对这些复制行为进行治理。
这些复制方法主要有两种,一种是技术复制,通过链下读取数据,然后链上验证,确保来自NEST预言机;另一种是共享使用,通过一张共享合约,任何人调用了NEST预言机后,将价格数据复制到合约中,供其他人免费使用。还有一类就是需要中心化机构触发或者上传价格(保证价格是真实有效的),因为存在中心化风险,不在我们讨论中,我们只考虑去中心化的两种方案:
方案一:链下读取,链上验证。
该方法利用了以太坊链上数据的验证关系,原则上可以获得已经生效的NEST价格,然后在以太坊上验证该价格确系NEST预言机生成,从而供DeFi使用。这一方式存在以下致命问题:
1)该方式验证数据的成本极高。以当前网络为例,仅验证一个数据需要接近0.01ETH,而NEST预言机调用仅需0.001ETH(暂定)。如果NEST合约稍微修改一下数据结构,比如将价格数据存储在两个单元内,则该方法的成本将上涨1倍,达到0.02ETH(更极端的修改将使得验证成本超越区块gaslimit上限而变得不可能),对于DeFi用户而言,用这种方式“盗用”NEST价格毫无意义。
2)为了配合“盗用”的价格,下游DeFi将设计成新的结构。将本来一步完成的交互,拆分成两步:链下先获取链上数据,再上传至ETH进行验证,同时触发合约交互,这使得DeFi不能获得动态即时价格,因此必须制定规则,哪些价格可以用于本次DeFi的交互,哪些不能。这类规则制定会出现两个问题:要么很容易因为意外比如打包延时等造成交易失败,要么设定了一个价格区间比如最近5个区块内价格都可以触发合约,导致存在稳定的套利,这两种情况都完全破坏了DeFi的连续性。
3)价格并不是一个孤立的点,而是一个时间序列。按照这种方式勉强获得了一个可验证的单点价格数据,但无法在一笔交易里得到像均价、波动率等统计量,而这些是很多DeFi不可或缺的,因此这种“盗用”并不符合金融产品设计的需求。
方案二:共享合约复制。
不考虑中心化的共享:即某个特定机构调用NEST价格再复制到合约里,然后降低收费或免费供大家使用,这种方式有很大的风险,一旦上传者出现意外或者存在主观恶意,对下游DEFI的打击是致命的,这也是为什么预言机一定要分布式的原因,因为不再有单点风险和信任风险。
分布式共享合约复制,主要是链上调用复制,和1中的链下盗用复制,分别加以说明:
1)链上调用复制:设计这样一种合约,调用者将自己调用的价格复制到共享合约内,供其他人免费使用。如果每个参与者都如此操作,则调用价格的参与者可以用以下逻辑来降低NEST收费:首先检查共享合约是否有满足自己需求的价格(比如对应最新区块的价格);如果有,则免费使用;如果没有,则调用NEST价格并复制到共享合约(也可以直接通过共享合约调用)。
此方法使得每次调用的成本小于等于NEST收费,如果所有的DeFi都通过共享合约实现,则导致NEST的每一个价格只能收到一次费用。在这个方案的基础上,还有一种更加动态的复制方案,通过一个mapping提供价格入口,然后用户如果有必要,可以随时动态生成一张价格复制共享合约调用NEST价格,这样无论下面的合约出现什么问题,都无法封禁maping合约,只要下面有一张合约存在(用户可以在需要价格时候生成),价格就可以持续被复制出来。
NEST针对此方案的应对方法:首先增加验证机制,下游DeFi要调用价格,则必须销毁或者抵押若干NEST,并且在此操作完成后X日内激活预言机;其次设立黑名单机制,只要任何有复制、盗版使用NEST价格的合约或者共享合约,可以通过NEST系统投票将其禁止。
由于这些合约下游都是DeFi应用,一旦共享合约或者下游DeFi合约被投票禁用,对合约内资产和合约服务将造成巨大影响,使得整个DeFi需要重新引入新的预言机(而NEST生效有时间,因此不可能快速接入新的NEST价格),这对于无托管的DeFi几乎是致命的(不考虑任何中心化价格来源)。而通过maping复制NEST价格的用户要保持价格的连续性,则必须持续不断的生成复制合约,这将导致复制成本远远高于直接调用成本(需要销毁NEST和时间成本),用户不可能自发完成这一操作。
2)链下盗用复制:通过 1)中提到的方式,然后将价格复制到一个共享合约,原则上不可能被黑名单禁止。但这种方式自身存在巨大问题:
A. 如果共享合约有用户需要的价格,则用户免费,如果没有则用户需要从链下走一遍盗用流程并复制到合约,此成本在1)中已有描述,是简单调用NEST价格的10倍甚至更高,这意味着用户在调用价格时候,10次操作中至少有9次是由其他人上传,否则还不如调用NEST。这一条件是无法保证的,特别是在初期更是不可能。
B. 如果NEST合约升级,按照 1)中的方式改变存储结构,使得链下盗用变得不可行,则整个共享合约将完全失效,并且NEST对使用共享合约的DeFi进行投票限制,则这些DeFi将失去价格来源,陷入和 1)中同样的死局。
总结:由于DeFi是无托管的,因此原则上需要非常稳定的价格来源,不应该试图通过复制共享这种可以证明为窃取NEST系统利益的方式来实现;如果是这样,很可能被NEST社区共识投票禁止,造成致命的影响。而对于一切增加NEST系统价值的正常使用,理性人则不会通过投票进行限制。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!