火星链 火星链
Ctrl+D收藏火星链
首页 > 聚币 > 正文

以太坊:全链游戏101:预编译合约

作者:

时间:1900/1/1 0:00:00

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

什么是预编译合约?

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

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

全链借贷协议Radiant V2将于2月21日启动与迁移,并部署在BNB Chain上:2月15日消息,全链借贷协议Radiant Capital在社交平台表示,协议代码正在接受zokyo和派盾的最终审计。V2预计将于2月21日在Arbitrum上正式启动并迁移,还将部署在BNB Chain上。[2023/2/15 12:07:58]

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

北海艺术设计学院被授予“未来设计师&全链蜂”数字艺术区块链双创基地:金色财经报道,据人民网消息,在工信部人才交流中心主办的全国高校数字艺术设计大赛(未来设计师NCDA大赛)颁奖盛典上,北海艺术设计学院荣膺“未来设计师&全链蜂”数字艺术区块链全国首批双创基地之一。[2021/12/11 7:32:45]

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

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

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

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

SHA256-计算SHA256哈希

动态 | 天猫国际将上线全链路溯源系统:据36氪消息,近日,天猫国际进口商品“全链路溯源系统”进入试运行阶段,将为进口商品发放“签证”,借助区块链、动态镭射、动态图像识别等技术,实现商品采购、物流等信息全链路溯源,进一步加强进口商品的正品保障。据天猫国际小二透露,这套溯源系统前期主要针对奢侈品等时尚行业,预计在今年3月底上线,之后将逐步推行到各个进口商品行业。[2019/2/21]

RIPEMD160-计算RIPEMD160哈希

Identity-返回输入数据的原值

ModExp-进行模数指数运算

ECAdd-椭圆曲线点加法

ECMul-椭圆曲线点乘法

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

Security Chain 安全链 :EOS漏洞只是一个开始:今日,360公司Vulcan(伏尔甘)团队发现了区块链平台EOS的一系列高危安全漏洞。对此,Security Chain安全链表示:我们认为在未来的区块链安全中,最重要的是利用区块链的共识机制去活跃和吸引安全人才投入到区块链行业中。把阶段性安全问题先解决(如钱包安全问题),再用技术贡献经济化的手段将安全技术和科学家从传统行业带到区块链中为整个生态服务。将原来安全行业技术资源垄断的问题一定程度去中心化,把利益分享给为区块链完善安全技术的从业者。[2018/5/29]

可以看到第一到第四个预编译合约提供的基础的签名,哈希等加密功能,第五个到第八个提供了椭圆曲线运算,这些和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直接通过节点执行,可以提升运算效率,但同时降低了全链的去中心化程度。将高频使用的游戏核心逻辑置于预编译中,可以优化该类游戏的性能。不同的游戏类型,其关键逻辑也不尽相同。因此,针对某一类游戏的专用链上,其预编译设计可以高度优化该类型游戏的需求。在游戏迭代过程中,最具效率的预编译合约组合也会逐步优化出来。

标签:以太坊ECAECM以太坊币是什么币ECA币ECA价格ECM币ECM价格

聚币热门资讯
LGO:去中心化与规模经济

过去30年,由于个人电脑和消费互联网的发展,世界的各个方面都变得更加中心化。虽然我们希望AI能够通过开源来实现去中心化,但它似乎更有可能进一步中心化.

1900/1/1 0:00:00
以太坊:Shiba Inu 的 Shibarium 跨链桥开放公开测试

柴犬生态系统一直在为引入Shibarium做准备。为了迎接正式主网的发布,网络和社区一直在测试各种附加功能.

1900/1/1 0:00:00
以太坊:结束的开始?Testnet Goerli Ether飙升至 1.60 美元,因为什么?

LayerZero为开发人员提供了一种获取本质上毫无价值的gETH代币以进行测试的方法——但交易员抓住了这个机会,导致了一个异常高价值的市场.

1900/1/1 0:00:00
数字货币:美国国会议员对CBDC发出警告,称它们对西方文明构成“生存威胁”

小探本期为大家带来的内容主题是“美国国会议员对CBDC发出警告,称它们对西方文明构成“生存威胁””欢迎大家关注小探,小探每天都会给您献上关于币圈的优质内容哦.

1900/1/1 0:00:00
POS:CoinEx科普:Polkadot波卡何以成为跨链之王?

“错过了柚子,你还会错过波卡吗?”前段时间不少币圈人民都收到了这样一个灵魂拷问。不管你们有没有错过,反正我都错过了.

1900/1/1 0:00:00
OMC:加密货币市场分析:BTC、ETH横盘整理,为什么就业数据依然强劲?

劳动力市场持续紧张表明通货膨胀仍将是个问题,加密货币市场一路高歌猛进。 加密货币市场大多横盘整理,一些主要代币小幅上涨,但在最新的就业数据显示劳动力市场依然紧俏之后,其他代币略有下跌.

1900/1/1 0:00:00