可升级合约是很常见的一种维护合约的方式。方便生产环境中的逻辑升级,以及漏洞的修复。常见的可升级框架有openzeppelin-cli、truffle、hardhat等,但是有些情况会存在误操作或者误删等情况,导致可升级合约的配置文件丢失。本文主要详细讲解在配置文件丢失的情况下,如何重新配置并进行合
TokenTimelock库是是一个锁币合约。它允许指定地址在某一时间点及之后取出全部锁存的代币,实现了一个代币时间锁的功能。
SafeERC20库封装了ERC20的操作,使各操作执行失败时触发revert。因为标准IERC20的转账和授权等需通过一个bool返回值来表示操作是否成功,可能实现合约内部没有设置revert机制。有的ERC20合约的授权或转账的实现并无返回值(以太坊上的USDT合约),此时可通过本库与其交互。
面试题+答案
探究如何将原始字节码转换为可读的 Solidity 代码及其对应的应用程序二进制接口(ABI)
全新的 Vyper 编译器,支持最新版本!; 支持 Circom v2.1.6; 新增 Uniswap v4 模板
将深入研究EVM中的一个关键数据结构,交易收据和其相关的事件日志。
深入探讨可升级合约的架构
ERC20Snapshot库是ERC20的拓展,增加了各账户余额及总流通量的快照机制。如果涉及到根据账户ERC20余额进行分红、投票等业务可以使用该库,其可有效防御在不同地址间转账进行“一币多用”的攻击。在一个快照横截面数据上进行分红、投票甚至是ERC20分叉都是最有效的解决方案。
hardhat vs foundry
Foundry 是 Solidity 智能合约测试的有力工具
ERC20FlashMint库是ERC20的拓展。本库在ERC20的基础上实现了IERC3156FlashLender接口,在token层面上支持了闪电贷功能。但是该库默认没有闪电贷手续费,开发者可以通过重写flashFee()方法来自定义手续费计算逻辑。
flashFee()
ERC20Pausable库是ERC20的拓展。该库提供了可暂停的transfer、mint及burn功能。需要注意的是:ERC20Pausable库并没有提供切换暂停状态的函数,需要开发人员自行开发——同时需要注意切换暂停状态的权限问题。
使用 Echidna 模糊测试(Fuzzing) 提升智能合约安全性
在我们做去中心化应用开发时,其中有两个头疼的问题,一是想要获取去中心化的一些数据,如代币价格等,还有一个就是安全的创建随机数,这篇文章带大家了解一下这两块的实际应用。
Pausable库实现了功能函数紧急关停机制,可以继承该合约并使管理员账户来调控合约的开关。合约内有两个修饰器whenNotPaused和whenPaused,可以根据业务需求将其修饰在对应的函数上来进行开放或关停状态下的访问限制。
whenNotPaused
whenPaused
扫一扫 - 使用登链小程序
42 篇文章,403 学分
75 篇文章,301 学分
30 篇文章,255 学分
11 篇文章,171 学分
158 篇文章,165 学分