Live My Life

淡而无味也是一种味道

Solidity 区块链开发文档集合

收集各种区块链开发工具,安全库,脚手架

开发环境 Hardhat Foundry Truffle GEth ganache ethereum本地开发环境 Remix 依赖插件 Ethers viem 比Ethers效率更高,速度更快的链上调用方式 web3modal前端钱包链接插件 Solidity Solifity官方文档 Ethereum 官方文档 安全开源智能合约库 OpenZeppelin 区块浏览器 Ethere......

Solidity 安全:已知攻击方法和常见防御模式综合列表

Solidity 安全:已知攻击方法和常见防御模式综合列表

Solidity 安全:已知攻击方法和常见防御模式综合列表重入漏洞以太坊智能合约的特点之一是能够调用和利用其他外部合约的代码,合约通常也处理Ether,因此通常会将Ether发送给各种外部用户地址,调用外部合约或将以太坊发送到地址的操作需要合约提交外部调用,这些外部调用可能被攻击者劫持,迫使合约执行进一步的代码(即通过回退函数),包括回调自身,因此代码执行“重新进入”合约,这种攻击被用于臭名......

智能合约中常见的漏洞和优化Gas

如何审查发现智能合约漏洞和优化gas

智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用程序都很重要,但它们对去中心化应用程序 (dApp) 尤其重要,因为它们建立在其之上的区块链是不可变的。如果代码漏洞导致用户资金丢失,这些资金将无法找回。迄今为止,DeFi 中的黑客已......

Uniswap V3 详解(四):Oracle 预言机

...

Uniswap v3 的预言机Uniswap v3版本针对v2版本Oracle的痛点,进行了改进: 合约中默认还是存储一个最近价格的时间积累,但是可以根据需要,扩展最近N个历史价格的时间积累值,最多支持65535个最近历史价格信息,这样第三方开发者不在需要自己实现合约存储历史信息 Oracle中不光记录了价格信息,还记录了对应流动性的时间积累值,因为V3中相同交易对在不同费率时不同的交易池......

Uniswap V3 详解(三):交易过程

...

交易过程V3的UniswapV3Pool 提供了比较底层的交易接口,而在SwapRouter合约中封装了面向用户的交易接口: exacInput :指定交易路径,付出的 x token 数和预期得到的额最小 y token数(x,y可以互换) exactOutPut: 指定交易路径,付出的x token最大数和预期得到的y token数(x,y可以互换) 这里我们讲解exactInput......

Uniswap V3 详解(二):创建交易对/提供流动性

...

前文已经说过Uniswap V3代码结构,一般来说,用户的操作都是从 uniswap-v3-periphery中的合约开始 创建交易对创建交易对的调佣流程如下: 用户首先调用NonfungoblePositionManager 合约的createAndInitializePoolIfNecessary 方法创建交易对,传入的参数为交易对的token0 token1 fee 和初始价格。......

Uniswap V3 详解(一):设计原理

...

前置阅读资料: 官方博客 V3白皮书 设计原理官方的白皮书已经比较详尽的描述了V3的设计原理,这里仅对白皮书中的内容做一些补充,包含本人对其中一些机制的理解和思考。 Uniswap V2版本使用x·y=k 这样一个简洁的公式实现了 AMM Dex ,正是由于简洁易用,使其在短短几年时间迅速成为DeFi领域的龙头项目。 简单来说,官方认为V2的版本最大的痛点是资金利用率(capital E......

How to Gradually Release Tokens

如何逐步释放token

Quick Start | 释放规则 所有STRAC处于锁定状态,不可转账,不可卖出,不可添加流动性。释放 根据持币地址锁定的STRAC数量,每24小时释放万分之六。其中,每小时会进行一次解锁释放,即从地址持有STRAC的一刻开始计算时间,每小时解锁释放的STRAC数量为:该地址锁定STRAC数量*6/10000/24; 用户仅可对地址上已解锁释放出来的STRAC数量进行操作,包括转账、卖......

How to Develop ERC20 Token Faucet

如何开发一个ERC20代币水龙头

Overview | 业务场景:一个项目在测试阶段要经过市场和团队内部的多频次测试,要用到代币,为了不是每次都是转账给一个新的账户 通过实现代币水龙头的功能来快捷的实现领取测试token。 具体判断的代码如下:1234567891011121314151617181920212223242526272829303132333435363738394041424344// SPDX-Licen......

Smart Contract | How to Judge From and to Addresses Are Operations of Adding and Removing Liquidity

智能合约 | 如何判断from和to地址是添加和删除流动性的操作

Overview | 业务场景:最近遇到一个项目,需要发行一个ERC20 Token ,除去普通钱包转账,和Swap添加流动性和 删除流动性之外的transfer都需要收取手续费,这个时候我们需要写一个判断是否为添加流动 性和删除流动性的判断 具体判断的代码如下:12345678910111213141516171819202122232425262728293031323334353637......