币安官网注册链接: 币安(Binance)
简介:目前以太坊铭文的本质仍然是Ordinals的新瓶装旧酒,没有真正有意义的新范式。 ETHS仍然存在安全风险。 虽然它确实比 Rollup 更加去中心化,但其提现过程仍然依赖于第三方公证人/管理人,这存在被盗的风险。 显然,ETHS仍然主要基于金融投机,并不是说它能够带来以太坊Layer 2所不能带来的创新。
近期BTC生态铭文的火爆,带动了其他链的开发者也纷纷构建类似的系统。 不同链上铭文系统的实现方法和可实现的功能略有不同,但有一些共同点:
铭文都是利用传输时附带的文字信息来表达你想要完成的操作。 例如信息中写“转1币至XXX”。 请注意,这些信息是纯文本形式,不会涉及链上智能合约执行等操作。 开发人员将设计一系列规范和标准来标准化所有文本信息。 开发者提供了一组Indexer索引器来收集链上所有铭文的文本信息并计算铭文系统的内部状态。 Indexer 是一个任何人都可以运行的链下开源组件。
BTC Inscription Ordinals 建立了在 BTC 上发行 NFT 和代币的机制,这也引发了人们对 BTC L2 的大规模思考。 从这个意义上来说,我们可以认为Ordinals具有一定的前沿性和探索性。 但Ordinals在技术和产品体验上都受到BTC架构的限制。 同时,也因粉尘污染、数据占用等问题而受到BTC社区OG的批评。
那么,在以太坊上重新刻上铭文有意义吗? 毕竟以太坊本身有复杂的智能合约,ERC20和NFT也是以太坊本身的一部分; 这些铭文项目会对以太坊生态产生什么影响? BTC是否会出现争议或风波?
Ethscriptions 的技术实施
我们首先看一下Ethscriptions的实现,它是以太坊上著名的铭文项目,主要使用Calldata来操作。
Calldata 是以太坊交易中传输的原始输入数据。 它通常用于传输智能合约交互所需的参数,但也可用于向 EOA 地址发送文本消息(用于任何目的的消息、铭文、转账备注等)。 图中的Input Data就是calldata。
如果你想使用 Ethscriptions 在交易中刻上“Hello world”,你需要构造一个包含以下 calldata 的交易:
链下Indexer监听到这笔交易后,会更新数据库并通知用户:新的铭文已生成,铭文内容为Hello world。 铭文中还可以放置更复杂的内容,比如表示图片信息的base64等。
Ethscriptions目前已经通过了6个ESIP(改进Ethscriptions协议的提案),类似于EIP提案,来定义铭文在不同场景下的使用。 但这些只是比较基础的铭文规范,比如EOA发起的铭文交易的格式、合约发出的事件等。
由于Ethscriptions是以太坊上的一个项目,因此它也可以利用以太坊的智能合约来实现一定程度的逻辑。 值得注意的是,直接与智能合约交互并不是 Ethscriptions 推荐的方法。
虽然官方的NFT市场也是直接使用智能合约实现的。 根据官方文档,Ethscriptions 希望为用户提供的是“去中心化且负担得起的计算服务”:将计算剥离链下将显着降低使用以太坊的成本。
我们来详细探讨一下调用智能合约的成本,可以分为三个部分:
我们以一个非常简单的USDT转账交易为例。 本次交易共消耗了63197个gas,calldata为:
让我们解析一下调用数据以及它会花费多少天然气:
因此,calldataGas = 28 * 16 + 40 * 4 = 608 个gas。
总gas为63197,减去calldata成本和固定成本,执行交易的智能合约计算成本为41589gas。 合约运行成本占了这笔交易的大部分,而这只是一笔简单的交易。 在复杂的交易中,合约运作的成本将进一步增加。
将计算过程放在链下确实会显着降低使用成本:如果不想直接在链上调用智能合约,可以向约定的EOA地址发送请求。
0x00000000000000000000000000000000000face7 发送交易数据
在交易的calldata中声明要调用哪个合约以及对应的输入参数。 由于上述地址是EOA账户,没有合约代码,因此上述操作不会触发链上的计算任务,只是发布一条消息。
在链下,Indexer 监听到这条消息后,会对其进行分析,找出这条消息的发起者最初想要调用 ETH 链上的哪个合约。 然后Indexer会在链外计算合约调用的结果。
那么离线Indexer如果想要进行铭文和智能合约操作,就必须有一套STF(状态转换函数)规则和运行时。 比较复杂的可以称为虚拟机VM。 Ethscriptions 在 ESIP-4 中推出了自己的 VM – Ethscriptions VM,后来更名为 Facet VM。
Facet – 有点像协处理器
Facet 将自己定义为一个廉价、易于使用、安全、去中心化的计算平台。 监控以太坊上Ethscriptions的calldata,拉取到VM进行计算,最后将结果返回给用户。 Facet 由几个关键组件组成:
愚蠢的合约本身实际上不会部署在以太坊上,但其代码会以calldata的形式发布到ETH链上。 下面是Facet调用愚蠢合约的例子:
一笔铸造交易到 EOA 黑洞地址
0x0000000000000000000000000000000000face7提交下图中的calldata,并声明其想要铸造的代币和数量。 这实际上与 Ordinals 或 BRC-20 相同:
我们来看一下Rubidity和Solidity的直观对比,如下图所示。
虽然官方表示Rubidity有着和Solidity类似的概念和结构,可以让开发者快速上手。 但我们知道,这实际上对开发者端的发展造成了一定的负面影响。 而目前Facet VM只支持官方白名单中的愚蠢合约,这说明官方对这种语言和VM并没有充分的信心。 不知道复用EVM对于官方来说技术上是否比开发新的VM、新的语言难度更大。 但有一点是肯定的:一种新的语言、一种新的合约、一种新的生态、一种新的以太坊使用方式确实有足够的噱头。
Facet 猛烈抨击智能合约
Facet 的文档对以太坊和智能合约做出了以下爆炸性评论:“智能合约被认为是使以太坊与众不同的最重要的功能,但 Facet 的论点是智能合约是以太坊最大的设计缺陷。”
他们认为以太坊的智能合约最大的设计缺陷是,因为只要输入(calldata)给了合约本身,它的输出就是确定的,所以不应该在链上进行操作,无端浪费金钱。 结合 Ethscriptions 所称的“去中心化且负担得起的计算服务”,显然 Ethscriptions 和 Facet 非常希望营造一种“我们正在创建新的以太坊扩展范式和用法”的市场印象,但事实上 ETHS 本身的一些技术解决方案不太可靠。
从产品角度来看,Facet可以间接调用链下智能合约,并且拥有自己的链下傻瓜合约系统。 确实,官方正在兑现其口号。
但从经济角度来看,天下没有免费的午餐。 存储和计算当然要花钱。 那么Indexer是如何解决这部分成本的呢? 官方没有给出解释,所以我们可以想象一下:
Facet和Dumb合约出现的根本原因
如果我们只需要一个简单形式的以太坊铭文,那么只有 Ethscriptions 项目就足够了。 那么为什么它的ESIP-4提案催生了Facet呢?
因为铭文系统无法用于复杂的交易逻辑。 我们可以考察一下Ethscriptions官方NFT市场合约的运行逻辑,该合约采用了挂单机制。
如果您想将Inscription NFT充值到合约中,只需要将calldata写入Inscription的EthscriptionId并调用市场合约即可。 由于此操作故意选择无效的函数调用形式,因此默认会触发回退。
最终,一个名为 PotentialEthscriptionDeposited 的事件将被抛出到以太坊链上。 Indexer节点在链下监听到这个事件后,会在本地将NFT的所有权转移到市场合约上。
为了节省gas,ETHS交易市场不会在ETH合约中存储卖方订单的一些参数,例如价格、截止日期等。 相反,它以消息的形式离线存储。 目视检查应存储在 dApp 服务器中。 优越的。 买家监听到该消息后,可以发出 buyWithSignature 指令提出购买。
NFT 使用挂单机制是很正常的,因为 NFT 本身并不是同质的。 那么如果是同质化的代币铭文,是否可以使用合约的AMM机制呢? 答案是不。 铭文 NFT 或代币的状态不在 L1 上,这与 Ordinals 和 BRC-20 类似。 这与一些社区的宣传完全相反。 大家需要注意筛查。 铭文并不是 ETH 链上的真实资产。 我们不能说生成资产的calldata在L1上,操作指令可以在L1上声明,这就是L1上的原生资产。 否则,Rollup 上的 L2 原生资产也可以称为 L1 资产,因为 Rollup 的 calldata 都在 L1 上。 显然,将此资产称为 L1 原生资产是荒谬的。
你可能会疑惑,上面的交易不是使用了智能合约吗? 为什么说合约无法读取和操作铭文呢? 事实上,这个合约只是负责收钱、转账、抛出事件,供链下的Indexer节点监听并触发相应的操作。 在以太坊EVM看来,铭文之类的东西的状态无法在以太坊专门存储状态的数据库“世界状态”中恢复,合约也无法引用它。
不管资产是什么形式,是代币、NFT还是什么奇怪的东西,我都可以给出一个非常简单的标准来识别L1资产和L2资产:它的状态是否在以太坊的“世界状态”上,恢复之后, L1的EVM是否可以引用、调用、查询、修改资产的状态? 如果不是,那么它就不是 L1 资产。
所以你也可以看到,充值事件的名称是PotentialEthscriptionDeposit,即“可能的铭文充值”,而不是确定性充值,因为合约无法确定铭文是否存在或验证其真实性。 如果您下订单的是不存在的铭文,或者是其他人的铭文,合约不会拒绝您,但 Indexer 不会包含您的行为。
因此,铭文系统只能实现这种简单的伪合约逻辑,挂单就是其中之一。 挂单的本质是交易双方在一定规则下对对方提供的信息达成一致。 其实不需要智能合约就可以用明文来表达,这和铭文的原理类似。
我们可以想象如何在不使用智能合约的情况下完成上述过程:卖家在普通交易中刻下一条消息,用票据123转给我1ETH的人就可以得到我刻印的编号为123的NFT。这样,Indexer只需要来支持这个逻辑。 当它检测到有人向卖家转账1ETH并添加ABC时,可以直接在链下Indexer数据库中转账。
当然,这个例子实际上会带来一些问题,比如多个人抢购 NFT 可能会导致重复交易。 卖家收到多次转账,但最终 NFT 只能被 Indexer 分配给一个人。 这应该也是官方明确批评智能合约,却用合约变现NFT市场的原因之一。 因此,你也应该能够理解,官方所说的通过Facet调用智能合约而不进行计算的说法是不可靠的宣传。
当然,挂单理论上可以使用纯文本代替合约,但AMM相对复杂的逻辑必须使用智能合约,因为它需要的不是双方的p2p识别,而是合约识别。 作为可靠审核者的合约需要检查余额、流动性等基本信息,并进行计算。 它需要的任何资产数据都必须可供合约使用。
AMM 只是 DeFi 的一种相对简单的形式,任何其他复杂的逻辑仅在 Ethscriptions 上是无法实现的。 这也是Facet推出的原因——Facet的首要任务就是跨域! 它实际上是一个L2,但它没有区块结构,所以我们不叫它跨链,而是叫跨域。 当所有L1资产跨域到Facet时,就不会出现跨域无法调用的问题。 所有链下资产都可以使用哑合约进行链下操作,从而支持复杂的合约逻辑。
与 Rollup 的比较
通过上面的长篇大论,大家应该能够发现Ethscriptions的解决方案和Rollup有些类似。 但这只是“类似”。 严格来说,它只能实现Rollup核心功能的一个子集。 功能的不完善给其叙事带来致命伤害,或者让用户面临严重威胁。
Rollup是一个复杂的系统,我们这里不展开展开。 它与 Ethscriptions 有一些共同点:
– 全部在以太坊上提交L2交易数据calldata。
– 所有操作均在链下处理。
共性是如此明显,因此我们需要详细证明差异。
Rollup批量提交calldata
大多数情况下,Rollup 中的用户不会直接向 L1 提交交易,而是将交易提交给链下排序器。 排序器会对所有交易进行排序、打包和压缩,并将calldata批量发送到L1。 这样,在一笔交易中提交多个用户的calldata,可以稀释21,000 Gas的基础成本。
Ethscriptions中没有这样的机制,所有用户都直接向L1提交calldata。
我们以上面的 USDT 为例(calldata 需要 608 Gas),假设 100 个用户发起 100 笔交易,非常宽松地粗略计算两者之间的成本差异:
当然,每个 Rollup 用户还需要向排序器支付 L2 计算和存储费用,但它们比 L1 便宜得多,在本例中可以忽略不计。 另外,rollup还需要一些额外的特殊字段来增加大小,但同时它具有更好的数据压缩性,这里我们不再展开。
通过这个粗略的估算,我们可以发现Ethscriptions相对于Layer 2来说并没有成本优势。另外,我在项目的社区推广中看到过类似“可以批量转账4000个铭文,花费约0.11ETH,每次转账只需平均花费0.05U”,证明Ethscriptions的使用非常便宜。 这实际上是所有 ETHS 的原理和交互细节都没有明确。
链下预确认
得益于链下排序器,Rollup 的用户请求可以在 1 秒内得到预先确认。 这比L1上的铭文系统12秒或更长的时间要好得多,UX也好得多。 当然,铭文支持者也可以辩称,在调用数据提交到 ETH 链之前,此类交易结果的最终性是不可靠的。
审查制度的抵制和权力下放
Rollup 中的用户可能会受到链下排序器的审查,但 Ethscriptions 无法审查用户。 然而,设计良好的Rollup会具有强制收集功能来抵抗排序器的审查,最终排序器将根本没有审查用户的权力。
因此,用户在使用Rollup时,也可以直接在L1上使用,绕过sequencer。 Rollup 为用户提供了不同的选择。 他们可以使用更快的排序器或直接使用 L1。 然而,Ethscriptions只能使用L1,这并没有给用户自由选择的机会。
此外,Ethscriptions 批评 Rollup 的排序器过于中心化。 但Indexer本身也是一个高度中心化的组件。 Ethscriptions 解释说,Indexer 不是中心化的,因为任何人都可以运行和验证它,但事实上大多数人自己并不运行节点。 因此,ETHS只有在极端情况下才会展现出比Rollup更去中心化的一面。 毕竟,Rollup 排序器可能会宕机或出现故障,但只要有社区成员运行多个 Indexer,ETHS 就可以继续运行。
盈利模式
任何项目都不可能用爱来发电。 具有长远发展的项目必须认真考虑盈利模式的问题。 无论是中心化实体还是去中心化实体的组合,都必须能够盈利才能长期保护网络安全。
Rollup 的排序器有一个清晰的盈利模式:收取更多的 Gas、提取 MEV 等。排序器的动机是保持网络正常运行。 Ethscriptions:由于用户直接向L1提交通话数据,Indexer不容易收费。
开发者友好度
Rollup的大部分合约开发语言、工具链等都可以直接使用以太坊,开发者可以无缝迁移到Rollup。 这些在 Ethscriptions 中都不存在,你需要掌握新的 Rubidity,你需要构建新的扫描,熟悉新的 VM 等等。当然,这些阻力反过来也是开拓的机会,当一个新的生态系统正在形成。
提现和状态结算
这就是Facet的致命问题。 我们知道Rollup不仅批量向L1提交calldata(输入),还会定期向L1提交N次操作后的状态结算(输出)。 ZKR和OPR有不同的证明方法来确定输入和输出之间的关系是否正确。 无论采用何种证明方式,最终的裁判都是L1上的合约。 Rollup 上的输出和输入是可追踪的并且无法伪造。
那么国家结算有什么用呢? 用于提现,即资金从L2提取到L1。 当L1上的状态释放后,我们可以基于状态根使用Merkle Proof等方法来证明我在L2上的提现请求包含在状态根中。 验证合约正确后,即可在L1上释放资产。
Facet没有状态结算机制,因此无法实现L2到L1的无许可、去中心化提现。 如上所述,他需要一个 L2 层来执行更复杂的合约逻辑。 比如他的AMM Swap FacetSwap。
我们可以看到,在 FacetSwap(在 Facet 上使用愚蠢合约构建的 dex)中,明显有两个操作:存款和取款。 一般来说,Swap是不允许存取款的,因为Facet需要跨域才可以使用。
在 Facet 中,充值需要将 L1 资金锁定在 L1 桥接合约上,并发出相应的事件 ethscriptions_protocol_CreateEthscription 供 Indexer 进行索引。 这与其他L2充值方式是一致的。
提款存在严重的安全问题。 由于 Facet 上没有状态结算机制,因此无法在 L2 到 L1 上使用合约来自动判断提现是否有效。 那么Facet使用什么方法呢? 管理员发布,或者说见证人机制,与之前被盗的Axie网桥类似。
我们直接看一下Facet的网桥,地址是
0xD729345aA12c5Af2121D96f87B673987f354496B。
HashedMessage是签名者签名的消息,其中包含提现的一些内容。 签名者是默认管理员地址。 因为没有状态结算,所以无法进行验证,比如账户在L2上是否有那么多币。 因此,无论项目方作恶还是黑客攻击获取私钥,仅凭签名者的签名即可提取合约上的所有资金。
Rollup中不需要见证人来释放资产; 在侧链中,如果见证人想要更加去中心化,他们可以从自己的共识体系中选择一部分作为代理人,并利用质押等方式来提供一定的经济威慑。 遏制邪恶。
在《Ethscriptions and Facets》中,什么也没有。 这是一个简单而毫不掩饰的管理员地址。 这对于一个经常喊着“智能合约是设计缺陷”、“Rollup 是中心化的”、“我们是新一代计算平台”的类似 L2 的项目来说,未免太粗心了。 显然,他还有很多缺陷,但我们可以保持观望,尽管这些缺陷不容易弥补,而且可能也存在于比特币 Layer 2 中。
总结
现行伦理学中存在一定数量的“虚假宣传”。 以下是几个关键点:
Ethscriptions利用BTC铭文的流行,依靠概念炒作新瓶装旧酒,但目前尚未发现新的范式。 目前的ETHS仍然主要是基于金融炒作,而不是说这个产品本身能够带来以太坊Layer 2所没有的东西。 这种东西的长期价值显然还需要挖掘,但以目前的形式,ETHS已经承担起了“生命不可承受之重”,他的口号与实际效果相去甚远。