TransparentUpgradeableProxy库是一个透明代理合约的实现,其背后的逻辑合约可由admin来升级。一般的代理合约本身需要管理函数,当这些函数同其背后的逻辑合约的函数产生selector冲突时可能会暴露潜在的漏洞。透明代理模式解决了以上问题。
实际项目开发的时候,有的路由场景会比较复杂,比如数据库里的文章有很多,我们不可能一一去定义路由,此时该怎么办?组织代码的时候,有的路由是用于移动端,有的路由是用于PC端,该如何组织代码?
UUPSUpgradeable库是专为UUPS代理设计的一种合约升级机制的实现。当本合约被设置为ERC1967Proxy代理合约背后的逻辑合约后,可以对其进行合约升级操作。作为逻辑合约的父合约,本库的安全机制可保证不会因某次错误的升级而打破合约的可升级性。
上篇我们介绍了如何定义路由,本篇我们讲讲如何在Next.js中实现链接和导航。所谓“导航”,指的是使用JavaScript进行页面切换,通常会比浏览器默认的重新加载更快,因为在导航的时候,只会更新必要的组件,而不会重新加载整个页面。
路由(Router)是Next.js应用的重要组成部分。在Next.js中,路由决定了一个页面如何渲染或者一个请求该如何返回。Next.js有两套路由解决方案,之前的方案称之为“PagesRouter”,目前的方案称之为“AppRouter”,两套方案目前是兼容的。
欢迎学习Next.js!在学习具体的知识点之前,我们先来创建一个Next.js项目。创建了可运行的项目,才能在学习的时候边调试边理解,从而达到事半功倍的效果。
使用Viem.sh读取NFT合约信息
使用Foundry部署和开源合约erc20
使用Foundry为银行合约的 DepositETH 方法编写单元测试
Web3学习之使用Foundry开发部署和开源ERC20合约Foundry是一个用于以太坊应用程序开发的快速、可移植和模块化的工具包,用Rust编写。Foundry由以下部分组成:Forge:以太坊测试框架(类似于Truffle、Hardhat和DappTools)。Cast:与EVM智
Initializable库用于开发可升级合约或代理合约背后的逻辑合约。由于代理合约无法执行constructor函数,通常是将该函数逻辑放到一个external函数中(称为initialize函数)。本库可确保initializer函数全局只能被调用一次。
constructor
ERC1967Proxy库实现了一个基于ERC1967标准的代理合约。通过改变存储于ERC1967标准规定的_IMPLEMENTATION_SLOT号slot中的代理合约地址,代理合约便实现了合约逻辑可升级的功能。
ERC1967Upgrade库实现了基于ERC1967标准(代理合约的slot分布)的slots读写函数,并在对应slot更新时emit出标准中相应的event。对于各种可升级合约和代理合约的实现而言,本库的作用举足轻重。
Clones库是最小代理合约的工厂合约实现,也称之为克隆工厂。ERC1167指定了一种将全部调用都delegatecall到一个已知固定地址的最小字节码实现,它可以以一种不可变且成本极低的方式克隆目标合约。
VestingWallet库可给指定的受益人按时间线性释放锁在合约内的Eth或Erc20 token。任何转移至本合约的token都必须遵循释放模型。开发者可通过重写vestedAmount(uint64)或vestedAmount(address,uint64)来自定义token释放模型。
vestedAmount(uint64)
vestedAmount(address,uint64)
深入探讨了智能合约测试的重要性,重点介绍了使用 Foundry 的实用策略和示例。
Forge是一个以太坊开发框架。您可以使用它来创建Solidity项目,管理依赖关系,运行测试等等。这是一个初学者指南。我将介绍如何创建项目,管理依赖
本文记录一下UUPS代理合约无法在XLayer链上开源验证的问题。
1.已保存的合约现在更名为 2.已钉选合约RemixVM状态可以被保存 3.可以从Blockscout中获取已验证的合约
1.保存已部署的合约 2.Sindri集成 3.Vyper编译器
扫一扫 - 使用登链小程序
59 篇文章,299 学分
35 篇文章,244 学分
108 篇文章,224 学分
21 篇文章,196 学分
9 篇文章,163 学分