链抽象Omnichain就是把跨链规则写入智能合约
随着公链和layer2链的数量越来越多,资产和Dapp的跨链需求也开始增多,跨链桥自然是一种比较常见的解决方案,但以Zetachain为代表的Omnichain走出了一条完全不同的道路,本文将以Zetachain为例,解释Omminchain是如何把跨链规则写入智能合约从而实现跨链互操作的去中心化的。几种跨链技术方案跨链(Cross-Chain)技术的核心目标是实现不同区块链之间的互操作性(Interoperability)。互操作性是指不同的区块链系统能够相互理解和使用对方的资产(如代币、加密货币等)和数据,或者在不同的区块链平台上运行的应用能够相互交互和协作。这一目标的实现,可以极大地增强区块链生态系统的灵活性和扩展性,打破不同区块链平台之间的孤岛效应,从而促进更加广泛的应用和发展。 根据跨链消息的处理方式以及相应资产的签名授权方式的不同,可以分为以下几个技术方案:跨链桥(Cross-Chain Bridges): 跨链桥是一种使资产能够从一个区块链转移到另一个区块链的技术。它通过锁定在源链上的资产,并在目标链上发行相应的代表性资产(或等价资产)来实现这一过程。这种方式支持资...
全链上游戏2023年度总结
2023年全链游戏发展介绍全链上游戏在2023年有了非常显著的进展,日益吸引了大家的注意力。我们认为有以下几个原因,Jump Crypto 在年初明确了全链游戏这个概念的内涵和外延,使全链游戏和GameFi两个链游子赛道做出了明确的区分。ECS架构的游戏引擎在年初开始出现,使得建立链上复杂应用更加方便。Ticking Chain 的出现使得全链游戏的逻辑帧刷新率有了质的飞跃,从而制作全链游戏的类型从回合制扩展到了需要高刷新率的即时策略类。AA钱包在2023年开始普及,可以极大的提高全链游戏的操作体验,从此不用再对每一步上链操作进行签名授权。ZK技术随着ZK-Rollup的普及得到迅猛发展,帮助全链游戏从制作信息对称的游戏扩展到“非对称信息游戏”。自主世界(Autonomous Worlds)这个叙事从极客圈层开始渗出到VC圈层,主要归功于两次比较大的行业事件,第一个是5月份 ETHGlobal 和 0xPARC 以及 Lattice 举办的名为“Autonomous Worlds Hackathon”线上黑客松。另一个是11月份在伊斯坦布尔举办的名为“Autonomous Wor...

StarStarks:内置租赁系统会引领GameFi 2.0 吗?
StarSharks 介绍StarSharks 是一个基于 BNB 链的 NFT-GameFi 生态系统。游戏融合了不同类型的游戏机制,允许玩家使用相同的角色进入Shark 元宇宙Metaverse。StarSharks.Warriors,作为它的第一款游戏,是一款回合制卡牌游戏。平台上的鲨鱼是可战斗、可饲养、可合成的 NFT。该游戏专为新手和专家设计,将简单的战斗规则和技能机制与令人兴奋和具有挑战性的无限策略组合相结合。 StarSharks.Warriors 有两种模式:PvE 和 PvP。每个玩家从随机分配的六张技能卡开始。玩家可以在[StarSharks主页](https://StarSharks homepage)安装StarSharks.Warriors 正式版(目前只有安卓版)。 StarSharks 背后的团队是来自 Timi Studio Group 的一支才华横溢的团队,该团队拥有在 3 个月内吸引超过 100 万日活跃用户的游戏的创业记录。通过战略投资,星鲨计划吸引更多人才加入,共同打造下一代区块链游戏。投资机构一览基于“团队拥有深厚的游戏专业知识和丰富的产...
<100 subscribers


链抽象Omnichain就是把跨链规则写入智能合约
随着公链和layer2链的数量越来越多,资产和Dapp的跨链需求也开始增多,跨链桥自然是一种比较常见的解决方案,但以Zetachain为代表的Omnichain走出了一条完全不同的道路,本文将以Zetachain为例,解释Omminchain是如何把跨链规则写入智能合约从而实现跨链互操作的去中心化的。几种跨链技术方案跨链(Cross-Chain)技术的核心目标是实现不同区块链之间的互操作性(Interoperability)。互操作性是指不同的区块链系统能够相互理解和使用对方的资产(如代币、加密货币等)和数据,或者在不同的区块链平台上运行的应用能够相互交互和协作。这一目标的实现,可以极大地增强区块链生态系统的灵活性和扩展性,打破不同区块链平台之间的孤岛效应,从而促进更加广泛的应用和发展。 根据跨链消息的处理方式以及相应资产的签名授权方式的不同,可以分为以下几个技术方案:跨链桥(Cross-Chain Bridges): 跨链桥是一种使资产能够从一个区块链转移到另一个区块链的技术。它通过锁定在源链上的资产,并在目标链上发行相应的代表性资产(或等价资产)来实现这一过程。这种方式支持资...
全链上游戏2023年度总结
2023年全链游戏发展介绍全链上游戏在2023年有了非常显著的进展,日益吸引了大家的注意力。我们认为有以下几个原因,Jump Crypto 在年初明确了全链游戏这个概念的内涵和外延,使全链游戏和GameFi两个链游子赛道做出了明确的区分。ECS架构的游戏引擎在年初开始出现,使得建立链上复杂应用更加方便。Ticking Chain 的出现使得全链游戏的逻辑帧刷新率有了质的飞跃,从而制作全链游戏的类型从回合制扩展到了需要高刷新率的即时策略类。AA钱包在2023年开始普及,可以极大的提高全链游戏的操作体验,从此不用再对每一步上链操作进行签名授权。ZK技术随着ZK-Rollup的普及得到迅猛发展,帮助全链游戏从制作信息对称的游戏扩展到“非对称信息游戏”。自主世界(Autonomous Worlds)这个叙事从极客圈层开始渗出到VC圈层,主要归功于两次比较大的行业事件,第一个是5月份 ETHGlobal 和 0xPARC 以及 Lattice 举办的名为“Autonomous Worlds Hackathon”线上黑客松。另一个是11月份在伊斯坦布尔举办的名为“Autonomous Wor...

StarStarks:内置租赁系统会引领GameFi 2.0 吗?
StarSharks 介绍StarSharks 是一个基于 BNB 链的 NFT-GameFi 生态系统。游戏融合了不同类型的游戏机制,允许玩家使用相同的角色进入Shark 元宇宙Metaverse。StarSharks.Warriors,作为它的第一款游戏,是一款回合制卡牌游戏。平台上的鲨鱼是可战斗、可饲养、可合成的 NFT。该游戏专为新手和专家设计,将简单的战斗规则和技能机制与令人兴奋和具有挑战性的无限策略组合相结合。 StarSharks.Warriors 有两种模式:PvE 和 PvP。每个玩家从随机分配的六张技能卡开始。玩家可以在[StarSharks主页](https://StarSharks homepage)安装StarSharks.Warriors 正式版(目前只有安卓版)。 StarSharks 背后的团队是来自 Timi Studio Group 的一支才华横溢的团队,该团队拥有在 3 个月内吸引超过 100 万日活跃用户的游戏的创业记录。通过战略投资,星鲨计划吸引更多人才加入,共同打造下一代区块链游戏。投资机构一览基于“团队拥有深厚的游戏专业知识和丰富的产...
Share Dialog
Share Dialog
预编译合约是 EVM 中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,也可以理解为一种特殊的合约,这些函数不适合编写操作码。 它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。 预编译合约是在使用节点客户端代码实现的,因为它们不需要 EVM,所以运行速度很快。 与使用直接在 EVM 中运行的函数相比,它对开发人员来说成本也更低。
如下代码可以看到, evm.go的合约中run函数有两个分支:第一个分支是通过预编译索引来实例化索引参数从而指定预编译合约,第二个分支是如果它不是预编译合约那evm将会被调用。
// run runs the given contract and takes care of running precompiles with a fallback to the byte code interpreter.
func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) {
if contract.CodeAddr != nil {
precompiles := PrecompiledContractsHomestead
if evm.ChainConfig().IsByzantium(evm.BlockNumber) {
precompiles = PrecompiledContractsByzantium
}
if p := precompiles[*contract.CodeAddr]; p != nil {
return RunPrecompiledContract(p, input, contract)
}
}
for _, interpreter := range evm.interpreters {
if interpreter.CanRun(contract.Code) {
if evm.interpreter != interpreter {
// Ensure that the interpreter pointer is set back
// to its current value upon return.
defer func(i Interpreter) {
evm.interpreter = i
}(evm.interpreter)
evm.interpreter = interpreter
}
return interpreter.Run(contract, input, readOnly)
}
}
return nil, ErrNoCompatibleInterpreter
}
用图形来表示的话,具体的逻辑如下图:

以太坊目前有八个预编译的合约:
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 中用于提供更复杂库函数(通常用于加密、散列等复杂操作)的一种折衷方法,也可以理解为一种特殊的合约,这些函数不适合编写操作码。 它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。 预编译合约是在使用节点客户端代码实现的,因为它们不需要 EVM,所以运行速度很快。 与使用直接在 EVM 中运行的函数相比,它对开发人员来说成本也更低。
如下代码可以看到, evm.go的合约中run函数有两个分支:第一个分支是通过预编译索引来实例化索引参数从而指定预编译合约,第二个分支是如果它不是预编译合约那evm将会被调用。
// run runs the given contract and takes care of running precompiles with a fallback to the byte code interpreter.
func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) {
if contract.CodeAddr != nil {
precompiles := PrecompiledContractsHomestead
if evm.ChainConfig().IsByzantium(evm.BlockNumber) {
precompiles = PrecompiledContractsByzantium
}
if p := precompiles[*contract.CodeAddr]; p != nil {
return RunPrecompiledContract(p, input, contract)
}
}
for _, interpreter := range evm.interpreters {
if interpreter.CanRun(contract.Code) {
if evm.interpreter != interpreter {
// Ensure that the interpreter pointer is set back
// to its current value upon return.
defer func(i Interpreter) {
evm.interpreter = i
}(evm.interpreter)
evm.interpreter = interpreter
}
return interpreter.Run(contract, input, readOnly)
}
}
return nil, ErrNoCompatibleInterpreter
}
用图形来表示的话,具体的逻辑如下图:

以太坊目前有八个预编译的合约:
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.预编译合约之间难以进行交互和组合,扩展性差。
这点就不多做解释了
No comments yet