## 分析 大家都知道,ERC777向后兼容ERC20,ERC20的接口方法在ERC777中同样适用. 所以在Openzeppelin的众筹合约中,通过`buyTokens()`逻辑进行购买代币的操作,`buyTokens()`方法又会触发一个`_deliverTokens()`的内部方法进行转账.来看一下代码: ```...
# UniswapV1 自学系列 01:Exchange 合约实现 本系列文章将通过从零开始构建 UniswapV1,深入理解去中心化交易所的核心原理和实现机制。 ## 项目初始化 ### 创建项目结构 首先创建项目目录并初始化 Foundry 开发环境: ```bash ...
2月18日ChainAegis消息,此前AscendEX交易所的黑客开始洗钱。 ## **1.** **事件背景** 2021年12月12日UTC事件22:00,AscendEX交易所(前身为BitMax交易所)的热钱包遭到黑客攻击,导致该交易所的热钱包流失了价值约7700万美元的加密货币...
文章原标题为 [铭文补完计划](https://mirror.xyz/0x719C8d75FAF8f1b117EA56205414892CAAb4A1b7/ST1DKb68i3P39aQYgbfr-mZTexp9VETOfvqSneU4js4) 和 [英文翻译](https://mirror.xyz/0x719C8d75FAF8f1b117EA56205414892CAAb4A1b7/dI758Q-Cu22loklfSl7TQwlw31EQ33WS2TopEPGvwAg),这里为了更好的理...
### 1. ERC4626简介 > ERC4626 协议是一种用于代币化保险库的标准,它可以优化和统一收益保险库的技术参数。收益保险库是指使用不同策略来为用户提供最佳收益的合约,例如借贷市场、聚合器或本身具有利息的代币。ERC4626 协议...
 以太坊上新应用的到来,促使开发团队设计了新的代币标准。在早期,ERC-20代币标准(它定义了DAI或UNI等传统代币的功能)主导了...
*这几天学习了 绕过合约检查攻击 并深入理解了delegatecall* ## 绕过合约检查攻击(Bypassing Contract Check Attack) ``` 原理: 一些合约会在函数里面检查msg.sender是否为一个合约地址,通过extcodesize > 0,如果大于0,则为一个合约地...
## withdraw 在 Aave V2 协议中,用户的取款操作通过 **LendingPool** 的 `withdraw` 方法实现。`withdraw` 方法允许用户从协议中取出他们之前存入的资产,并销毁相应的 `aToken`。取款操作可以取出存款及其产生的利息。 ### `withdraw` 方法...
--- title: safeTranferLib time: 2024/05/29 tags: null --- 众所周知,usdt的合约并没有遵循标准的ERC20来实现,主要在于它的transfer函数没有bool的返回值,这可能导致调用它的合约因为无法接收返回值而出现函数失败(因为是call,所以往...
# UniswapV2 深入解析系列 16:LP 授权机制与 permit 运用 本篇聚焦移除流动性流程中的授权细节,解释为何 Router 需要代用户持有 LP 代币并执行 `_safeTransferFrom`,以及在生产环境下如何通过 `approve` 与 `permit`(EIP-2612)降低交互成本...
我们都说Layer2解决了Layer1的扩容问题。从非常直观的理解上,我们很自然的认为就是以后在部署的智能合约的TPS提高了。但是这个TPS的提高需要用户执行哪些新增的步骤才能真正使用到layer2所带来的好处呐? 我们以最主流的Ro...
*最近学习了合约中整型的溢出攻击和签名重放攻击* ## 整型溢出攻击(Integer Overflow) ``` 原理: Solidity中uint8,取值范围为0-255,一个数字num = 10,将num = num - 20,那么num = 245,同样上溢也如此。 ``` ``` contract A{ uint8 publi...
By:九九@慢雾安全团队 2022 年 03 月 27 日,据慢雾区消息,Revest Finance 的 Revest 合约遭到黑客攻击,黑客盗取了近 770 万枚 ECO、579 枚 LYXe、近 7.15 亿枚 BLOCKS 以及超 35 万枚 RENA。慢雾安全团队第一时间介入分析,并将结果分享如...
还记得我们之前那个不好的 ERC20 代币的例子吗? 再看一下 ```solidity contract ERC20Token { mapping(address => uint256) public balances; function setSomeonesBalance( address owner, uint256 amount ) public { balan...