ECM:全链游戏101:预编译合约

目前两款最有潜力的全链游戏引擎Curio和Argus都选择通过定制化节点的预编译合约来提高对游戏状态的查询性能以及增加对特定全链游戏的适配性,那么究竟什么是预编译合约,以及为什么预编译合约可以提高性能呢?结下来请看这篇科普短文:全链游戏101之预编译合约。

什么是预编译合约?

预编译合约是EVM中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,也可以理解为一种特殊的合约,这些函数不适合编写操作码。它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。预编译合约是在使用节点客户端代码实现的,因为它们不需要EVM,所以运行速度很快。与使用直接在EVM中运行的函数相比,它对开发人员来说成本也更低。

如下代码可以看到,evm.go的合约中run函数有两个分支:第一个分支是通过预编译索引来实例化索引参数从而指定预编译合约,第二个分支是如果它不是预编译合约那evm将会被调用。

MIM发行方Abracadabra与LayerZero合作,将MIM集成为全链可替代代币:6月1日消息,算法稳定币 MIM 发行方 Abracadabra 与互操作性协议 LayerZero 合作,将 MIM 集成为全链可替代代币(OFT),所有链上的 MIM 地址在迁移过程中不会发生变化,与跨链传输 MIM 相关的费用由 Abracadabra DAO 决定,目前除 Gas 费外暂不收取任何额外费用。[2023/6/1 11:51:47]

//runrunsthegivencontractandtakescareofrunningprecompileswithafallbacktothebytecodeinterpreter.funcrun(evm*EVM,contract*Contract,inputbyte,readOnlybool)(byte,error){ifcontract.CodeAddr!=nil{precompiles:=PrecompiledContractsHomesteadifevm.ChainConfig().IsByzantium(evm.BlockNumber){precompiles=PrecompiledContractsByzantium}ifp:=precompiles;p!=nil{returnRunPrecompiledContract(p,input,contract。for_,interpreter:=rangeevm.interpreters{ifinterpreter.CanRun(contract.Code){ifevm.interpreter!=interpreter{//Ensurethattheinterpreterpointerissetback//toitscurrentvalueuponreturn.deferfunc(iInterpreter){evm.interpreter=i}(evm.interpreter)evm.interpreter=interpreter}returninterpreter.Run(contract,input,readOnly。returnnil,ErrNoCompatibleInterpreter}

MAP Protocol即将推出MRC20全链发币协议:5月31日消息,在 MAPO 首尔黑客松现场,全链互操作基础设施 MAP Protocol 宣布即将推出 MRC20 全链发币协议。不同于当前 ERC20/TRC20/BRC20 发币协议,MRC20 协议可覆盖全链,并实现各链代币数据互通。

MAP Protocol 表示,该协议对开发者和用户更友好:开发者可以在低代码平台上非常简单地进行代币的发行和创建,代币在各个链上的数据可以互通,而起源链和目标链上的代币都采用销毁 / 增发模式,不再需要使用任何跨链桥;此外,通过 butternetwork.io 提供跨链的 Gas Fee 代付,用户在使用代币时完全无感知链的存在。[2023/5/31 11:49:59]

用图形来表示的话,具体的逻辑如下图:

全链抗MEV DEX聚合器Cashmere Labs将在Aptos部署合约:10月23日消息,基于LayerZero的全链抗MEV DEX聚合器Cashmere Labs发推称,Cashmere合约将部署至Aptos。目前Cashmere Labs产品暂未推出。

Aptos Bridge用户可以将USDC、USDT和ETH从Etheruem、Arbitrum、Arbitrum、Optimism、Avalanche、Polygon、BNB Chain跨链至Aptos。[2022/10/23 16:36:05]

那么预编译合约的瓶颈在哪里?

声音 | SECC安全链: 区块链安全的核心是重构安全节点经济体:7月6日消息,Security Chain(安全链)创始人钱科铭认为,区块链安全问题的核心体现在算法安全性、协议安全性、实现安全性、使用安全性和系统安全性五个方面。而造成区块链整体安全隐患日益严重的根本性原因有三点:

一、安全白帽子(开发者)的价值一直以来被严重低估,致使黑客攻击获取的回报远远高于白帽子。造成区块链安全领域,更多人愿意选择当黑客,而不是维护正义的白帽子。

二、安全产品利润和销售渠道被中心化大公司垄断,使用者需付出高代价但无法获得有效果的安全能力。

三、由于市场的封闭性,导致安全开发者收入偏低,高阶级别的白帽社群也不屑于与大公司合作。[2018/7/6]

以太坊目前有八个预编译的合约:

ECRecover-通过签名恢复对应地址

SHA256-计算SHA256哈希

RIPEMD160-计算RIPEMD160哈希

Identity-返回输入数据的原值

ModExp-进行模数指数运算

ECAdd-椭圆曲线点加法

ECMul-椭圆曲线点乘法

ECPairing-配对运算,验证椭圆曲线点

可以看到第一到第四个预编译合约提供的基础的签名,哈希等加密功能,第五个到第八个提供了椭圆曲线运算,这些和zk-snark相关。

那么问题来了,为什么以太坊预编译只支持了八个预编译合约,预编译合约不是降低了gas消耗吗?而且为什么不直接把ECS植入以太坊预编译合约中呢?

其实主要是以下三个原因:

1.过度依赖预编译合约会降低整个平台的去中心化程度:

首先,预编译合约的代码需要集成在客户端节点代码中,增加了客户端的复杂性。第二,验证节点可能因为安全原因可能会过滤掉预编译合约的计算,所以大部分预编译合约的请求是由全节点完成的,目前全球的以太坊全节点的数量只有4000-6000个,而且验证节点有50万个,确实比起非预编译合约要中心化很多。

2.预编译合约的新增和修改需要硬分叉升级,不易灵活演进。

预编译合约的支持需要进行EIP流程,举个例子:EIP-196增加了在alt_bn128曲线上的ECADD和ECMUL两个预编译合约。EIP-197增加了在alt_bn128曲线上的配对Pairing函数。基本都是为了让隐私在以太坊上可用进行支持,而且整个EIP的流程是漫长和考究的,等待EIP通过也不是一个现实的问题。

3.预编译合约之间难以进行交互和组合,扩展性差。

这点就不多做解释了,很直观。

预编译合约在全链游戏扮演什么角色?

预编译合约跳过EVM直接通过节点执行,可以提升运算效率,但同时降低了全链的去中心化程度。将高频使用的游戏核心逻辑置于预编译中,可以优化该类游戏的性能。不同的游戏类型,其关键逻辑也不尽相同。因此,针对某一类游戏的专用链上,其预编译设计可以高度优化该类型游戏的需求。在游戏迭代过程中,最具效率的预编译合约组合也会逐步优化出来。

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

金星链

KuCoinUSDC:比特币为这一刻而生

在美国银行业危机中,价值正在流入比特币。这是“大重置”的开始吗? 硅谷银行、银门银行和签名银行的倒闭继续波及市场,导致美国银行股暴跌。最近,嘉信理财的股票在周一早上停牌.

[0:15ms0-0:573ms