Michael.W基于Foundry精读Openzeppelin第37期——AccessControl.sol

AccessControl库用于管理函数的调用权限,所有继承了AccessControl的子合约均可为自己的业务函数设置调用权限。AccessControl是一个轻量级的基础库且各个role不支持在编成员的迭代导出,所以授权和撤销role成员的操作会抛出event。

Michael.W基于Foundry精读Openzeppelin第36期——Ownable2Step.sol

Ownable2Step库是Ownable库的拓展版本。其提供的访问权限机制同Ownable完全一致,只是owner的更换机制从由原owner直接指定(一次交互)变成原owner指定 + 新owner确认(两次交互)。Ownable2Step库具有Ownable库所有的功能函数。

用vim写solidity

用vim写solidity

  • 晓道
  • 发布于 2023-09-19
  • 阅读 ( 929 )
  • ( 12 )

Michael.W基于Foundry精读Openzeppelin第35期——Ownable.sol

Ownable库提供了一种基本的访问控制机制——设置一个owner具有对某些函数特殊的访问权限。通常owner就是本合约的deployer。合约部署后可通过函数transferOwnership()进行owner的修改。本库还提供了modifier onlyOwner,用于为函数限定访问权限。

Gas 优化手册

本手册涵盖了合约部署、跨合约调用、设计模式、Calldata优化、汇编技巧、编译器等等各个方面的优化技巧!不管你是新手还是老手,这本手册都能给你带来惊喜和启发!

  • DeCert.me
  • 发布于 2023-09-18
  • 阅读 ( 1096 )
  • ( 33 )

Michael.W基于Foundry精读Openzeppelin第34期——MerkleProof.sol

MerkleProof库提供了用于验证merkle树proof的工具函数。在生成merkle树和对应proof时应当避免使用64字节长度的leaf(进行hash之前)或避免使用非keccak256的哈希函数(进行leaf的hash计算)。这是因为树中经排序的内部节点的拼接可以被重新解释为leaf值。

  • Michael.W
  • 发布于 2023-09-16
  • 阅读 ( 1130 )
  • ( 7 )

推荐一个Solidity 数字格式化库: solpretty

合约里的数值通常非常大, 肉眼阅读非常费劲,solpretty 可以让对数字进行漂亮的格式化。

  • ChainTool
  • 发布于 2023-09-14
  • 阅读 ( 1568 )
  • ( 85 )

Solidity 编译器:内存安全

探索Solidity编译管道、优化假设,以及它们如何与内存安全汇编相关。

  • aisiji
  • 发布于 2023-09-12
  • 阅读 ( 846 )
  • ( 6 )

sol2uml 简介

sol2uml是一款用于Solidity智能合约可视化的工具。支持从命令行界面生成合约存储图和合约类图(UML)等

  • dwong
  • 发布于 2023-09-05
  • 阅读 ( 1244 )
  • ( 29 )

关于 solidity storage layout 的理解

solidity storage layout

Michael.W基于Foundry精读Openzeppelin第33期——EIP712.sol

EIP-712是一个专门用于对结构化数据求hash值以及签名的标准,大大解决了数据“链下签名+链上验证”的问题并提高了链上消息签名的可用性。EIP712合约提供了EIP 712 domain separator的定义与获取——是结构化数据完整编码的一部分。

  • Michael.W
  • 发布于 2023-08-29
  • 阅读 ( 1138 )
  • ( 6 )

Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol

SignatureChecker库是一个用于链上签名验证的helper库。该库提供的验签函数既支持EOA账户地址的签名验证也支持IERC1271标准合约地址的签名验证。

深入了解 Solidity bytes

你是否知道大端小端的概念,其定义了是高位数据先保存还是地位数据先保存,EVM 是用 大端格式存储数据,我们知道 EVM 使用 32 字节的字来处理数据,当数据不足 32 个字节时,如何填充数据呢?bytes 有哪些操作详见本文。

Michael.W基于Foundry精读Openzeppelin第31期——IERC1271.sol

IERC1271是合约地址作为signer的签名验证标准。EOA地址可以通过其私钥对msg进行签名,而合约地址理论上是没有私钥的。当合约地址作为msg.sender时,可以通过IERC1271标准进行相关的签名验证工作。

Michael.W基于Foundry精读Openzeppelin第30期——ECDSA.sol

ECDSA(Elliptic Curve Digital Signature Algorithm)是椭圆曲线数字签名算法的简称。ECDSA库十分重要且使用广泛,其作用是在链上验证某message是否由给定的地址的私钥持有者进行签名的。简而言之,ECDSA库是一个验证地址真实身份的工具库。

Solidity 编码规范推荐标准

Solidity 编码规范推荐标准, 作者列出了 15 条非常使用的规则, 例如:指定固定的编译器版本、导入代码时指定版本, 并使用命名导入,以及变量命名时注意事项。

Solidity学习笔记一:基础语法与remix的使用

越学越迷糊,于是准备再学一遍,进行总结。Solidity学习笔记一:基础语法与remix的使用

  • Yuanwai
  • 发布于 2023-08-21
  • 阅读 ( 1594 )
  • ( 19 )

Chisel : Foundry 提供的 Solidity 交互式命令工具

Chisel是随Foundry提供的高级SolidityREPL(交互式命令工具)。它可用于在本地或Fork网络上快速测试Solidity片段。

  • Tiny熊
  • 发布于 2023-08-19
  • 阅读 ( 1557 )
  • ( 18 )

Ethernaut 题库闯关 - Switch 题解

通过本次闯关,让我们深入理解 calldata 数据编码。

  • honey_liu
  • 发布于 2023-08-18
  • 阅读 ( 1261 )
  • ( 50 )

Michael.W基于Foundry精读Openzeppelin第29期——RefundEscrow.sol

RefundEscrow合约继承了ConditionalEscrow合约,是ConditionalEscrow合约的一种功能拓展。RefundEscrow合约提供了基础的存取eth功能,同时合约owner可以将合约切换到Refunding或Closed状态。