区块见闻 区块见闻
Ctrl+D收藏区块见闻

RET:全链游戏101:预编译合约_Precium

作者:

时间:

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

什么是预编译合约?

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

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

Chainlink:已在以太坊上向rETH/ETH提供喂价:金色财经报道,Chainlink官方社交媒体账号发文表示,“已在以太坊上向rETH/ETH提供喂价,围绕Rocket_Pool流动性质押代币建立安全的DeFi市场。”[2023/3/19 13:13:02]

//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}

Injective宣布INJ隐私版本Secret INJ (sINJ) 上线:据官方消息,Injective宣布,INJ隐私版本Secret INJ (sINJ) 上线,为社区实现了INJ的隐私余额和隐私转账。作为该计划的一部分,Secret和Injective之间的IBC桥已在Injective Hub上启动。[2022/8/17 12:29:48]

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

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

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

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

dForce与UPRETS合作尝试链上实体资产融资:10月13日消息,借贷与合成资产协议dForce与实体资产数字化平台UPRETS达成合作,双方将共同推动链上的实体资产融资。dForce将提供免信任、透明、高效的去中心化金融基础设施,UPRETS会协助合规实体资产数字化并上链流通。

目前,UPRETS正在协助MakerDAO完成首笔太阳能农场为底层资产的借贷融资。本次合作将为dForce生态引入实体资产,而不再仅局限于DeFi领域的资产。[2021/10/13 20:25:59]

SHA256-计算SHA256哈希

RIPEMD160-计算RIPEMD160哈希

Identity-返回输入数据的原值

ModExp-进行模数指数运算

动态 | VeriBlock在2019年完成BTC OP_Return输出的57%:据News.bitcoin消息,VeriBlock在2019年完成BTC OP_Return输出的57%。此前该协议的操作码刚开始占主导地位时,一些比特币支持者将这种输出称为“滥用”和“垃圾邮件”。据悉,VeriBlock是一个基于比特币区块链的项目,其利用OP_RETURN来保护替代区块链网络,采用PoP (proof-of-proof)共识协议。[2020/1/1]

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

标签:TERPRERETERPAnyPrinterPreciumSecrets of ZurichPERP价格

SHIB最新价格热门资讯
HARE:数字资产投资产品本季度流入达到创纪录的4.2亿美元_Presearch

据数字资产投资管理公司CoinShares称,2021年迄今为止,机构级加密资产投资产品的流入已经达到创纪录水平.

比特币:随着多头控制,BNB 突破 300 美元,400 美元可能吗?_KET

由于更广泛的加密货币看到大多数代币都获得了高收益,BNB是价格显着上涨的代币之一。该代币已经收复了过去几周的损失,并显示了从30天到每小时价格上涨的平行收益.

GAM:币圈元宇宙gamefi现状-简析axie raca 星鲨_Gametree

AxieInfinity在去年彻底引爆了币圈的宇宙概念,在年底第四季度掀起了一轮gamefi板块的暴涨。小编虽然没有参与axie游戏,但是参与了bsc两款吸金能力很强的游戏raca和星鲨.

NET:交易所看到大量稳定币流入,这对比特币意味着什么?_加密货币是钱吗

链上数据显示,交易所最近观察到大量稳定币流入。这可能对比特币的价格意味着什么。StablecoinExchangeNetflow最近显示出积极的飙升正如一位分析师在CryptoQuant帖子中指.

ARB:深度分析ARB链上筹码:用户在不断增持;大户多数处于亏损_WEBAI价格

小探本期为大家带来的内容主题是“深度分析ARB链上筹码:用户在不断增持;大户多数处于亏损”欢迎大家关注小探,小探每天都会给您献上关于币圈的优质内容哦.

WEB3:Web3社交的变革:所有权、用户激励和NFT_gearbox币最新消息

当Web3社交应用如雨后春笋般出现,加密社区将Web2社交应用拿出来与之对比。Web3社交应用的主张是让人兴奋的:抗审查、数据由用户控制、数据上链并实现去中心化存储.