以太坊智能合约(EVM)“三宗罪”
区块链是一个解决信任的革命技术,但可笑的是,每年都有约价值1000亿元加密资产蒸发,问题出在哪里呢?追根究底,我认为是以太坊智能合约出了问题,可能用V神的错误( EVM=Ethereum Vitalik Mistake)来描述更为贴切!
---------------------------------------
以太坊智能合约(EVM)“三宗罪”
1.用户不能表达交易要求
法律上,双方意思一致才是合约。合约双方必需对各方的付出和获得都达成一致,合约才能成立。那么用户在调用智能合约时,他同意的是什么?是接受智能合约所产生的任何结果,还是合约发布者宣称会产生的结果?绝大多数用户都不是程序员,不可能知道程序会怎么运行,显然他们同意的是合约发布者宣称会产生的结果.
2.矿工不验证交易结果
以太坊矿工是不可能验证智能合约的执行结果是否与用户的预期 (也就是合约发布者宣称的结果)一致,因为以太坊节点根本就没有这方面的信息。所以以太坊中所记录的每一笔智能合约交易只是证明“智能合约产生了这样 的结果”,而不是“合约双方同意这样的结果”。混同这二者的后果是致命的。在以太坊中,用户调用智能合约时,节点会执行智能合约,只要智能合约成功返回,节点就认为交易合法并予以记录。对于作为去中心化账本的区块链来说,很重要的一条就是交易必须经过验证。正如中本聪所说的:不要信任,要验证。这是区块链的金科玉律,任何时候违反它必然导致安全性问题。但以太坊并不验证智能合约的交易结果,而只是验证智能合约的执行过程。这种模式有什么问题呢?毕竟智能合约调用是用户发起的,难道不应该接受智能合约调用的结果吗?这是以太坊的思维。
3.资产由合约保管,非去中心化
在以太坊及大批模仿者中,每个智能合约都管理自己发行的代币的账本。也就是说,在这些区块链上存在不止一个账本。原生币有一个账本。每一种代币又各有一个账本。他们都是去中心分布式账本吗?对于原生币的账本不存在争议,对于代币的账本,我们需要考察一下什么才是一个去中心。所谓去中心指的是每个记账者(矿工)独立地决定各自所纪录的账本内容, 而不是机械地复制他人的账本。这种独立性包括独立地决定每一笔交易是否合法,从而是否纪录该笔交易。只要网络中造假者不占优势,就可以通过这种方式阻止非法交易成为区块链网络的共识,从而达到保护资产安全的目的。如果一个区块链中的矿工不具有这种独立决定每一笔交易是否合法的能力,那么这个区块链就不是去中心的,矿工们都必须依赖一个中心化的权威决定来决定每笔交易是否合法,因此所有账本就是由一个中心来控制的,这个中心就可以任意决定资产的归属,区块链就不能为用户提供安全性保障。而根据以太坊的智能合约交易模式,智能合约代币的账本是由合约管理,而非矿工管理。而每个合约都是由单一的项目方发布,矿工虽然纪录合约所产生的数据,但矿工并不理解这些数据,只能是合约要求矿工记什么矿工就记什么。这就是把所有矿工从记账人变为记账的笔,而指挥这些笔的人是合约的项目方。因此这些代币的账本不是去中心的,而是中心化的账本。这是非常不安全的。
既没有交易安全,因为以太坊不能保证合约执行的结果符合用户期望;也没有价值储存安全,因为智能合约可以不经用户同意就转走用户资产。因此我们看到以太坊自发布以来已经发生多起与智能合约有关的安全性事件。相比之下,比特币从未发生过安全性事件。大家都认为智能合约的安全问题 是开发者的错误和疏忽所导致,所以业内在规范智能合约开发流程,对于智能合约进行形式验证,代码安全性审计,开发安全的智能合约语言等方面作出了很大的努力。然而智能合约的安全问题从根本上说是自以太坊发布以来业界对于去中心合约的错误理解和由此而来的不当交易模式所导致。解决了这个问题就能杜绝迄今为止的大多数智能合约安全问题。而不解决这些问题,现今的各种努力终归不能杜绝智能合约的安全隐患。
正确的做法-----零熵【明示合意智能合约】
1.用户表达交易要求
2.智能合约满足用户要求
3.矿工验证用户要求得到满足
4.用户以私钥保管资产
对于作为去中心化账本的区块链来说,很重要的一条就是交易必须经过验证。正如中本聪所说的:不要信任,要验证。这是区块链的金科玉律,任何时候违反它必然导致安全性问题!零熵区块链为各种价值形态提供了一种统一的表达方式,所有通证在交易中都有平等的地位,即节点接收含各种通证的交易对它们记账,并按其类型进行合法性验证。如:零熵区块链在比特币式的UTXO交易模型中增加了智能合约调用, 扩展UTXO交易中包含输入、定义、输出三个部分。其中输入部分的每个输入项与比特币交易的输入项类似包含对之前交易未使用输出的引用和签名。定义中的每个定义项或者定义一个几何体(边界线,多边形),或者定义一个权益项(权益三元组)或权益集(权益项哈希值的集合)。输出中的每个输出项包含一个通证和一个脚本。脚本可以是比特币中那种锁定脚本,也可以是智能合约调用脚本),并允许交易参与各方(自然人和智能合约)通过UTXO交易模型表达各自的意愿;且智能合约执行完成并不自动代表交易合法,节点会验证各方的意愿是否满足,如果任何一方的意愿没有满足,则交易不成功,交易的结果以UTXO输出的方式交付各方。由于用户得到了一个UTXO输出,所以无需依赖智能合约为其记账,即使智能合约仍然维持一个账本,这个账本也没有外部效力,不影响用户资产的所有权。因此无论是智能合约发布者还是黑客都不可能盗走用户的资产,各种智能合约安全问题得以避免。
明示合意智能合约中合约不是单纯地满足用户要求,合约也可以表达自己的要求。例如在货到付款的场景中,用户发起交货的合约调用,合约执行时就可以通过向交易中添加以合约为付款对象的输出来提出付款的要求,用户如果没有提供相应的输入,则交货不成功。
明示合意智能合约由于采用UTXO模式,因此允许在一个交易中有多个智能合约调用,从而实现多方合约的组合。比如货到付款的场景中,参与方包括买方、卖方、货运方三方,其中卖方和货运方都可以以智能合约参与,而整个交易依然是原子化的。这在目前以太坊智能合约模式中是难以做到的,需要至少二个独立的智能合约调用,因而存在欺诈风险。
明示合意智能合约安全的关键在于用户不经手智能合约直接控制自己的资产。有人可能会说如果坚持这么做,很多DEFI应用就无法进行。如果张三不先把钱给智能合约,智能合约怎么能代表张三把钱借给李四?这种论点误解了控制权与所有权的差别。从法律上说,张三把钱给智能合约,转的是控制权而不是所有权,是控制未来将钱转给李四的权利。因此如果有一种机制能转移控制权而不转所有权,就依然能实现DEFI的目的;零熵区块链中包含二种转移控制权而不转所有权的机制,完美的解决了这个问题!
零熵内置货币的发行,相关的5项专利技术早已申请,并获得了多项国际专利。
免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。
你也可能喜欢
Messari:SynFutures第三季度关键更新
周一闪购:使用信用卡/借记卡零手续费买币
每周一,通过信用卡或借记卡( Visa、万事达卡、Google Pay 及 Apple Pay)用本地法定货币购买加密货币,可享零手续费! 买币 活动时间:每周一20:00至周二20:00(UTC+8) 活动规则 注册 Bitget 账户或登录现有账户。 导航至 “买币”并选择“ 信用卡/借记卡”作为付款方式。 完成 身份认证并输入您的银行卡信息。 立即完成从法币到加密货币的交易。 额外福利 >>> 周四闪购:使用信用卡/借记卡零手续费买币 立即参与 >>> 如何使用信用卡或借记卡购买加密货币 >>> 如何在 Bitget App 上使用信用卡/借记卡购买加密货币 >>> 如何在 Bitge
卡达诺价格预测:在加密货币乐观情绪重燃之际,ADA 价格突破 1 美元
卡达诺(Cardano,ADA)在经过几个月的盘整后,突破了 1 美元的里程碑,达到 1.13 美元。美国和全球对加密货币的乐观情绪再度升温,助长了这一涨势。