Michael.W基于Foundry精读Openzeppelin第47期——SafeERC20.sol

SafeERC20库封装了ERC20的操作,使各操作执行失败时触发revert。因为标准IERC20的转账和授权等需通过一个bool返回值来表示操作是否成功,可能实现合约内部没有设置revert机制。有的ERC20合约的授权或转账的实现并无返回值(以太坊上的USDT合约),此时可通过本库与其交互。

  • Michael.W
  • 发布于 2024-01-17
  • 阅读 ( 1138 )
  • ( 10 )

深入研究智能合约反编译

探究如何将原始字节码转换为可读的 Solidity 代码及其对应的应用程序二进制接口(ABI)

  • Tiny熊
  • 发布于 2024-01-17
  • 阅读 ( 1975 )
  • ( 106 )

引介|EVM 深入探讨 Part 6

将深入研究EVM中的一个关键数据结构,交易收据和其相关的事件日志。

智能合约设计模式:代理

深入探讨可升级合约的架构

Michael.W基于Foundry精读Openzeppelin第46期——ERC20Snapshot.sol

ERC20Snapshot库是ERC20的拓展,增加了各账户余额及总流通量的快照机制。如果涉及到根据账户ERC20余额进行分红、投票等业务可以使用该库,其可有效防御在不同地址间转账进行“一币多用”的攻击。在一个快照横截面数据上进行分红、投票甚至是ERC20分叉都是最有效的解决方案。

  • Michael.W
  • 发布于 2024-01-02
  • 阅读 ( 1362 )
  • ( 19 )

Web3专题(五) Hardhat 和 Foundry 该如何选择?

hardhat vs foundry

Michael.W基于Foundry精读Openzeppelin第45期——ERC20FlashMint.sol

ERC20FlashMint库是ERC20的拓展。本库在ERC20的基础上实现了IERC3156FlashLender接口,在token层面上支持了闪电贷功能。但是该库默认没有闪电贷手续费,开发者可以通过重写flashFee()方法来自定义手续费计算逻辑。

  • Michael.W
  • 发布于 2023-12-26
  • 阅读 ( 1616 )
  • ( 69 )

Michael.W基于Foundry精读Openzeppelin第44期——ERC20Pausable.sol

ERC20Pausable库是ERC20的拓展。该库提供了可暂停的transfer、mint及burn功能。需要注意的是:ERC20Pausable库并没有提供切换暂停状态的函数,需要开发人员自行开发——同时需要注意切换暂停状态的权限问题。

  • Michael.W
  • 发布于 2023-12-22
  • 阅读 ( 1299 )
  • ( 17 )

Michael.W基于Foundry精读Openzeppelin第43期——Pausable.sol

Pausable库实现了功能函数紧急关停机制,可以继承该合约并使管理员账户来调控合约的开关。合约内有两个修饰器whenNotPausedwhenPaused,可以根据业务需求将其修饰在对应的函数上来进行开放或关停状态下的访问限制。

  • Michael.W
  • 发布于 2023-12-19
  • 阅读 ( 1119 )
  • ( 13 )

Michael.W基于Foundry精读Openzeppelin第42期——draft-ERC20Permit.sol

ERC20Permit库是ERC20的拓展。本库通过permit方法允许调用者携带owner的链下签名来进行token的授权。这样,ERC20 token的owner不再需要自己调用approve方法进行授权,进而实现了owner的EOA账户无eth也可完成授权操作。

Solidity 面试问题汇总

Solidity 面试问题汇总

Michael.W基于Foundry精读Openzeppelin第41期——ERC20Capped.sol

ERC20Capped库是ERC20的拓展。该库设置了ERC20发行量的上限。

Michael.W基于Foundry精读Openzeppelin第40期——ERC20Burnable.sol

ERC20Burnable库是ERC20的拓展。该库允许用户销毁自己和给自己授权的人名下的token。

Michael.W基于Foundry精读Openzeppelin第39期——ERC20.sol

Openzeppelin中的ERC20库只提供了mint接口,而具体的发行逻辑需要开发者在其子合约中使用_mint()自行编写。该库同样遵循了OpenZeppelin的合约设计思路:当函数因产生错误返回false时,直接revert掉。这种设计思路与ERC20的期望标准并不冲突。

  • Michael.W
  • 发布于 2023-12-04
  • 阅读 ( 864 )
  • ( 11 )

Solidity Gas优化:高效的智能合约策略

文章从比较全面介绍各种优化gas 的方法,如何优化存储、利用退款、数据类型和打包、使用事件、设计函数等。

Solidity 0.8.23 发布

Solidity宣布发布Solidity编译器v0.8.23

  • dwong
  • 发布于 2023-11-24
  • 阅读 ( 788 )
  • ( 58 )

Michael.W基于Foundry精读Openzeppelin第38期——AccessControlEnumerable.sol

AccessControlEnumerable库用于管理函数的调用权限,是AccessControl库的拓展版。与AccessControl库相比,AccessControlEnumerable支持在编成员的迭代导出,这大大方便了各个角色权限的统计查询。

Solidity 编译配置详解

同大多数编程语言一样,用Solidity编写的智能合约无法直接在以太坊虚拟机(EVM)上运行,必须先将其编译成字节码。

Solidity开发者应掌握的十个智能合约

Solidity开发者应掌握的十个智能合约: ERC-20 合约,ERC-721 合约,简单拍卖合约,众筹合约,托管合约,多签钱包合约,投票合约,域名注册合约,预测市场合约,游戏合约

OpenZeppelin Contracts 5.0 版本发布

OpenZeppelin Contracts 5.0 版本:更好的 Gas 效率,更优的代码结构。