智能合约
文章平均质量分 88
专注于solidity智能合约,分析合约源码、原理、实际应用过程。
快活林高老大
从零开始,重新出发!
展开
-
WTF Solidity极简入门: 39链上随机数
本文是按照以下教程编写的,在BNB测试网上运行失败,发现了ChainLink帮助文档中的参数错误,修正后才运行成功。很多以太坊上的应用都需要用到随机数,例如随机抽取、抽盲盒、战斗中随机分胜负等等。这一讲我们将介绍链上(哈希函数)和链下(chainlink预言机)随机数生成的两种方法,并利用它们做一款tokenId随机铸造的NFT。转载 2022-12-06 16:25:17 · 1047 阅读 · 0 评论 -
WTF Solidity极简入门: 37. 数字签名 Signature
这一讲,我们将简单的介绍以太坊中的数字签名ECDSA,以及如何利用它发放NFT白名单。代码中的ECDSA库由OpenZeppelin的同名库简化而成。转载 2022-12-05 15:24:48 · 1552 阅读 · 0 评论 -
Legoot合约研究笔记09--最终的合约设计文档
核心内容是NFT合约从ERC1155改为ERC721,增加合约升级协议UUPS、可拆分组合协议ERC3664。 遇到到问题:主体合约编译后字节码超过24576字节数限制,精简代码函数也无法达到要求。 解决方法:把主体合约拆分成两部分:core平台合约+avatar合约,这样core平台合约只负责组合拆分,降低了代码量。avtar合约作为纯粹的虚拟人合约,不具备拆分组合功能代码,也降低了代码量。 最终结果:在Remix+Ganache环境中,使用代理模式顺利部署,完成avatar发行、组件发行、重原创 2022-10-31 08:54:33 · 314 阅读 · 0 评论 -
智能合约升级原理03---合约升级的注意事项
这不会构成威胁,因为逻辑合约状态的任何变化都不会影响你的(代理)合约实例,因为你的项目中从未使用过逻辑合约的存储。如果对逻辑合约的直接调用触发了自毁操作selfdestruct,那么逻辑合约就会被销毁,你的所有合约实例最终都会将所有的调用委托给一个地址,而不会有任何代码。这会破坏你项目中的所有合约实例。在编写新版本的合约时,无论是由于新功能还是bug修复,都有一个额外的限制需要遵守:你不能改变合约状态变量的声明顺序,也不能改变它们的类型。如果集成合约有任何自己的变量,你也不能在基础合约中添加新的变量。转载 2022-10-24 00:30:06 · 487 阅读 · 0 评论 -
智能合约升级原理02---UUPS升级部署示例
点击Deploy按钮后弹出提示框,含义是部署一个实现合约,连接到一个ERC1967代理合约,并且完成实现合约的初始化。部署成功, 左侧任务栏看到又多出了两个合约地址,一个是新版本的Box合约,一个是原来的ERC1967代理合约,这个代理合约的地址是不会改变的。读取代理合约的retrieve方法,得到的数据是200,表明新的业务合约代码生效,原有数据也被保留下来了。第一个版本的业务合约 Box,内部一个value数据,实现读、取两个方法。我们选择使用第一项,将自动创建代理合约,并使用代理合约部署业务合约。原创 2022-10-24 00:23:41 · 1891 阅读 · 0 评论 -
MM3NFT项目研究笔记
MM3NFT(https://mm3nft.com/)1 项目说明发布玛丽莲.梦露的NFT头像,用户 mint 的时候,会获得一个戴着饰品的头像 A,但是用户可以自行将饰品拆成单独的 NFT,而这些拆分后的饰品 A, 和其他的头像 B 再进行拼装,依然能保持原有的 ID 不变。核心:合约支持组合拆分!!原创 2022-10-17 09:40:51 · 720 阅读 · 0 评论 -
Hardhat工具包3--多条链网络配置、部署
hardhat框架使用与常见编译部署的问题原创 2022-10-02 00:27:21 · 1695 阅读 · 0 评论 -
Hardhat工具包2--可升级合约示例
上一篇文章介绍了Hardhat工具包如何自动化部署合约并发起调用,本章介绍如何对已经部署的合约升级,需要使用 OpenZeppelin的 Upgrades插件。提纲如下:(1)原有合约使用Upgrades工具部署,得到代理合约地址(2)修改合约,生成V2版本(3)部署V2版本合约,而代理合约地址不变。原创 2022-10-02 00:24:44 · 938 阅读 · 0 评论 -
Hardhat工具包1--安装使用
Hardhat是一个方便在以太坊上进行构建的任务运行器。使用它可以帮助开发人员管理和自动化构建智能合约和dApp的过程中固有的重复任务,以及轻松地围绕此工作流程引入更多功能。Hardhat还内置了Hardhat EVM,后者是为开发而设计的本地以太坊网络。 它允许你部署合约,运行测试和调试代码。原创 2022-10-02 00:25:11 · 1597 阅读 · 0 评论 -
智能合约的4种调用方式:call、callcode、delegatecall、staticcall
智能合约的4种调用方式:call、callcode、delegatecall、staticcall原创 2022-10-02 00:04:34 · 3871 阅读 · 0 评论 -
智能合约升级原理01---起源
3年前就学习过一遍智能合约升级架构和原理,当时只初步了解到了思路和delegatecall用法,缺少更多的实践知识。现在重点研究BSN-DDC平台上的数藏合约源码,这次代码研读中又遇到了大量的合约升级代理,下定决心,埋头苦看,终于理顺了升级的原理、来龙去脉、以及如何与ERC721合约相结合的。原创 2022-09-30 10:49:43 · 1262 阅读 · 0 评论 -
EIP-3664合约研究笔记06--text功能分析
在 ERC3664.sol 中,存在着_texts数据,本文分析来龙去脉和用途。原创 2022-09-30 10:29:10 · 237 阅读 · 0 评论 -
EIP-3664合约研究笔记05--扩展属性分析
目前 EIP-3664 已经实现了六种核心属性操作:可升级,可修改,可添加,可移除,可拆分,可组合。原创 2022-09-30 10:28:07 · 713 阅读 · 0 评论 -
EIP-3664合约研究笔记04--Metacore平台功能分析
DRepublic 团队创作的 MetaCore 系统是集身份系统、无限拼接、无限组合、属性可变 NFT 于一身的一站式平台,MetaCore 让所有用户及项目方都能够创造自己的可拆分可组合 NFT,并将它们挂载到 MetaCore 身份系统上。原创 2022-09-30 10:26:25 · 1222 阅读 · 0 评论 -
EIP-3664合约研究笔记03--装备属性随机生成算法
在 claim()函数铸造主体NFT,会附带铸造生成了全套装备。本文就研究装备的生成算法。原创 2022-09-30 10:20:29 · 506 阅读 · 0 评论 -
EIP-3664合约研究笔记01--项目介绍
早在 2021 年的5月份,DRepublic 团队提出了一个叫做EIP-3664 的协议方案(又叫做NFT 属性扩展协议),其使用了一种较为巧妙的方式,来进一步解决了主流NFT标准比如ERC-721 或 ERC-1155等,在属性上表现力不足,NFT之间难以融合,且在存储上中心化(目前主要存储在服务器上)的种种问题,并且该提案进一步实现了NFT 属性的动态扩展。原创 2022-09-30 10:08:53 · 809 阅读 · 0 评论