GHO
GHO它是 Aave 协议中唯一一个去中心化、超额抵押的稳定币,作为以太坊主网上的去中心化稳定币,GHO 由用户铸造。与 Aave 协议上的所有借贷一样,用户必须提供抵押品(按特定抵押品比率)才能铸造 GHO。相应地,当用户偿还借贷头寸(或被清算)时,GHO 将返回 Aave 池并被销毁。GHO 铸造者累积的所有利息支付将直接进入Aave DAO 金库,这与用户借入其他资产时收集的标准准备金因子形成鲜明对比,本金将被销毁。
人们对真正去中心化、超额抵押和可配置的稳定币的需求很大。最近的事件证明了去中心化稳定币在市场波动期间维持稳定价值的用例。GHO 是一种由 Aave Governance 控制的稳定币,在社区支持下,它有潜力成为 DeFi 生态系统持续增长不可或缺的一部分。
与许多稳定币不同,GHO 的预言机价格是固定的。GHO 等去中心化稳定币是透明的,无法更改。利率由 Aave DAO 定义,偿还的利息将重定向到 DAO 而不是资产供应商。在安全模块中质押 AAVE 的借款人可享受折扣。
Aave学习知识
AaveAave是一种完全去中心化的、社区管理的协议,Aave 是芬兰语,意思是“幽灵”,最初于 2017 年 11 月推出时被称为 ETHLend。 ETHLend 是一个点对对点借贷系统。后来进行改进才是Aave,用户可以在其中借入和借出加密资产。协议的价值主张是创建一个可供任何拥有加密资产的人使用的替代去中心化资产货币市场。
作用Aave 是一个借贷池系统,使用户可以选择借入、借出和赚取 20 种不同数字资产的利息,而无需中间人。
想要赚取利息的用户将存入他们想要借出的资金,然后将其收集到流动性池中。当借款人贷款时,他们从这些资金池中提取资金。贷方可以以任何他们认为合适的方式交易或转让这些代币。
Aave 发行两种类型的代币来促进此活动,$AAVE(原生代币)和 aTokens。$AAVE 令牌有多种使用方式:1,如果支付费用,$AAVE 的所有者可以选择在向公众发布贷款之前查看贷款。
2, 使用 $AAVE 作为抵押品的用户可以比使用任何其他数字资产借入的金额略多。
3,代币持有者可以在平台上质押 $AAVE,以获得大约 6% 的 APY 分配。
aTokens 代币:
1,这 ...
闪电贷
闪电贷闪电贷(Flash loan):是一种无抵押、借贷金额无上限(可以借光池中所有的钱)的贷款。它要求借贷人快借快还,快到还款和借款在同一个交易内(同一个以太坊 transaction),在我看来就是非常迅速的借款还款
首先你要借钱的话,你要写个还钱合约,里面包括了如何赚钱,还本金加利息的数目,开始借款的话,就要实现一个flashloan()闪电贷合约,这个合约首先要先进行一系列的数据验证,再调用你的还钱合约,验证你是否还了本金加利息,如果没有还上,直接 revert 整个交易,让借款无效,从而保证借出方总是安全的。实现闪电贷通常有俩个合约。
闪电贷的优点:编写闪电贷合约总体并不复杂。使用闪电贷风险也比较小。如果赚钱逻辑失败,变成了亏钱逻辑,不能完成还款,那么也不用担心借来的巨款无力偿还。整个交易将会执行失败,就如同借款从来没有发生过一样。
实现你第一笔闪电贷合约闪电贷的极简入门下面是AI生成
## 闪电贷### 同一个区块中提款可导致闪电贷攻击攻击者利用闪电贷的特性,在同一个区块内执行多个交易,以迅速操控市场,并从中获利,闪电贷本身就是一笔交易完成的,如果允许在同一个区块上进行提款 ...
damn-vulnerable-defi题解
Damn-vulnerable-defiUnstoppable要求是,使拥有一百万DVI的钱包停止闪电贷的功能
分析:这个合约的代码在gittub上,要分开去看,这道题的解决就是靠一个基本的闪电贷的知识首先要看闪电贷的函数
function flashLoan(IERC3156FlashBorrower receiver, address _token, uint256 amount, bytes calldata data) external returns (bool) { if (amount == 0) revert InvalidAmount(0); // fail early if (address(asset) != _token) revert UnsupportedCurrency(); // enforce ERC3156 requirement uint256 balanceBefore = totalAssets(); if (convertToShares(totalSupp ...
hardhat
hardhathardhat就是以太坊开发环境,如同remix,现在介绍一下安装hardhat的步骤
打开终端,win+r,输入cmd
检查node js,安装没有,node -v (没有安装去官网下载)
建一个文件夹,在终端输入mkdir hardhat-tutorial,然后进入文件夹,cd hardhat-tutorial
进行初始化,npm init,接下来一直按enter,直到出现Is this OK? (yes),回答yes即可
安装hardhat npm install --save-dev hardhat,需要等待几秒
再安装一个插件 npm install –save-dev @nomicfoundation/hardhat-toolboxs
编写合同安装完成后,因为使用VScode,所以我们要安装一个VScode 安全帽,它可以帮组我们更好的使用solidity语言,然后在VScode创建一个新目录,写一个简单的.sol合约,在终端中运行该合约,npx hardhat compile,成功后就会看到Compiled 1 Solidity file su ...
Uniswap V2
Uniswap V2Uniswap是一种流行的去中心化交易所 (DEX)协议,允许用户将任何 ERC20 代币交换为另一种代币,提供流动性以赚取费用,并访问以太坊区块链上的价格预言机。 而Uniswap V2具有更强大的功能,如下:
它允许任何的ERC20代币与其他的ERC20代币配对,无需ETH作为中介,这使得流动性池更加多样化和高效,并为交易者提供更好的价格。 就是一种代币可与其他的代币转化,方便很多
Uniswap V2 实施了一种新颖的机制,可实现高度去中心化且抗操纵的链上价格供给。 这是通过在每个区块开始时测量两种资产的相对价格并随着时间的推移积累历史数据来实现的。 这允许外部智能合约查询任何时间间隔内任何货币对的时间加权平均价格(TWAP),同时将天然气成本和预言机风险降至最低。
Uniswap V2 支持一种称为闪电互换的新型交易,用户可以从池中接收任意数量的任何资产,并在链上的其他地方使用它,只要他们在交易结束时偿还该金额并支付费用即可。 交易。 这为套利、保证金交易、抵押品互换等开辟了新的可能性。
每个Uniswap智能合约或一对智能合约都管理由两个ERC-20代 ...
ERC20
ERC20ERC20是以太坊上的代币标准,它实现了代币转账的基本逻辑:
账户余额(balanceOf())
转账(transfer())
授权转账(transferFrom())
授权(approve())
代币总供给(totalSupply())
授权转账额度(allowance())
代币信息(可选):名称(name()),代号(symbol()),小数位数(decimals())
除了ERC20,还有它的接口合约IERC20,就是为了统一规范,以便好使用,接下来就介绍一下IERC20合约的功能
俩个事件
释放条件:当 value 单位的货币从账户 (from) 转账到另一账户 (to)时.event Transfer(address indexed from, address indexed to, uint256 value);
释放条件:当 value 单位的货币从账户 (owner) 授权给另一账户 (spender)时.event Approval(address indexed owner, address indexed spender, uint256 valu ...
Ethernaut靶场题解
EthernautFallback要求是,成为这个合约的所有者,并使这个合约的钱为零
分析;从这个合约中可以看到,要成为owner1,我们的钱必须大于合约持有者的钱,但是最开始合约本身就有1000ether,这个时候就走contribute函数不行,因为我们没有那么多钱2,此时发现receive,只要我们的钱和合约的钱大于0,就可以成为这个合约的持有者
方法:1,在remix上不能部署这个合约,因为部署后,合约初始化,owner就是我们自己了
constructor() { owner = msg.sender; contributions[msg.sender] = 1000 * (1 ether); }
直接使用合约地址At Adress2,调用contribute函数,转账1wei;2,调用receive函数,转账1wei,就完成了,注意记得将钱收回来
Fal1out要求是,成为这个合约的所有者
分析:注意这个的solidity的版本是0.6,没有影响关系,只是构造函数的写法不一样,如:
//solidity 0.8 construc ...
靶场题解
Fallback要求是,成为这个合约的所有者,并使这个合约的钱为零
首先找到owner,
分析;从这个合约中可以看到,要成为owner1,我们的钱必须大于合约持有者的钱,但是最开始合约本身就有1000ether,这个时候就走contribute函数不行,因为我们没有那么多钱2,此时发现receive,只要我们的钱和合约的钱大于0,就可以成为这个合约的持有者
方法:1,在remix上部署这个合约,首先调用contribute函数,给我们转账;2,在调用receive函数,就完成了
Fal1out要求是,成为这个合约的所有者
从这个题目来看,Fallout,Fal1out,
分析:首先看与owner相关的函数,再去分析构造的合约名字Fallout,仔细发现有个Fal1out的函数,它实际上是命名错误的,这个时候我们就可以调动这个函数,刚好成为合约的所有者
方法:
定义函数接口,直接调用该函数Fal1out,此时就成为了合约的所有者
my fist blog
先进入blog cd blog预览hexo hexo s创建文章题目 hexo new “”进入文章目录 cd 提目前,blog后的东西)题目.md写文章 notepad 题目.md
