Solidity Gas 优化清单及其原理:存储、内存与操作符
概述 最近发现了一个 非常有意思的 PPT 介绍了大量的 gas 优化技巧,本文为此 PPT 的文字版本,但与 PPT 不同的是,本文会会介绍合约内函数 gas 的计算并尽可能介绍每种优化方案的原理。 ...
概述 最近发现了一个 非常有意思的 PPT 介绍了大量的 gas 优化技巧,本文为此 PPT 的文字版本,但与 PPT 不同的是,本文会会介绍合约内函数 gas 的计算并尽可能介绍每种优化方案的原理。 ...
概述 如何对早期的想法或者应用进行价值共识,并参与投资?这在去中心化世界是一个巨大的挑战。ERC7527 遵循“信贷创造货币”的共识,提出了一种基于 Premium 驱动的去中心化定价的范式。 ...
概述 纯链上资产定价是一项相当有趣的工作,常见的方案都是基于函数报价。具体来说,包含以下三类: 各类用于代币互换的 AMM 曲线,以 Uniswap 推出的 x * y = k 最为著名 直接根据供应量等因子给出报价的 Bonding Curve 方案,近期的 FriendTech 和 pump.fun 都属于此类 基于拍卖的方案,链上拍卖方案往往使用荷兰式拍卖以提高效率,较少见到因英式拍卖,且由于技术问题,也较难见到基于密封报价的盲拍。较为著名的是 paradigm 推出的 GDA 和 VRGDA 方案,以及 UniswapX 内的荷兰式拍卖方案 上述不同的函数定价方案都存在一定的优点和缺陷,本文将首先介绍这些目前已经被广泛使用的链上资产定价方案,然后本文将介绍基于 ERC7527 及连续函数报价的新一代链上资产定价方案。 ...
概述 作为以太坊开发者,拥有自己的以太坊节点是一个常规操作。而且大量的以太坊项目也依赖于以太坊节点,本文将向读者介绍如何最快的部署以太坊的完整节点,包括执行层节点与共识层节点。我选择使用 Reth 作为执行层节点,选择使用 Lighthouse 作为共识层节点。 ...
概述 对于伪随机数的生成,特别是正态分布随机数的生成在智能合约内拥有较为广阔的使用场景。本文主要讨论链上的伪随机数生成。链上没有真随机数的观点是正确的,但是此观点不应该阻碍智能合约工程师探索链上高质量伪随机数生成,链上也有具有较难操纵的随机数来源,比如 EIP-4399 引入的 PREVRANDAO 操作码,但是将此随机数作为种子计算如正态分布的随机数的有关讨论则较少在智能合约领域提及,本文主要对此问题进行讨论。 ...
概述 VRGDA(Variable Rate GDAs) 是一种渐进式荷兰式拍卖(Gradual Dutch Auctions, GDAs)的扩展,其作用是在超长代币发行期间保持一个合理价格的且定期的流动性释放。而普通的 GDAs 则是只可以保证代币出售的价格合理,但不能保证代币在合适的时间释放。 ...
概述 在 上一篇文章 中,我们介绍了常见的几种有理多项式插值方法,但我们并没有给出具体的 Huff 语言实现及其测试。本文仍考虑在智能合约内实现以下公式: $$ f(x) = e^x $$ 与上一篇文章不同,本文不会进一步讨论具体的插值原理,而是主要介绍插值的实现及其误差测试。 ...
概述 随着 Starknet Foundry 的进一步更新,使用 Starknet Foundry 进行 Cairo 智能合约开发可能会逐渐成为未来主流。 本文的主要内容实际上是介绍 cairo v2.3 引入的 Components 重大更新,但考虑 Starknet Foundry 的活跃开发,所以本文使用了 Starknet Foundry 作为开发框架,而不是与之前的文章一样使用 Cairo 自带的框架。 ...
概述 在 solidity 的 gas 优化过程中,我们常会遇到一些复杂的数学计算,这些复杂的数学计算在 solidity 中实现往往是困难的且极其消耗 gas 的,本文将给出一系列通用的数学方法以实现使用多项式逼近复杂数学公式,并给出对应的相关代码。 ...
概述 总所周知,在 StarkNet Cairo 中,合约需要经过以下步骤进行编译和部署: 在此流程中,我们发现合约首先被编译为 Sierra 这一中间表示层。Sierra 的全称为 Safe Intermediate Representation ,直译为安全中间表示层。在本文中,我们将探讨 Sierra 为什么具有 “安全” 和 “中间表示” 两个特性。 ...