- 博客(20)
- 收藏
- 关注
原创 Solidity——create和create2部署合约
部署智能合约是开发中必不可少的一个环节,常规的方式是借助像Hardhat这样的工具,通过编写ts部署脚本来实现。但在实际业务中,经常会遇到通过在合约中部署子合约的情况。比如添加Token流动池。这类需求在设计在上需要通过工厂合约来创建部署子合约来实现,它看起来就像是从一个模具厂生产的模具一样,只是每个模具的编号(子合约地址)不同。
2024-03-12 11:56:26
1467
1
原创 OpenZeppelin——ERC721
ERC721是一个代币标准,ERC721官方简要解释是Non-Fungible Tokens,简写为NFT,多翻译为非同质化代币。那怎么理解代币呢?非同质化代表独一无二,以卡牌游戏为例,盲盒开出的英雄属性是随机生成,尽管职业相同,但每个英雄不一样,一个英雄对应一个TokenId,就是一个NFT,英雄之间是不能置换的,因为价值不同。ERC20代币是同质化代币,是可置换的,且可细分为N份(1 = 10 * 0.1), 而ERC721的Token最小的单位为1,无法再分割。
2024-02-20 00:18:38
1486
1
原创 Solidity—— call、staticcall和delegatecall用法介绍
在一个智能合约中调用另外一个外部智能合约的函数,我们可以通过接口interface的方式进行调用。另外,还有一种比较底层的调用方法,就是使用call、staticcall和delegatecall函数。它们是一种低级、底层的调用方式,具有更大的灵活性。我们将分别进行讲解。
2024-01-30 16:57:09
2027
3
原创 OpenZeppelin——EnumerableSet介绍
EnumerableSet结构_values:用于存储集合元素值,_indexes:用于记录元素值与索引位置映射关系以下是常用函数和内部实现代码解析:向集合中提及添加元素,如果集合中不存在该元素则添加成功,返回true,否则返回false。/***/if (!} else {从集合中移除某个元素,如存在移除的值删除后返回true,不存在则返回false。
2024-01-16 17:22:11
1001
2
原创 DeFi系列之——MakerDAO介绍
是去中心化金融(DeFi)项目,以加密货币作为抵押品,稳定币DAI与美元挂钩。其社区通过去中心化自治组织(DAO)管理代币。用户将加密货币以一定的强制平仓比率锁定在Maker收益池中,以此来生成DAI。例如,125%的强制平仓比率要求每1美元的DAI背后抵押了价值1.25美元的加密货币。为应对加密货币的波动价格,稳定币被超额抵押,同时还需收取稳定费。如果抵押品价值低于强制平仓比率,您的加密货币将被强制平仓,用于弥补所有损失。DAI能保持稳定是因为DAO控制着稳定费与DAI储蓄率。
2024-01-10 17:25:15
781
原创 DeFi系列之——DeFi介绍
自动做市的方法是把流动性的供给打包,并且以规则制定的价格进行交易,不依赖于对手方的存在,就可以提供流动性。相比之下,CEX 通过控制你的私钥,扮演着你的资金保管人的角色。DEX 面临着补偿流动性的成本和 "无常损失 "的特殊风险(我们将在下文中详细介绍无常损失),而 CEX 的流动性历来是由一小撮拥有许可权限和专门工具的专业交易公司提供,这使得流动性集中在少数人手中,他们可以在波动期间撤回他们的资产,并在用户最需要的时候限制某项资产的交易,这就使得 CEX 相比 DEX 流动性更强,也无需面临无常损失。
2024-01-10 16:35:14
1395
原创 solidity——默克尔树实现零成本空投
默克尔树(Merkle Tree)是一种二叉树数据结构,它使用哈希函数将大量数据块组织成树状结构,用于快速验证大型数据集的完整性。默克尔树使用哈希函数对数据块进行哈希运算。常用的哈希函数如 SHA-256,SHA-3 等。待存储的原始数据被分割成固定大小的块,每个块作为树的叶子节点,通过哈希函数生成一个哈希值。叶子节点按顺序两两配对,将它们的哈希值拼接后再次进行哈希运算,生成一个新的哈希值。这个过程一直重复,直到树的根节点生成。默克尔树的根节点是最终的哈希值,称为 Merkle 根。
2023-12-26 00:23:39
1697
2
原创 IERC20——transfer和transferFrom函数
总体来说,`transfer` 用于直接的地址间转移,而 `transferFrom` 用于授权操作者代表拥有者进行转移。在调用 `transferFrom` 之前,通常需要拥有者通过调用 `approve` 函数提前授权。这种机制提供了更灵活的代币操作方式,允许合约等代理进行转移。`transfer` 和 `transferFrom` 是 ERC-20 标准中定义的两个不同的代币转移函数,它们有不同的用途和操作者。
2023-11-02 15:18:30
1303
原创 Solidity——storage、memory、calldata用法和区别
在Solidity中,storage和memory是用于声明和处理数据的两个关键字,它们具有不同的用途和作用域。
2023-10-24 22:45:02
1134
1
原创 Solidity——关键字public、private、internal和external
在Solidity中,publicprivateinternal和external是四个不同的访问修饰符,用于限定函数或状态变量的可见性和可访问性。
2023-10-24 11:15:53
924
原创 Solidity——modifier关键字介绍
在Solidity中,modifier关键字用于声明修饰符,可以在函数定义时使用修饰符来添加额外的逻辑和验证规则。通过使用modifier关键字,我们可以定义各种修饰符来增强合约的功能和安全性。修饰符可以用于验证权限、检查输入参数、修改函数行为等。在函数定义时使用修饰符可以使代码更加清晰和易于维护,避免重复的验证和逻辑代码。
2023-10-23 22:28:29
253
原创 Solidity——library、contract、Structs和Enums区别
Library在Solidity中,librarycontractstructs和enums是不同的概念和关键字,它们在语言中具有不同的用途和特性。
2023-10-20 23:33:34
468
2
原创 Solidity——Using...For...基本用法
库函数是一组可重用的函数,它们可以被附加到不同的数据类型上以提供常用功能。这使得您可以避免在每个合约中重复编写相同的代码,从而提高了代码的可读性和维护性。在Solidity中,库函数以库的形式存在,并且可以通过指令来附加到数据类型 B 上。使用库函数并将它们附加到数据类型上是Solidity中的强大特性之一,它可以大幅提高代码的可读性和可维护性。您可以创建通用的库函数,然后在多个合约中重复使用它们,而无需重复编写相同的代码,它是对合约代码进行抽象和封装设计的一种体现。这有助于减少错误并提高智能合约的安全性。
2023-10-18 22:54:38
249
1
原创 Solidity——view和pure修饰符
在Solidity中,view和pure是两个函数修饰符,用于标识函数的特性和行为。viewview修饰符用于表示函数仅读取合约状态,不会修改任何状态变量。它是一种只读函数,用于提供数据查询和计算服务。view函数不会消耗任何Gas(燃料)并且不会修改区块链状态。它们只能调用其他view或pure函数,而不能调用普通函数。purepure修饰符表示函数既不会读取合约状态,也不会修改任何状态变量。它仅执行纯计算操作,并返回计算结果。pure函数与view函数相似,但更严格,不能读取合约状态或调用其他非纯函数。
2023-10-17 23:40:30
327
原创 从解决问题到人生规划,如何通过深度思考,让自己成为这个世界上最顶级的人才?
你能盯着白纸,就看到美妙的画作么?所以,原来一切的罪魁祸首,都是互联网的连接效率变高而导致原本的交易结构发生了变化,淘宝店家是因为“短路”掉了价值传递过程中的那些总代、省代、区代等等这些中间环节,让商品可以用更短的距离来到消费者的面前了,所以价格才能那么低,这才导致了后面的一连串的反应...另外,你还可以扩大体验范围,比如举办一个全城跑不死大赛,让喜欢慢跑的人都加入进来,然后让最后一个倒下的人成为你的门店形象大使,并赞助他全年的运动装备,而其他人则可以给他们颁发一个鼓励奖,也就是一张买鞋子的代金券。
2023-10-11 23:12:45
125
原创 Solidity-快速构建一个项目
是一个编译、部署、测试和调试以太坊应用的开发环境。它可以帮助开发人员管理和自动化构建智能合约和dApps过程中固有的重复性任务,并围绕这一工作流程轻松引入更多功能。它集成了合约的编译、运行和测试等核心功能,帮助开发人员快速的启动项目,搭建开发环境。
2023-09-12 10:31:53
386
1
原创 Solidity-Token
代币”:区块链最强大、最容易被误解的工具。代币是区块链中某事物的表示。这些东西可以是金钱、时间、服务、公司股份、虚拟宠物,任何东西。通过将事物表示为令牌,我们可以允许智能合约与它们交互、交换、创建或销毁它们。围绕代币的许多困惑来自于混淆的两个概念:代币合约和实际代币。代币合约就是以太坊智能合约。“发送令牌”实际上意味着“在某人编写和部署的智能合约上调用方法”。归根结底,代币合约只不过是地址到余额的映射,以及一些添加和减去余额的方法。正是这些余额代表了代币本身。
2023-09-06 23:48:54
226
2
原创 Solidity-测试
在构建智能合约时编写自动化测试至关重要,因为这关系到用户的资金。为了测试我们的合约,我们将使用 Hardhat Network,这是一个专为开发而设计的本地以太坊网络。它内置于 Hardhat 中,并用作默认网络。无需设置任何内容即可使用它。在我们的测试中我们将使用与我们构建的以太坊合约进行交互,我们将使用作为我们的测试运行者。ethers.js 库旨在成为一个完整且紧凑的库,用于与以太坊区块链及其生态系统进行交互。
2023-09-03 23:39:58
255
1
原创 Solidity-事件(Event)
要定义事件,可以使用event关键字(在用法上类似于function关键字)。然后可以在函数中使用emit关键字触发事件。按照惯例,事件名称以大写字母开头,以区别于函数。// 声明一个事件事件是EVM上比较经济的存储数据的方式,每个大概消耗2,000 gas;相比之下,链上存储一个新变量至少需要20,000 gas。Solidity 提供了一种记录交易期间事件的方法。智能合约前端(DApp)可以监听这些事件。索引(indexed)参数为过滤事件提供了一种高效的方法。
2023-09-02 17:49:01
180
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人