自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

庭前云落的博客

用代码创建自己的世界

  • 博客(311)
  • 收藏
  • 关注

原创 Compound 6| Compound V2 和 V3 的对比讲解

灵活性v2:高,支持跨资产组合和复杂策略。v3:中,进支持单一基本资产借贷,策略简单。安全性v2:中,市场风险相关性较高,清算链式反应风险。v3:高,风险隔离机制减少跨市场风险传导。用户门槛v2:高,需要较多 DeFi 知识。v3:低,适合新用户和传统金融用户。资本效率v2:中、独立市场流动性受限。v3:高,单池模型优化了资本利用率。Compound V2 更加适合高级用户和复杂策略,而Compound V3 专注于降低风险、提升效率,是面向更广泛用户的一次优化升级。

2026-03-14 16:23:44 307

原创 Compound 5| Compound的技术架构

模块化设计确保安全性、灵活性和高效性cToken用户资产管理市场控制和风险管理清算机制保护协议免受风险上述代码展示了 Compound 核心功能的实现逻辑,为进⼀步学习完整代码提供了参考。

2026-03-14 16:08:03 49

原创 Compound 4| 使用Compound进行借贷

2026-03-14 15:32:38 18

原创 Compound 3| COMP的作用和价值

COMP是Compound协议的治理代币,赋予持有者参与去中心化决策和激励机制的权利。其价值来源于治理权的稀缺性、协议增长关联性及市场流通性。COMP采用每日分发机制(约2880枚),根据市场使用量比例分配给用户,旨在激励协议使用、推动去中心化并吸引新用户。治理方面,持有COMP可投票决定协议参数调整等关键事项,但面临治理参与度不足、权力集中化等挑战。提案062案例展示了如何通过调整COMP分发比例优化资金效率,体现了去中心化治理的透明性和灵活性。总体而言,COMP机制在促进协议发展同时,仍需解决激励可持续

2026-03-14 15:24:26 366

原创 Compound 2| Compound的基本运行机制

Compound是一种去中心化借贷协议,通过智能合约实现资产借贷和利息生成。核心功能包括:用户可存入资产获取cToken并赚取利息,或抵押资产借出其他资产;利率根据供需动态调整;当抵押品价值不足时会触发清算机制。协议采用COMP治理代币,持有者可参与提案投票。主要特点是透明性(链上执行)、灵活性(多资产支持)和自动化(智能合约管理利率和利息)。典型操作示例展示了存款者赚取利息和借款者面临清算风险的过程。

2026-03-14 09:47:48 25

原创 Compound 1| DeFi

允许用户跟随专业策略或创建自己的投资组合。DeFi 是金融科技和区块链技术结合的产物,它通过去中心化和开放的方式重新定义了金融服务。

2026-03-13 20:45:54 391

原创 NFTMarket 1 | NFT 简介、业务、技术方案

本文介绍了一个基于区块链的NFT市场设计方案。该系统通过智能合约实现NFT的发行、交易和管理功能,包括:1)用户可上传数字作品生成NFT并支付上架费;2)提供NFT展示功能,支持浏览所有上架作品和个人藏品;3)实现NFT购买交易,自动完成资金分配;4)支持NFT下架和销毁功能。技术方案采用Solidity开发ERC721标准合约,结合IPFS存储NFT数据,使用ethers.js进行前端交互,并通过Hardhat进行部署和测试。系统包含核心功能如创建NFT、查询展示、交易执行等智能合约方法,构建了一个完整的

2026-03-11 18:20:41 262

原创 自动做市商算法 CSAMM(Curve-Shaped Automated Market Maker)

本文介绍了自动做市商(AMM)算法的核心概念及其发展历程。重点解析了曲线形自动做市商(CSAMM)的分类,包括恒定乘积AMM(如Uniswap V2)、恒定和AMM以及混合曲线AMM(如Curve Finance)。文章深入探讨了CSAMM的设计变量和曲率选择,并指出理解CSAMM对把握DeFi演进逻辑的重要性。最后提供了一个简化版集中流动性做市商智能合约的实现代码示例,展示了Uniswap V3的核心数学逻辑。全文约150字。

2026-03-11 14:15:28 222

原创 Uniswap金库合约

本文介绍了智能合约中的金库(Vault)机制及其潜在的安全风险。金库合约允许用户存入代币并获得相应股份,股份代表对金库资产的所有权。文章详细推导了存入和提取资产时的股份计算公式,并提供了Solidity实现代码。重点分析了通货膨胀攻击(Inflation Attack)的原理:攻击者通过小额存款后大量"捐赠"资产来操纵汇率,导致其他用户存款价值被转移。最后提出了四种防范措施:设置最小股份、独立余额记录、合约优先存款和精度偏移。这些机制能有效保护金库合约免受恶意操纵。

2026-03-11 13:47:11 252

原创 从零开始的OpenZeppelin学习 2| ERC20-permit、erc20pausable

ERC20标准扩展功能解析 本文介绍了两种重要的ERC20代币标准扩展功能:ERC20-permit和ERC20Pausable。ERC20-permit(EIP-2612)通过链下签名机制优化了代币授权流程,用户无需发送approve交易即可授权他人使用代币,显著提升了DeFi场景下的用户体验和Gas效率。ERC20Pausable则为代币合约增加了紧急暂停功能,允许合约拥有者在安全漏洞或合规需求时暂停所有转账操作,但需注意其中心化风险。这两种扩展分别从功能优化和安全防护角度完善了ERC20标准,已被主流

2026-03-11 10:50:16 916

原创 从零开始的OpenZeppelin学习 1| 安装、使用

摘要: ERC20-permit 和 ERC20Pausable 是 ERC20 代币标准的两个重要扩展。 ERC20-permit(EIP-2612) 允许用户通过链下签名授权他人使用代币,无需发送 approve 交易,提升 Gas 效率和用户体验,适用于 DeFi 等场景。它通过 permit 函数验证签名,支持单笔交易完成授权与转账,并防止重放攻击。 ERC20Pausable 提供紧急暂停功能,合约拥有者可临时冻结代币转移,用于安全应急、合规或升级。需注意中心化风险,建议采用多签或时间锁管理权限。

2026-03-11 10:44:19 182

原创 从零开始的Hardhat学习 2| 小狐狸钱包

本文介绍了如何使用MetaMask(小狐狸钱包)连接以太坊本地测试网络进行DApp开发。主要内容包括:1. 安装MetaMask插件并添加本地网络配置;2. 导入测试账户;3. 通过ethers.js库实现前端与智能合约的交互,包括账户连接、合约调用等功能;4. 配置webpack开发环境,设置合约地址等环境变量。文章提供了详细的代码示例和操作截图,帮助开发者快速搭建以太坊DApp开发环境。

2026-03-10 20:17:10 252

原创 从零开始的Hardhat学习 1| Hardhat 的基本使用、部署智能合约

本文介绍了以太坊开发工具Hardhat的基本使用方法,包括环境安装、项目初始化、智能合约编译与测试。通过创建HelloWorld合约示例,展示了Solidity合约编写、TypeScript测试脚本配置以及本地网络部署流程。文章详细说明了从npm初始化项目、安装依赖到运行测试和部署合约的完整步骤,并配有命令行操作截图,帮助开发者快速上手Hardhat进行智能合约开发。

2026-03-10 13:18:34 212

原创 Solidity ERC标准和代理升级【了解】2| 错误的写可升级代理方式 - 透明可升级代理(Transparent Proxy)

透明代理是一种将合约逻辑与存储分离的 Solidity 代理模式,支持逻辑合约升级。其核心是通过代理合约转发调用到逻辑合约,同时由管理员管理升级。常见错误包括:直接定义状态变量导致存储冲突、fallback未区分管理员、管理函数与逻辑合约函数冲突、初始化问题等。正确实现需使用EIP-1967标准存储槽、严格权限控制及兼容的存储布局。透明代理虽简单高效,但需注意Gas开销和管理灵活性限制。建议使用经审计的标准库,并严格检查存储、权限和初始化等关键点。

2026-03-09 16:18:01 141

原创 Solidity ERC标准和代理升级【了解】1| 三种编码调用数据的方式 (3 Ways to Encode Call Data)

摘要:Solidity 提供了多种编码调用数据的方式:abi.encodeWithSignature(简洁但易错)、abi.encodeWithSelector(较安全)、手动拼接(底层控制)和推荐的abi.encodeCall(类型安全)。选择取决于项目需求,新项目建议使用abi.encodeCall,旧版本可用encodeWithSelector。所有方式都需检查返回值并注意安全防护,如重入保护和足够Gas设置。

2026-03-09 15:17:23 90

原创 Solidity 合约高级应用 9| 组装中的最显著的位、输入和输出与回退

本文介绍了Solidity汇编中高效实现最高有效位(MSB)的方法,重点分析了基于二分搜索的汇编实现方案,相比逐位扫描可减少迭代次数至最多8次。同时阐述了Solidity函数的输入输出机制,包括参数传递方式和返回值处理,并详细说明回退函数(fallback/receive)的作用原理与调用顺序。文章通过代码示例展示了如何在汇编层面优化关键操作,兼顾性能与可读性,为开发者提供底层实现的参考方案。

2026-03-09 15:03:43 147

原创 Solidity 合约高级应用 8| 简单字节码合约 (Simple Bytecode Contract)

本文介绍了Solidity合约编译为EVM字节码的基本原理,重点解析了创建时字节码和运行时字节码的差异。通过实例展示了如何编写极简字节码合约(如仅返回固定值42的合约),包括使用内联汇编和Yul语言实现。文章还提供了直接部署原始字节码的方法,并探讨了简单字节码合约的应用场景(如降低Gas成本、教学用途)及潜在风险。最后提及EIP-1167最小代理合约作为实用案例,强调理解字节码对优化合约和深入掌握EVM执行模型的重要性。

2026-03-09 14:36:30 358

原创 Solidity 合约高级应用 7| 未检查的数学 (Unchecked Math)

Solidity 0.8+ 默认会对算术运算进行溢出检查,防止意外包装行为。unchecked块用于在特定代码区域禁用这些检查,主要用于优化循环计数器、已知范围的累加或需要模2^256运算的算法,可显著节省Gas。但使用时必须确保不会引发安全漏洞,建议通过require等条件预先检查。虽然能提高性能,但应谨慎权衡安全性与效率,在普通业务逻辑中保持默认检查,仅在关键性能点考虑优化。

2026-03-09 14:33:09 300

原创 Solidity 合约高级应用 6| 离散质押奖励 (Discrete Staking Rewards)

本文介绍了三种离散质押奖励模型在DeFi中的实现方式:1)固定周期快照分配,通过定期注入奖励并按用户余额比例分配;2)基于区块的奖励,将时间单位从秒改为区块,本质仍为连续模型;3)事件驱动结算,仅在用户操作时计算奖励。重点分析了固定周期模型的优缺点,并提供了简化版Solidity代码示例,展示了周期设定、质押提取和奖励领取功能。文章指出离散模型相比连续模型更直观且节省Gas,但需要管理员定期操作或自动化工具配合。

2026-03-09 13:02:29 855

原创 Solidity 合约高级应用 5| 使用键值输入调用函数、质押收益

Solidity支持键值对方式调用函数,增强代码可读性,适用于内部和外部合约调用。DeFi质押奖励合约(如StakingRewards)通过质押代币获取奖励代币,采用积分累积法计算奖励,避免遍历所有用户。核心流程包括质押、提取、领取奖励等操作,通过维护全局变量rewardPerTokenStored实现高效奖励分配。

2026-03-09 11:27:30 633

原创 Solidity 合约高级应用 4| 位运算符 (Bitwise Operators)

Solidity中的位运算符直接操作整数的二进制位,主要用于高效处理标志位、权限控制、数据压缩和底层算法优化。支持的运算符包括按位与(&)、或(|)、异或(^)、取反(~)、左移(<<)和右移(>>)。这些操作比算术运算更节省Gas,适合权限管理、数据打包存储和数学优化等场景。使用时需注意运算符优先级、移位位数限制、有符号数的特殊处理以及潜在的溢出风险。合理运用位运算可以显著提升合约性能并降低存储成本。

2026-03-09 11:06:08 350

原创 Solidity 合约高级应用 3| 包装以太币 (WETH)

WETH(Wrapped Ether)是以太坊上1:1锚定ETH的ERC20代币,解决了原生ETH不兼容ERC20标准的问题。它通过智能合约实现ETH与WETH的双向兑换,使ETH能像普通代币一样参与DeFi应用、交易所等场景。WETH9是主流实现,支持存款和取款功能。其核心价值在于标准化ETH的交互方式,简化协议设计,提升互操作性。虽然包装/解包需要Gas费,但WETH已成为以太坊生态不可或缺的基础设施,连接着原生资产与ERC20代币世界。

2026-03-09 11:05:56 333

原创 Solidity 合约高级应用 2| 时间锁 (Time Lock)

时间锁(Time Lock)是一种智能合约安全机制,通过预设延迟执行时间增强系统安全性。其核心功能包括:1)提交交易并设置未来执行时间;2)强制等待期,防止即时恶意操作;3)到期后可执行交易;4)等待期内可取消交易。这种设计为DAO治理、合约升级等场景提供反应窗口,确保关键操作透明可审查。典型实现包含交易队列管理、延迟验证和执行控制,常配合多签钱包使用,大幅提升去中心化系统的抗攻击能力。

2026-03-08 21:29:53 32

原创 Solidity 合约高级应用 1| 燃气高尔夫 (Gas Golf)

摘要: Gas Golf 指在 Solidity 智能合约开发中通过优化技巧减少 Gas 消耗,类似高尔夫追求最少杆数。其核心原则包括最小化存储操作、选择合适变量类型、合并读写、避免冗余计算等。常见优化手段有:使用 calldata 替代 memory、循环变量缓存、表达式短路、存储布局打包(如 uint256 位操作)、优先 immutable/constant 常量,以及利用事件替代链上存储。高级技巧涉及内联汇编、批量操作和 create2 预计算地址,但需平衡安全性与可读性。优化目标为降低用户成本、避

2026-03-08 21:07:03 169

原创 Solidity 高级主题和优化 4| ABI 解码 (ABI Decode)

Solidity中的ABI解码(ABI Decode)是将以太坊ABI编码的二进制数据还原为原始类型的关键操作。通过内置的abi.decode函数,开发者可以处理call返回值(需先检查success状态)、解析事件日志数据、读取msg.data等场景。该函数支持基本类型、动态数组、嵌套结构体等多种数据类型解码,但使用时需注意:1)数据完整性检查;2)异常处理(解码失败会revert);3)动态类型长度限制(防止gas耗尽);4)结构体成员顺序一致性。ABI解码是与外部合约交互、处理复杂数据的必备技能,理解

2026-03-08 18:14:21 130

原创 Solidity 高级主题和优化 3| 多次调用 (Multi Call)、多次委托调用(Multi Delegatecall)

MultiCall和Multi Delegatecall是两种智能合约设计模式,用于优化交易执行效率。MultiCall通过单笔交易执行多个独立函数调用,减少网络往返、节省Gas并确保原子性,适用于批量查询或操作。MakerDAO的实现是典型代表。Multi Delegatecall则通过delegatecall在调用合约上下文中连续执行多个逻辑合约函数,适用于模块化升级和复杂业务逻辑。两者都能减少交易次数,但需注意Gas限制和重入风险。开发者可根据需求选择现成实现或定制方案。

2026-03-08 18:01:31 149

原创 Solidity 高级主题和优化 2| Create2

CREATE2是以太坊EVM的操作码,用于确定性合约部署。其地址由部署者地址、盐值和初始化代码哈希共同决定(公式:keccak256(0xff++deployer++salt++keccak256(initCode)))。Solidity支持通过new+salt语法或内联汇编使用CREATE2,且可预计算地址(需确保initCode完全一致)。OpenZeppelin提供工具简化计算,但需注意盐值唯一性和地址冲突问题。该特性适用于工厂模式、合约升级等场景。

2026-03-08 14:31:51 315

原创 Solidity 高级主题和优化 1| 众筹(Crowdfunding)

Solidity众筹智能合约实现指南:该合约支持创建捐赠型、奖励型或股权型众筹项目,包含创建项目、贡献资金、提取资金和退款等核心功能。通过结构体存储项目信息(发起人、目标金额、截止时间等),使用映射记录贡献者金额。关键函数实现包括创建项目时设置参数、贡献时更新金额、达标后发起人提款以及失败后退款。安全措施涵盖重入攻击防护、权限控制和时间戳依赖处理。合约采用拉取模式处理退款以避免Gas问题,并提供完整事件日志。适用于以太坊区块链上的去中心化众筹场景。

2026-03-08 14:16:01 275

原创 Solidity 代币和金融工具 5| 英式拍卖 (English Auction)

摘要: 英式拍卖是最常见的拍卖形式,竞拍者轮流出价,价高者得。区块链上的英式拍卖需解决出价管理、资金安全等问题。智能合约需记录最高出价者、最小加价幅度等参数,并通过bid函数处理出价,确保金额严格递增。被超越的出价者可提取退款,拍卖结束后NFT转移给最高出价者。合约需防范重入攻击,采用拉取模式退款,并注意时间操纵风险。示例合约展示了ERC721代币的拍卖实现,包含起拍价、最小加价和拍卖时长等关键功能。

2026-03-08 14:10:55 337

原创 Solidity 代币和金融工具 4| 荷兰拍卖 (Dutch Auction)

荷兰拍卖是一种价格随时间递减的拍卖机制,常用于NFT或代币销售。其核心特点是价格从最高点线性下降,直至买家接受当前价格成交。智能合约实现需注意:1)准确计算当前价格(基于时间衰减公式);2)安全处理购买交易(防重入攻击);3)设置拍卖终止条件。典型实现包含价格计算函数、购买函数和取消功能,通过先标记状态再转账确保安全性。这种机制能有效避免Gas竞争,适用于公平快速的资产销售场景。

2026-03-08 14:03:40 425

原创 Solidity 代币和金融工具 3| 函数选择器 (Function Selector)

Solidity函数选择器是4字节的短标识符,通过Keccak-256哈希函数签名前4字节生成,用于在合约调用时识别目标函数。它支持外部调用、代理合约路由等场景,可通过abi.encodeWithSignature或this.f.selector获取。需注意签名格式(无空格)、选择器碰撞风险,以及仅适用于external/public函数。理解选择器机制对编写安全高效的智能合约至关重要。

2026-03-08 13:50:59 394

原创 Solidity 代币和金融工具 2| 多签钱包(Multi Sig Wallet)

多签钱包(Multi-Signature Wallet)是一种需要多个私钥共同授权才能执行交易的智能合约,主要用于提高资金安全性。其核心机制包括:预设所有者地址列表和执行阈值,交易需达到足够确认数才能执行。Solidity实现要点包括:1)数据结构管理交易和确认状态;2)关键功能如提交、确认和执行交易;3)安全注意事项如防范重入攻击和优化Gas消耗。典型实现通过映射记录确认状态,并在执行前验证阈值条件,确保资金操作必须经过多方授权。(149字)

2026-03-08 13:41:54 326

原创 Solidity 代币和金融工具 1| erc20&erc721

摘要:ERC20和ERC721是以太坊上两种主要代币标准,分别用于同质化代币(如货币)和非同质化代币(NFT)。ERC20通过接口规范转账、授权等功能,支持扩展如元数据和销毁机制;ERC721则通过唯一tokenId标识资产,适用于数字收藏品等场景。两者在代币性质、转移方式和授权逻辑上存在显著差异。开发者可通过OpenZeppelin库快速实现ERC20合约,自定义代币供应和功能。理解这些标准对开发区块链应用至关重要。

2026-03-07 22:46:33 518

原创 Solidity 智能合约进阶 3| 安全性和验证 访问控制 (Access Control)

本文详细介绍了Solidity中基于角色的访问控制(RBAC)机制,重点解析了OpenZeppelin的AccessControl实现方案。RBAC通过定义不同角色(如MINTER_ROLE、PAUSER_ROLE)实现精细权限管理,相比Ownable更适用于复杂业务场景。文章涵盖角色定义、权限授予/撤销、角色层级管理等核心功能,并提供了ERC20代币合约的完整示例。特别强调安全注意事项,包括最小权限原则和防止权限自毁等最佳实践。通过AccessControl标准实现,开发者可以构建安全、可扩展的智能合约权

2026-03-07 22:20:17 422

原创 Solidity 智能合约进阶 2| 安全性和验证 验证签名

Solidity签名验证是利用ecrecover函数确认链下消息确实由特定以太坊账户签署的技术,广泛应用于白名单、元交易等场景。签名包含消息、私钥和65字节的签名数据(r,s,v)。验证时需正确处理消息哈希:简单消息需添加EIP-191前缀,结构化数据需遵循EIP-712标准。OpenZeppelin的ECDSA库可简化验证流程并处理安全问题。关键注意事项包括防范重放攻击、检查签名有效性、使用域分隔符等。示例展示了如何实现白名单验证,通过签名确认用户权限。

2026-03-07 17:30:24 369

原创 Solidity 智能合约进阶 1| 安全性和验证 Keccak256 哈希函数 (Keccak256 Hash Function)

Solidity中的keccak256是核心哈希函数,用于计算Keccak-256哈希值(32字节输出)。它是以太坊密码学基础,应用于数据校验、签名验证等场景。输入需转换为bytes类型,常用abi.encodePacked(紧密打包但有碰撞风险)或abi.encode(标准编码更安全)。主要用途包括生成唯一ID、密码学验证和数据完整性检查。使用时需注意安全事项:避免abi.encodePacked的数据重叠、区分动态/静态类型、不将其作为随机数生成器。相比其他哈希函数,keccak256gas成本最低且内

2026-03-07 15:04:44 411

原创 Solidity 高级合约交互 4| 新建 (New)、库 (Library)

Solidity 合约可以通过 new 关键字实例化其他合约,这会触发一次合约部署操作并调用构造函数。创建时可发送以太币(若构造函数为 payable),返回的合约对象可直接调用其方法。库(Library)是一种无状态、可复用的代码模块,提供 internal(内联)和 public(需部署)函数。通过 using...for 语法可关联到数据类型实现方法式调用。库不能修改状态或接收以太币,但 public 函数可通过 DELEGATECALL 访问调用合约的存储。与普通合约相比,库更轻量且专注代码复用,常

2026-03-07 13:57:39 384

原创 Solidity 高级合约交互 3| 委托调用 (Delegatecall)

允许合约在自身上下文中执行外部代码,是实现可升级合约和库的核心工具。使用时必须严格管理存储布局,并理解msg.sender和msg.value的特殊性。大多数开发者应优先使用经过审计的代理库(如 OpenZeppelin 的Proxy系列),而不是手动实现,以避免细微的安全漏洞。

2026-03-07 13:11:04 54

原创 Solidity 高级合约交互 2| 调用 (Call)

摘要:Solidity中的call是用于合约间交互的低级函数,支持发送以太币和调用目标函数。其基本语法包含返回值(成功状态和返回数据)和可选参数(value和gas)。典型用法包括发送以太币、调用已知函数和处理返回值。call具有灵活性高但不检查函数存在性的特点,存在重入攻击风险,需手动检查返回值。推荐使用接口或delegatecall作为更安全的替代方案。注意事项包括限制gas、检查余额和使用安全辅助函数。call功能强大但需谨慎使用,常规场景建议采用高级调用方式。(149字)

2026-03-06 22:01:29 207

原创 Solidity 高级合约交互 1| 接口 (Interface)

Solidity接口(Interface)是定义合约交互标准的抽象类型,允许描述函数签名而无需实现。接口通过解耦、类型安全、代码复用和可升级性等优势,促进合约间高效交互。定义时使用interface关键字,仅包含external函数声明、事件和错误,不能包含状态变量或构造函数。与抽象合约不同,接口更轻量且限制更多。通过将合约地址转换为接口类型,可实现安全调用。接口支持继承,常用于ERC标准实现。掌握接口对构建可组合、可升级的智能合约至关重要。

2026-03-06 21:10:19 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除