![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
区块链-智能合约
Solidity、智能合约安全、智能合约审计
深漂小码哥
芝兰生于深林,不以无人而不芳;君子修道立德,不为穷困而改节!
展开
-
【EIP】ERC1822-通用可升级代理标准UUPS
可代理合约中的兼容性检查是一种安全机制,用于防止升级到未实现通用可升级代理标准的逻辑合约。值得注意的是,支持多个构造函数的附加功能不会妨碍代理合约字节码的验证,因为可以首先使用代理合约 ABI,然后使用逻辑合约 ABI 来解码初始化 tx 调用数据(输入)。此外,代理合约构造函数的任意性提供了从逻辑合约源代码中可用的一个或多个构造函数中进行选择的能力(例如,,,这消除了代理合约和逻辑合约中变量之间发生冲突的可能性,从而提供了与任何逻辑合约的“通用”兼容性。代理合约包含在逻辑合约中,提供执行升级所需的功能。原创 2024-05-29 22:17:36 · 900 阅读 · 0 评论 -
【EIP】ERC1967- 代理存储槽标准
为了避免代理和逻辑合约在存储使用方面发生冲突,逻辑合约的地址通常保存在特定的存储槽中,保证永远不会被编译器分配。选择这些变量的方式可以保证它们不会与编译器分配的状态变量发生冲突,因为它们依赖于不以存储索引开头的字符串的哈希值。这可能会导致意外错误,甚至漏洞,因为代理会拦截调用并使用自己的值进行应答,因此对代理合约的调用会返回与预期不同的值。代理合约中的任何函数,只要其选择器与实现合约中的选择器匹配,就会被直接调用,完全跳过实现代码。代理存储其委托的逻辑合约的地址以及其他代理特定信息的一致位置。原创 2024-05-29 21:11:38 · 988 阅读 · 0 评论 -
可升级的智能合约
智能合约“不可变”或“无法更改”的说法是许多基于区块链的智能合约平台(例如以太坊)的普遍特征。因此,代理被认为是最不透明的升级方法,因为它可能会向用户隐藏底层逻辑的变化。尽管如此,我们可以在不更改其原始代码的情况下对已部署的智能合约做更多的事情。可升级的智能合约在某些情况下可能很有用,但它们是否是一种好的做法取决于独特的用例、透明度和安全性级别以及所涉及的权衡。此外,代理合约是最难审计的,因为它们会引入新的漏洞。可升级的合约允许开发人员修复错误、添加新功能或改进已部署的合约,而不会中断用户或需要数据迁移。原创 2024-05-27 21:07:26 · 1126 阅读 · 2 评论 -
【truffle】快速入门
部署脚本migrations/1_deploy_contracts.js。测试脚本solidity-TestMetaCoin.sol。修改配置truffle-config.js。测试脚本js类型-metacoin.js。编译完后会多一个build目录。下载ganache,原创 2024-05-26 14:54:28 · 384 阅读 · 0 评论 -
【solidity基础】库library
solidity库用library声明。原创 2024-05-15 19:43:42 · 282 阅读 · 0 评论 -
【foundry】铸造NFT并发布到Opensea
【代码】【foundry】铸造NFT。原创 2024-05-20 19:28:15 · 348 阅读 · 0 评论 -
【foundry】模糊测试
模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。原创 2024-05-19 21:31:36 · 143 阅读 · 0 评论 -
【foundry】安装依赖 以openzeppelin为例
forge-remove - 删除一个或多个依赖项。使用forge install 依赖名。在foundry.toml文件中。使用import 引入。原创 2024-05-19 18:05:32 · 261 阅读 · 0 评论 -
【foundry】快速入门
rpc--url 和private-key请参考如下文章中【复制Transaction hash到。验证安装成功命令(查看版本号)验证安装(查看命令)原创 2024-05-19 17:21:19 · 309 阅读 · 0 评论 -
【EIP】ERC-4626 代币化资金库标准
它为表示单个底层 ERC-20 代币的份额的代币化收益资金库提供标准应用程序接口。ERC-4626 还概述了使用 ERC-20 的代币化资金库的可选扩展,提供存款、提取代币和读取余额的基本功能。借贷市场、聚合器和本质上计息的代币可以帮助用户通过执行不同的策略来找到他们的加密代币的最佳收益。这些策略的完成方式略有不同,这可能容易出错或浪费开发资源。收益资金库的 ERC-4626 标准通过创建更加一致和健壮的实现模式,无需开发者提供专门的工作,就能减少集成工作量并解锁在各种应用程序中获取收益的途径。原创 2024-05-18 18:17:22 · 145 阅读 · 0 评论 -
【EIP】ERC-1155 多代币标准
ERC1155用于多种代币管理的合约标准接口。单个部署的合约可以包括同质化代币、非同质化代币或其他配置(如半同质化代币)的任何组合。这样一来,ERC-1155 代币就具有与 ERC-20和erc-721代币相同的功能,甚至可以同时使用这两者的功能。它改进了 ERC-20 和 ERC-721 标准的功能,提升了效率并纠正了实现中的明显错误。原创 2024-05-17 18:34:34 · 226 阅读 · 0 评论 -
【EIP】ERC-721 非同质化代币NFT标准
ERC-721 为 非同质化代币NFT ( Non Fungible Token)引入了一个标准,换言之,这种类型的代币是独一无二的,并且可能与来自同一智能合约的另一代币有不同的价值。所有 NFTs 都有一个uint256变量,名为tokenId,所以对于任何 ERC-721 合约,这对值必须是全局唯一的。原创 2024-05-17 16:28:30 · 152 阅读 · 0 评论 -
【EIP】ERC-20 同质化代币标准
ERC20标准允许在智能合约中实施代币的标准 API。该标准提供了转移代币的基本功能,并允许代币获得批准,以便其他链上第三方可以使用它们。原创 2024-05-17 10:05:35 · 230 阅读 · 0 评论 -
【hardhat】快速入门
SEPOLIA_API_URL和PRIVATE_KEY, 看后面的附加说明。chrome浏览器安装metamask扩展,然后复制出。私钥,即PRIVATE_KEY的值。初始化package.json。hardhat项目初始化。部署hardhat网络。原创 2024-05-16 17:33:30 · 463 阅读 · 0 评论 -
【solidity基础】call 和delegatecall
call是与其他合约交互的底层函数。如果只是通过调用回退函数发送以太币,建议使用这种方法。但这并不是调用现有函数的推荐方法。原创 2024-05-15 18:08:27 · 165 阅读 · 0 评论 -
【solidity基础】fallback和receive
当通过传输或发送调用时,fallback 的气量限制为 2300。fallback() 必须声明为external。receive是fallback的一种变体,在 msg.data 为空时触发。发送数据和不发送数据,调用的都是fallback。发送数据 ,调用的是fallback。不发送数据, 调用的是receive。原创 2024-05-15 16:21:22 · 294 阅读 · 0 评论 -
【solidity基础】ABI 常用函数
【代码】【solidity基础】ABI编码。原创 2024-05-15 09:49:06 · 204 阅读 · 0 评论 -
【solidity基础】错误和异常处理
solidity可以通过调用 require、revert 或 assert 来抛出错误, 使用try...catch来捕获异常。原创 2024-05-14 22:12:52 · 203 阅读 · 0 评论 -
【solidity基础】多合约-继承、引入
solidity合约继承通过is关键字声明。原创 2024-05-14 21:54:41 · 88 阅读 · 0 评论 -
【solidity基础】接口
solidity接口通过关键字interface声明。原创 2024-05-14 21:05:42 · 582 阅读 · 0 评论 -
【solidity基础】事件
【代码】【solidity基础】事件。原创 2024-05-14 20:38:28 · 102 阅读 · 0 评论 -
【solidity基础】结构体
结构体使用struct关键字声明。原创 2024-05-14 10:24:31 · 180 阅读 · 0 评论 -
【solidity基础】函数
构造函数用来初始化变量。原创 2024-05-14 07:51:11 · 346 阅读 · 0 评论 -
【solidity基础】数组
在Solidity中,数组的遍历没有提供直接访问元素的方法,因此我们需要手动遍历数组并将元素复制到新的数组中。这是因为Solidity中的数组是存储在内存中,而不是像其他编程语言中那样在堆上。原创 2024-05-13 22:58:07 · 235 阅读 · 0 评论 -
【solidity基础】映射
使用语法 mapping(keyType => valueType) 创建映射。原创 2024-05-13 08:55:36 · 164 阅读 · 0 评论 -
【solidity基础】循环语句
solidity循环语句有for、while、do...while。原创 2024-05-13 08:24:26 · 284 阅读 · 0 评论 -
【solidity基础】条件语句
solidity条件语句使用关键字if...else...原创 2024-05-12 21:26:51 · 110 阅读 · 0 评论 -
【solidity基础】常量
solidity使用constant关键字声明常量。原创 2024-05-12 21:13:33 · 365 阅读 · 0 评论 -
【solidity基础】变量、变量类型及可见性
【代码】【solidity基础】变量。原创 2024-05-12 20:40:24 · 232 阅读 · 1 评论 -
【solidity基础】常用基本数据类型
以上是Solidity中的一些基本数据类型。除了这些基本类型,Solidity还支持结构体(struct)、数组(array)、映射(mapping)等复杂数据类型。原创 2024-05-12 11:21:09 · 487 阅读 · 0 评论 -
【solidity基础】快速入门
指定solidity编译版本。第一行, 表示开源协议。原创 2024-05-12 10:30:54 · 75 阅读 · 0 评论