Solidity 0.8.20 版本发布,引入了新的操作码 PUSH0。PUSH0 的作用是将常量 0 推送到堆栈上,可以减少合约字节码大小,降低合约部署的 Gas 成本。在以太坊主网使用该操作码时,需要注意其他链可能不支持 PUSH0 操作码,需要选择正确的 EVM 版本。
PUSH0
本文介绍了比特币中使用的Script脚本语言,它是一种微型编程语言,用于为比特币交易的输出提供锁定机制。文章解释了Script的组成、运行方式、有效性判断标准,以及使用Script的原因和标准脚本类型。
本文概述了当前和提议中的比特币智能合约构建模块,包括BIP-119 CTV、BIP-118 APO、TLUV、CSFS、OP_AMOUNT、SIGHASH_BUNDLE、交易赞助者、OP_CAT(或SHASTREAM)、OP_TWEAK / ECMUL、适配器签名、委托/Graftroot、BIP-300 DriveChain和Elements操作码。
本文介绍了如何使用操作码(Opcodes)编写、测试和部署智能合约。Opcodes是EVM可以理解的基本指令,直接使用Opcodes编写智能合约可以帮助开发者更深入地理解EVM的工作原理、优化Gas消耗、进行定制化功能开发和安全分析。文章通过一个简单的加法合约的示例,详细解释了如何将Opcodes转换为字节码,并通过Remix部署。
本文介绍了在zkEVM中使用plookup来创建执行轨迹的方法,以克服字节码转换为SNARK的难题。通过将操作码及其索引存储在查找表t_opcodes中,并在执行证明阶段允许prover选择任何操作码,结合程序计数器检查索引的正确性,从而实现对循环和复杂操作码(如returndatacopy和哈希函数)的支持,优化了zkEVM的性能,降低了约束开销。
本文讨论了比特币脚本中关于IN_OUT_AMOUNT操作码的引入,该操作码旨在处理交易输入和输出金额,并允许对64位数值进行数学运算,同时讨论了TLUV操作码,用于控制Taproot脚本的变换,包括脚本的修改、默克尔路径的调整以及内部公钥的变更,从而实现更灵活的资金池管理和条件支付结构。
IN_OUT_AMOUNT
TLUV
一、Create2操作码Create2操作码常常被用来在一个合约中创建另一个合约,这是在智能合约中创建另一个合约的方法之一,另一个方法是通过Create操作码,本文重点关注Create2操作码的工作原理以及使用方式。小小提醒:本文中所提到的几种字节码词汇之间的关系:creationCode(b
理解比特币脚本语言的运行
EVM(以太坊虚拟机)的堆栈指令是智能合约操作的基础,使用这些指令可以对堆栈中的数据进行各种操作。
本文介绍了 Nethermind 团队的 IL-EVM 项目,该项目旨在通过将 EVM 代码动态转换为 .NET 中间语言并进行实时优化来提高 EVM 的效率。项目包括实现 LOG0-LOG4 操作码,生成 2-7 个操作码模式的统计信息,并根据统计信息实现常见的操作码模式,最后进行测试和修复 bug。
该文档提出了在 Elements 网络中 Taproot 升级时添加的新操作码,包括用于流式哈希的流式操作码、用于交易内省的交易内省代码、有符号 64 位算术操作码、转换操作码和新的加密操作符,旨在增强智能合约的功能和效率,同时考虑了资源限制和安全性。
这篇文章批判了以太坊改进提案EOF(EIP-7692)的复杂性,认为其引入了新的合约创建方式、移除/增加多种操作码,且其宣称的优势可以用更简单的方式在现有EVM上实现。
该 BIP 提议在比特币脚本系统中引入一个新的操作码 OP_EVAL,允许比特币接收者指定花费比特币所需的交易类型,从而实现端到端的安全钱包和支付,以及资金托管交易或其他复杂交易。为了实现向后兼容,旧客户端和矿工也能验证包含OP_EVAL的交易。