目前两款最有潜力的全链游戏引擎Curio和Argus都选择通过定制化节点的预编译合约来提高对游戏状态的查询性能以及增加对特定全链游戏的适配性,那么究竟什么是预编译合约,以及为什么预编译合约可以提高性能呢?结下来请看这篇科普短文:全链游戏101之预编译合约。
什么是预编译合约?
预编译合约是EVM中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,也可以理解为一种特殊的合约,这些函数不适合编写操作码。它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。预编译合约是在使用节点客户端代码实现的,因为它们不需要EVM,所以运行速度很快。与使用直接在EVM中运行的函数相比,它对开发人员来说成本也更低。
如下代码可以看到,evm.go的合约中run函数有两个分支:第一个分支是通过预编译索引来实例化索引参数从而指定预编译合约,第二个分支是如果它不是预编译合约那evm将会被调用。
基于LayerZero的全链NFT平台Omni X上线主网Alpha版本:7月18日消息,基于LayerZero的全链NFT平台Omni X上线主网Alpha版本,并推出由LayerZero提供支持的免费限量版NFT。[2023/7/18 11:01:31]
//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}
全链钱包项目Everywhere Finance启动面向STG持有者空投提案的投票:2月5日消息,由前SushiSwap核心成员、前LayerZero和Stargate贡献者Na?m Boubziz创立的全链钱包项目Everywhere Finance启动面向STG持有者空投提案的投票。
该提案包含三个选项:向STG和veSTG持有者平均分配、分配比例分别为40%和60%以及分配比例分别为25%和75%。
此外,该提案显示,空投将于3月29日进行,快照日期将在空投当天公布,且空投仅可通过Reunit钱包领取。[2023/2/5 11:48:36]
用图形来表示的话,具体的逻辑如下图:
山东港口油品全链条贸易金融服务平台启动 突出区块链技术应用:山东港口2020全球石油贸易大会7月28日举行。大会上,山东港口联手29家国内外贸易商、金融机构、炼化企业代表共同启动“山东港口油品全链条贸易金融服务平台”。该平台紧密衔接上游贸易商、下游山东炼化企业和银行金融机构,突出贸易基础、供应链金融保障和区块链技术应用,全面提升优质资源配置能力,为广大独立炼化企业提供“端到端”全程综合服务,建立透明开放的诚信新体系。(青岛日报)[2020/7/29]
那么预编译合约的瓶颈在哪里?
以太坊目前有八个预编译的合约:
ECRecover-通过签名恢复对应地址
SHA256-计算SHA256哈希
RIPEMD160-计算RIPEMD160哈希
动态 | 天猫国际将上线全链路溯源系统:据36氪消息,近日,天猫国际进口商品“全链路溯源系统”进入试运行阶段,将为进口商品发放“签证”,借助区块链、动态镭射、动态图像识别等技术,实现商品采购、物流等信息全链路溯源,进一步加强进口商品的正品保障。据天猫国际小二透露,这套溯源系统前期主要针对奢侈品等时尚行业,预计在今年3月底上线,之后将逐步推行到各个进口商品行业。[2019/2/21]
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直接通过节点执行,可以提升运算效率,但同时降低了全链的去中心化程度。将高频使用的游戏核心逻辑置于预编译中,可以优化该类游戏的性能。不同的游戏类型,其关键逻辑也不尽相同。因此,针对某一类游戏的专用链上,其预编译设计可以高度优化该类型游戏的需求。在游戏迭代过程中,最具效率的预编译合约组合也会逐步优化出来。
巴基斯坦开伯尔·普赫图赫瓦省成立了一个联邦委员会,以制定新的加密货币政策,包括政府支持的加密货币挖矿。市场消息:巴基斯坦正在研究央行数字货币:市场消息:巴基斯坦正在研究央行数字货币.
1900/1/1 0:00:00在加密资产市场,有这样一位比特币巨鲸,一直在默默囤币,只进不出、不问行情不论涨跌、有条不紊地买进BTC。对于这个机构来讲,买入BTC是刚需。而就算它低调行事,在加密市场也备受瞩目.
1900/1/1 0:00:00小探本期为大家带来的内容主题是“国防部非官方使用ChatGPT引发担忧”欢迎大家关注小探,小探每天都会给您献上关于币圈的优质内容哦.
1900/1/1 0:00:00中国已全面进入建设数字经济的新时代,数字身份认证与管理及用户隐私保护已成为数字经济发展不可回避的核心问题之一.
1900/1/1 0:00:002月25日,Lido创下了150,000ETH代币的最高日流入量。LookonChain报道称,Tron创始人孙宇晨已经质押了超过200,000个ETH代币.
1900/1/1 0:00:00卡尔达诺重新测试0.3美元阻力位,多头处于亏损状态,价格下跌5%,维持看跌暴跌。尽管多头在8月初突破0.3美元水平后尽了最大努力,试图迅速收复该水平.
1900/1/1 0:00:00