timezone |
---|
Asia/Shanghai |
- 自我介绍
互联网老兵一枚,目前对 Defi 比较感兴趣,尤其是 Solana 和 Ton 生态,希望能借此机会了解的更深入一些
- 你认为你会完成本次残酷学习吗?
我认为会
Solana 开发环境搭建
brew install solana
solana config get
# set to localhost
solana config set --url localhost
# set to devnet
solana config set --url devnet
solana address
solana-test-validator
但是启动失败,报错
Error: failed to start validator: Failed to create ledger at test-ledger: blockstore error
根据搜索,要用 gnu-tar 代替 mac 自带的 tar
brew install gnu-tar
# Put this in ~/.zshrc
export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"
再次启动成功运行
solana account <address>
solana airdrop 100
solana balance
# or
solana balance <address>
cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
avm install latest
avm use latest
中间报错
./time-0.3.29/src/format_description/parse/mod.rs:83:9
|
83 | let items = format_items
| ^^^^^
...
86 | Ok(items.into())
| ---- type must be known at this point
error: could not compile `time` (lib) due to 1 previous error
Error: Failed to install 0.30.1, is it a valid version?
修改 ./time-0.3.29/src/format_description/parse/mod.rs 第 83 行
change
let items = format_items
to
let items: Box<[format_item::Item]> = format_items
然后重新运行 avm 命令解决
Intent Asset https://mp.weixin.qq.com/s/-8_h6h2abCTfZJsjGmz80Q
-
闲置资产的革命
- 以阿里余额宝类比,引出 Web3 版余额宝的机遇。
- Web3 版余额宝利用区块链技术和链上闲置资产,具有去中心化、透明度高、流动性强、收益来源多样化和用户覆盖广泛等优势。
-
传统 TVL 模式陷入僵局
- 本周期 TVL 叙事存在问题,发币和上线交易所后 TVL 迅速下滑。
- TVL 僵化,由少数大户或合作方通过“挖提卖”方式实现短期数据冲高,普通用户参与机会成本高,被大户主导。
- 当前 TVL 项目资产退出方式维护成本高、用户体验不佳。
-
dappOS 意图资产(Intent Assets)
- 能让用户在享有较高资产收益率的同时保证资产随时在链上可用。
- 背后的意图执行网络通过众多去中心化服务提供商完成用户需求,实现流动性维护成本与实际需求的动态平衡,降低成本并优化用户体验。
-
Intent Asset 的介绍
- 新型资产,根据不同场景自动适应并在闲置时产生利息。
- 具有即时赎回、高收益率和使用便捷等优势。
- 在不同客户群和场景中有广泛应用,如 DeFi 玩家、新入局玩家、机构投资者等。
-
Intent Asset 的原理
- 利用 dappOS 执行网络将用户资产的结算任务外包给服务提供商,实现用户预期结果。
- dappOS 的 OMS 机制确保任务以最快速度和最低成本执行,同时保持资产安全。
- Intent 执行网络确保任务在不同区块链和去中心化应用中兼容。
-
可能面临的未来挑战
- 监管压力、市场竞争加剧、收益率下降、流动性管理、用户多样化需求、技术和安全风险以及用户接受度和教育等方面。
开篇以阿里余额宝为例,让我们看到了闲置资产在传统金融领域的成功应用,进而引出了 Web3 版余额宝的巨大潜力。在 Web3 世界中,利用区块链技术可以实现更高的去中心化程度、透明度和流动性,同时为用户带来更多样化的收益来源和更广泛的用户覆盖。
然而,传统的 TVL(Total Value Locked)模式在当前的发展中陷入了僵局。许多项目在发币和上线交易所后,TVL 迅速下滑,这主要是由于 TVL 僵化,被少数大户或合作方通过“挖提卖”的方式主导,普通用户参与机会成本高。此外,资产退出方式也存在维护成本高和用户体验不佳的问题。
dappOS 推出的 Intent Asset 为解决这些问题提供了新的思路。这种新型资产能够在用户享有较高资产收益率的同时,保证资产随时在链上可用。其背后的意图执行网络通过众多去中心化服务提供商来完成用户需求,实现了流动性维护成本与实际需求的动态平衡,从而降低了成本并优化了用户体验。
Intent Asset 具有诸多优势,如根据不同场景自动适应并在闲置时产生利息,还具有即时赎回、高收益率和使用便捷等特点。在不同的客户群和场景中都有广泛的应用,无论是 DeFi 玩家、新入局玩家还是机构投资者,都能从中受益。
从原理上看,Intent Asset 利用 dappOS 执行网络将用户资产的结算任务外包给服务提供商,实现用户的预期结果。dappOS 的 OMS 机制确保任务以最快速度和最低成本执行,同时保证资产的安全。Intent 执行网络则确保任务在不同的区块链和去中心化应用中兼容。
尽管 Intent Asset 具有很大的潜力,但它也面临着一些未来的挑战。监管压力、市场竞争加剧、收益率下降、流动性管理、用户多样化需求、技术和安全风险以及用户接受度和教育等方面都需要进一步解决。
总之,Intent Asset 为 Web3 资产的大规模应用提供了一个有前景的入口,但要实现其真正的潜力,还需要克服一系列的挑战。在未来的发展中,我们可以期待看到更多创新的解决方案,以推动 Web3 资产的发展和应用。
Curve https://crypto.nateliason.com/p/curve-wars?s=w
- **Crypto的激励设计游戏**:Crypto领域中,激励设计至关重要,涉及数十亿美元的利益。设计良好的激励机制能使项目获得巨大权力和财富,否则项目代币可能归零。
- **DeFi的激励重点**:DeFi中大多数激励设计主要解决两个问题,一是阻止人们出售代币,二是鼓励人们提高代币的流动性。
- **流动性市场的出现**:出现了流动性市场,领先的协议可以聚合各种机会,让投资者通过提供流动性来赚取收益,同时协议可以支付投资者来帮助增加其代币的流动性。
- **特点**:Curve是一个类似于Uniswap或Sushiswap的去中心化交易所,但它有自己独特的交换数学,使其在稳定币兑换方面比其他DEX更高效。
- **优势**:Uniswap的“Constant Product Formula”在交易使用大量流动性时会有价格影响,而Curve的“StableSwap Invariant”能大幅减少稳定币对之间大交易的价格滑点。
- **激励结构**:为Curve上的交易池提供流动性,能获得交易费分成,还能获得CRV代币奖励。此外,veCRV模型鼓励用户锁定CRV代币,可获得更多奖励,包括被动收入和在不同CRV池中的“奖励提升”,同时还能对Curve分配CRV奖励的池子进行投票。
- **功能**:Convex是Curve收益的聚合器,解决了普通投资者为获得最大收益需要大量CRV代币锁定veCRV的问题。
- **创新**:推出了锁定Curve代币的流动版本cvxCRV,用户存入CRV代币后,Convex会给予cvxCRV并将CRV锁定为veCRV(veCRV归Convex所有),用户可质押cvxCRV获得veCRV奖励份额,且可随时将cvxCRV出售为CRV或其他代币,无需担心4年的锁定。
- **影响**:Convex吸收了大量流通的Curve供应,拥有比其他任何协议更多的veCRV投票权,从而控制CRV奖励的分配,为使用Convex平台的用户提供显著的收益提升。
- **贿赂机制**:协议会根据CVX持有者的投票向其支付贿赂,因为相比于购买更多CVX,支付贿赂在长期来看更便宜。贿赂金额每半周根据其他协议的竞争情况而变化,过去几个月范围在每CVX投票0.37 - 0.87美元。
- **对CVX持有者的影响**:CVX持有者可以通过锁定CVX并将其委托给Votium或通过Llama Airforce Union来赚取高达47%的APR贿赂,同时还能从Convex平台费用中获得适度的APR(目前为3.81%)。
- **目标**:REDACTED Cartel旨在通过控制veCVX来赢得Convex Wars,其将自己视为一个积极管理的对冲基金,为投资者赢得流动性战争,同时为BTRFLY持有者积累更多权力。
- **策略**:通过bonding其他资产,尤其是CRV和CVX,来赚取BTRFLY代币。他们部署优化的贿赂策略,购买和质押CRV和CVX以获得更多的CRV和CVX,从而控制更多投票并赢得战争。
- **Tokemak的作用**:Tokemak允许代币持有者在无需将其部署到各种池并进行质押以获取奖励的情况下赚取LP费用,TOKE持有者可以对不同协议获得的流动性及其去向进行投票。
- **REDACTED的计划**:REDACTED收购了Votemak,并正在获取更多TOKE,以运行优化的CVX和TOKE贿赂策略,从而在未来的流动性中积累大量权力。
- **Convex的扩展**:Convex旨在拥有任何具有投票托管代币的现金流协议的重要份额,以赚取更多协议的CVX贿赂,已宣布支持Frax,未来可能支持更多协议。
- **选项一**:购买CVX,锁定并委托给Llama Airforce Union,让一切自动复利。
- **选项二**:购买BTRFLY并质押,让其解决整个流动性战争的问题。
- **作者的选择**:作者同时进行了以上两种操作,并持有Tokemak的头寸,因为认为它将为Convex的主导地位提供有趣的竞争。
总的来说,随着DeFi的发展,流动性之战将变得更加激烈,这些协议的竞争和发展将对DeFi的未来产生重要影响。
学习 LXDAO 公开课 (3) DeFi 残酷共学分享会:借贷的探索
Move 语言
- Move是用于智能合约开发的新编程语言,源自Facebook已终止的项目,旨在革新智能合约开发,提高安全性并增强开发者体验。
- 主要的基于Move的区块链有Aptos和Sui,Movement Labs将Move引入以太坊生态系统。
- 基于资产的存储模型:与Solidity基于地址的方法不同,Move将资产视为独立存在的“资源”,具有内置的稀缺性和访问控制属性,增强了安全性。
- 程序组成与调度:由交易脚本和模块组成,模块使用静态调度,消除了与动态调度相关的不确定性。
- 安全性增强功能:结合Move Prover(MVP)形式验证器、字节码验证器和强静态类型系统,提高了安全性和减少了运行时错误风险。
- 基本架构和交易处理:Aptos采用传统区块链模型,Sui采用对象中心模型和DAG。
- 共识机制:Aptos采用AptosBFT,Sui对涉及共享对象的交易使用BFT共识协议,并在测试网引入Mysticeti共识算法。
- 智能合约功能:Sui原生支持可升级智能合约,Aptos通过特定编程模式支持。Sui引入针对对象中心模型优化的扩展,Aptos鼓励模块化智能合约开发。
- 独特功能:Aptos引入“资源账户”和灵活的密钥管理方案,Sui提供可编程交易块。
- 费用市场:Sui实施本地化费用市场,Aptos使用全球费用市场。
- 对比结论:Aptos将Move资产集成到熟悉结构中,Sui完全拥抱并扩展Move的面向对象方法。
- 当前采用情况数据:Sui在用户、流动性、交易量等方面略微领先于Aptos。
- M2:作为以太坊的Layer 2解决方案,具有以太坊兼容性、Celestia集成、Snowman共识、跨虚拟机互操作性和本地化费用市场等特点,尚未公布主网启动日期和代币计划。
- 其他生态系统:Solana基金会正在进行Move集成工作,还有将Move带到Cosmos、Substrate和Polkadot生态系统的计划,但处于早期阶段。
- Move链的成功取决于吸引开发者构建应用生态系统,需要培养活力社区和提供商业机会。
- Move可能吸引新开发者,实现更陡峭增长曲线,有望成为吸引区块链开发者及其创新的催化剂。
来源: Solana 交易的生命周期
Solana 交易由三部分组成:
- 一个或多个指令,指定交易应在链上运行哪些代码。例如,“将 5 SOL 从帐户 A 转移到帐户 B”。
- 交易所需的账户数组(离散状态),具有读写标志。例如,“账户 A[可写],账户 B[可写]”。
- 交易所需的一个或多个签名。例如,“账户 A 所有者的签名”。
代码和状态的分离是 Solana 并行执行模型的必要条件
用户在钱包中签名交易后,钱包将其发送到 Solana RPC 服务器,服务器根据领导者计划将交易转发给当前领导者及接下来的两个领导者。
- 领导者验证交易签名并进行预处理,然后安排交易执行。
- 大多数验证器使用 Solana Labs 提供的默认调度程序实现,该实现是多线程的,每个线程的交易队列按优先级费用和时间排序。
- 交易执行时需获取必要的账户锁,若无法获取则重新排队。
- Solana 通过并行执行提高性能,但对开发人员造成成本,因为需预先指定交易可能需要的任何状态。
- 交易排序存在固有不确定性,这可能导致开发人员为了使紧急交易得到执行而进行大量发送。
- 交易由领导者执行后,立即记录到验证者的账本副本中并传播到网络的其余部分。
- 当一个区块获得必要的共识投票后,交易被视为 “已确认”,当有 31 个以上的确认区块构建在其上时,该区块被视为 “最终确定”。
- Solana 没有公共内存池,待处理交易直接转发给当前领导者和接下来的几个领导者。
- Solana 默认验证器实现具有连续的区块生产,而以太坊的待处理交易在验证器或区块构建者处等待,每隔 12 秒构建完整区块。
- Solana 交易需要固定的网络费用(每签名通常为 0.000005 SOL),还可以包含可选的优先级费用(按每请求计算单位支付的费用计价)。
- Solana 上的协议外区块空间拍卖(Jito)市场份额较小,而以太坊上的 mev - boost 市场份额较大。
- 给不懂MakerDAO、AAVE、Compound的贷款清算的借款人了解风险 https://www.youtube.com/watch?v=kDpOYCewo2w
- 借贷赛道深度解读---token借贷和nft借贷协议全面介绍(上) https://www.youtube.com/watch?v=adnZ8fWm5yM
AAVE
AAVE协议是一个分散的借贷平台,允许用户在闲置资产上赚取利息,并借入他们需要的资产,而无需传统金融机构。通过使用智能合约来自动化借贷过程,AAVE协议允许用户以快速、安全和透明的方式获得金融服务。
AAVE协议的关键特征之一是其使用去中心化治理模型,该模型允许AAVE社区集体决定重要的协议更新和更改。
- 借贷:AAVE协议允许用户借贷各种资产,包括比特币和以太坊等加密货币,以及DAI和USDC等稳定币。用户可以通过出借闲置资产赚取利息,或者使用现有资产作为抵押品借入所需资产。
- 清算和抵押品:为了确保AAVE平台的安全性,AAVE协议使用清算和抵押品系统来保护贷款人在借款人拖欠贷款的情况下。如果借款人的抵押品价值低于某个值,AAVE协议将自动出售抵押品以偿还贷款,最大限度地减少贷款人的损失。
- 治理和质押:AAVE协议使用分散的治理模型,允许社区集体决定重要的协议更新和更改。用户可以通过质押AAVE代币参与治理,这赋予了他们投票权和提出和投票治理提案的能力。
- 流动性池:AAVE协议的核心是流动性池系统,即可供借贷的资产池。用户可以将他们的资产存入这些池中,作为回报,他们将获得代币形式的池份额。
- 贷款和借款机制:AAVE协议使用一种独特的借贷机制,称为“闪电贷款”,允许用户立即借入资产并在同一交易中偿还。这使得用户能够快速有效地借入和借出资产,而不需要抵押品。
- AAVE 代币:Aave 代币是 AAVE 协议的本地代币,在协议的架构中具有几个重要功能:
- 用作治理代币,允许代币持有者对协议更新和治理决策进行投票。代币持有者可以提交更改协议的提案,如果提案获得足够多的投票,它将得到实施。
- 用作质押代币,允许用户通过质押AAVE代币并参与协议的流动性池来获得奖励。质押AAVE代币的用户可以获得协议收取的费用的份额,以及存款资产产生的利息的一部分。
- 用作抵押代币,允许用户抵押其贷款并以较低利率借款。当借款时,用户可以选择以AAVE代币的形式提供抵押品。如果所借资产的价值低于某个阈值(称为“清算阈值”),AAVE代币将被出售以偿还贷款。
- 利率模型:该模型确定用户可以借入和借出资产的利率。AAVE协议目前支持三种利率模型:稳定利率模型、可变利率模型和闪电贷款利率模型
- 稳定利率模型是一种固定利率模型,其中给定资产的利率被设定为恒定利率。该模型适用于旨在保持稳定价值的稳定币。
- 可变利率模型是一种可变利率模型,其中给定资产的利率由供需决定。该模型适用于价值波动的加密货币
- 闪电贷利率模型是一种仅适用于闪电贷的特殊利率模型。闪电贷是 AAVE 协议的独特功能,允许用户立即借入资产并在同一交易中偿还。闪电贷利率模型旨在允许用户以反映闪电贷风险的利率借入和出借资产。
- 抵押系统:该系统允许用户抵押其贷款并以较低利率借款。当借款时,用户可以选择以AAVE代币或其他支持的资产形式提供抵押品。如果所借资产的价值低于某个阈值(称为“清算阈值”),抵押品将被出售以偿还贷款。
- 安全措施:AAVE协议包括几种安全措施来保护协议及其用户免受潜在风险的影响
- 紧急停止机制,该机制允许协议在发生严重问题时暂时停止。
- 清算机制,当借款人的抵押品价值低于清算门槛时,该机制将被激活。当借款人的抵押品被清算时,他们的贷款将自动偿还,抵押品将被出售以弥补任何损失。
- 处理次级贷款的系统,这些贷款的抵押率低于协议要求的最低限度。当检测到次级贷款时,AAVE协议将自动出售借款人的部分抵押品,以使贷款恢复到最低抵押率以上。
- 贷款池合约
- 贷款池合约是AAVE协议的核心,负责管理资产的借贷。每个资产都有自己的贷款池合约,跟踪该资产的供需情况并确定利率。
- 价格预言机合约
- 价格预言机合约负责向贷款池合约提供资产的当前价格,这些价格用于确定抵押品的价值和贷款的清算门槛。
- 市场合约
- 市场合约负责管理 AAVE 协议中的资产买卖。这些合约允许用户使用 AAVE 令牌作为交换媒介买卖资产
TODO
Soneium 是一个旨在唤起情感并激发创造力的下一代区块链生态系统。它由全球技术领导者索尼集团公司和 Web3 创新者 Startale 共同创立。Soneium 是一个多功能、通用的区块链,随时准备满足所有垂直领域的各种需求,并为全球用户提供服务。
Soneium 不仅仅是另一个区块链——它是一个旨在实现大规模应用的平台。通过利用索尼的全球影响力和 Startale 的区块链实力,我们正在创建一个将 Web3 技术带给日常用户的生态系统。我们提供工具和 API 来创建直观、用户友好的 dApps,让主流用户感到熟悉,降低区块链技术的入门门槛。
Soneium Minato 是他们发布的一个 testnet,提供了一个快速且经济高效的开发环境,提供了与以太坊兼容的工具。访问地址 https://bridge.soneium.org/en/testnet
作为以太坊的第 2 层解决方案,Soneium 建立在现有的第 1 层基础设施之上,处理数据处理以解决通常与第 1 层解决方案相关的处理速度慢和费用高的问题。通过利用 Optimism 基金会开发的 Op Stack,Soneium 创建了一个可扩展、与 EVM 兼容且对开发者友好的区块链
Soneium Spark 是一个开发者孵化计划,将于 10 月中旬开始,并持续未来几个月。对以下开创性项目敞开:
- DeFi
- Web3 体验
- 开放类别
区块链外信息写入区块链内的机制,一般被称为预言机(Oracle mechanism)
预言机能够更快地获取链上数据,它允许确定的智能合约对不确定的外部世界作出反应,是智能合约与外部进行数据交互的唯一途径
Pyth 是一个旨在为加密货币、股票、外汇对、ETF 和大宗商品提供准确价格的语言网络。它提供三个核心产品:
- 价格源(Price Feeds),智能合约的实时更新
- 基准(Benchmarks),历史市场数据
- Pyth 熵(Pyth Entropy),安全随机数生成器
- 速度:对于许多链上金融场景来说,预言机的更新速度不够快
- 资产覆盖和可用性:开发者无法获取他们所需要的喂价数据
- 数据源和数据质量:数据是模糊的,且来自聚合的、第三方的数据源
- 1. 低延迟、高频次的价格更新
- 2. 喂价数据覆盖和多链可用性
- 3. 高分辨率、高保真、透明的数据
- 传统预言机的设计都有一个隐含的前提:所有数据,包括金融数据,都可以在 Web2 的世界中免费获取。
- Pyth Network 建立在这样一个前提之上:金融数据是有价值的,并且不是免费获得的。Pyth 协议不仅仅提供这些数据的粗略近似值,而是支持并激励金融数据的原始所有者直接将其贡献到区块链上。Pyth 的数据源是“一手的”,因为这些数据是由他们创造并拥有的。
Pyth 运行其协议的两个实例:一个在 Solana 主网上,另一个在 Pythnet Appchain 上。Solana 上的 Pyth 仅为 Solana 上的协议提供数据;Pythnet 上的 Pyth 为所有其他区块链上的协议提供数据。
协议中主要有以下三个角色:
- 数据发布者向 Pyth 的预言机程序提交价格信息。每一个喂价数据产品 Pyth 都有多个数据发布者,以提高系统的准确性和稳健性。
- Pyth 协议对数据发布者的数据进行组合,产生一个单一的聚合价格和置信区间。
- 数据用户读取由预言机程序产生的价格信息。
价格源以两个 Solana 账户表示:产品账户和价格账户。产品账户存储有关价格源的元数据,如股票代码、资产类型、相应价格账户等。价格账户包含授权数据提供商的名称、每个提供商提交的价格和置信区间、指数移动平均值等。这两个账户都由预言机程序维护,该程序还包含一个第三个账户,基本上只列出产品账户。这种设置使应用程序能够对 Pyth 提供的完整价格源列表进行分类。
Pythnet 应用链是 Solana 主网的一种权威证明分叉,作为一个计算基础层,用于处理和聚合 Pyth 的数据提供商网络提供的数据。Pythnet 上的结果价格源可供 50 多个区块链访问,不仅仅包括 Solana,因为它的价格源直接发布到区块链上。由于 Pythnet 是 Solana 的分叉,因此 Solana 上的 Pyth 预言机框架和 Pythnet 上的 Pyth 预言机 框架在某种程度上是相似的,但存在一些区别
Uniswap 在其流动性池上构建了一种特定的自动做市商(AMM)机制。称为恒定乘积做市商(Constant Product Market Makers,CPMM)。
其核心是一个非常简单的乘积公式:
x∗y=k
流动性池是一个持有两种不同 token 的合约,x 和 y 分别代表 token0 的数目和 token1 的数目, k
是它们的乘积,当 swap 发生时,token0 和 token1 的数量都会发生变化,但二者乘积保持不变,仍然为 k
我们一般说的 token0 的价格是指在流动性池中相对于 token1 的价格,价格与数量互为倒数,因此公式为:
P=y/x
Uniswap 核心就是要基于 CPMM 来实现一个自动化做市商,除了用户调用的交易合约外,还需要有提供给 LP 管理流动性池子的合约,以及对流动性的管理。
Uniswap V3 的合约大概被分为两类:
- Uniswap v3-periphery:面向用户的接口代码,如头寸管理、swap 路由等功能,Uniswap 的前端界面与 periphery 合约交互,主要包含三个合约:
- NonfungiblePositionManager.sol:对应头寸管理功能,包含交易池(又称为流动性池或池子,后文统一用交易池表示)创建以及流动性的添加删除;
- NonfungibleTokenPositionDescriptor.sol:对头寸的描述信息;
- SwapRouter.sol:对应 swap 路由的功能,包含单交易池 swap 和多交易池 swap。
- Uniswap v3-core:Uniswap v3 的核心代码,实现了协议定义的所有功能,外部合约可直接与 core 合约交互,主要包含三个合约;
- UniswapV3Factory.sol:工厂合约,用来创建交易池,设置 Owner 和手续费等级;
- UniswapV3PoolDeployer.sol:工厂合约的基类,封装了部署交易池合约的功能;
- UniswapV3Pool.sol:交易池合约,持有实际的 Token,实现价格和流动性的管理,以及在当前交易池中 swap 的功能。
核心流程:
-
部署交易池
-
部署交易池调用的是
NonfungiblePositionManager
合约的 createAndInitializePoolIfNecessary,参数为:- token0:token0 的地址,需要小于 token1 的地址且不为零地址;
- token1:token1 的地址;
- fee:以 1,000,000 为基底的手续费费率,Uniswap v3 前端界面支持四种手续费费率(0.01%,0.05%、0.30%、1.00%),对于一般的交易对推荐 0.30%,fee 取值即 3000;
- sqrtPriceX96:当前交易对价格的算术平方根左移 96 位的值,目的是为了方便合约中的计算。
-
代码为
/// @inheritdoc IPoolInitializer function createAndInitializePoolIfNecessary( address token0, address token1, uint24 fee, uint160 sqrtPriceX96 ) external payable override returns (address pool) { require(token0 < token1); pool = IUniswapV3Factory(factory).getPool(token0, token1, fee); if (pool == address(0)) { pool = IUniswapV3Factory(factory).createPool(token0, token1, fee); IUniswapV3Pool(pool).initialize(sqrtPriceX96); } else { (uint160 sqrtPriceX96Existing, , , , , , ) = IUniswapV3Pool(pool).slot0(); if (sqrtPriceX96Existing == 0) { IUniswapV3Pool(pool).initialize(sqrtPriceX96); } } }
-
-
swap
-
swap 也就指交易,是 Uniswap 中最常用的也是最核心的功能。对应 https://app.uniswap.org/swap 中的相关操作,接下来让我们看看 Uniswap 的合约是如何实现 swap 的。
-
SwapRouter
合约包含了以下四个交换代币的方法:exactInput
:多池交换,用户指定输入代币数量,尽可能多地获得输出代币;exactInputSingle
:单池交换,用户指定输入代币数量,尽可能多地获得输出代币;exactOutput
:多池交换,用户指定输出代币数量,尽可能少地提供输入代币;exactOutputSingle
:单池交换,用户指定输出代币数量,尽可能少地提供输入代币。
-
在多池 swap 中,会按照 swap 路径,拆成多个单池 swap,循环进行,直到路径结束。如果是第一步 swap。payer 为合约调用方,否则 payer 为当前
SwapRouter
合约。
-
- 学习 LXDAO 公开课视频 https://www.youtube.com/watch?v=Is70Ybq28Ls
Solayer
再质押是由 Eigenlayer 提出的一个概念。这一概念允许质押者使用他们在以太坊上已经质押的资产,作为在其他PoS证明系统(也称为主动验证服务,Actively Validated Services,简称AVS)中的抵押品,来增强其加密经济的安全性
Solayer 是原生构建在 Solana 上的高级重新质押协议,旨在为链上去中心化应用程序(dApps)提供更高的网络带宽,同时增强 L1 安全性。
虽然 Solana Restaking 与以太坊的 Restaking 名字相同,但是两者业务的侧重点和目标客户群完全不同。
Eigenlayer 更侧重于对外提供服务(外源性 AVS),而 Solayer 更侧重于 Solana 内部应用提供服务(内源性 AVS),当然,Solayer 也可以对外扩展,目前只是 Solayer 的第一阶段。
Solayer 的再质押组件包括:
- 再质押池管理器:监督资产流动并转换为 Solayer 特定的代币(例如,sSOL)
- 委托管理器:处理跨验证器和 AVS 的权益分配
- 权益池:管理验证器选择和 MEV 增强的回报
- SVN 促进跨链互操作性,使得基于 Solana 的区块链能够共享安全性。
- 优化资源分配:根据权益高效地分配网络资源。
设想 Solana 是一条高速公路,拥有多个车道,不同车道的收费及拥堵程度不同,代表着不同的 Staking Tiers。而不同 DApp 作为通行的汽车所需速度和能接受的收费也有所差异。Solayer 通过接受用户资金委托充当着协调汽车(DApp)、高速公路各个车道(Validators)、各个车道的收费站(Restakers)等多方的角色。
参与 Solayer Restaking 的用户的收益来自于三个方面:
- Solana Staking Rewards;
- MEV 收入;
- 可能的 Solayer 代币空投;
Solana
PoH 工作流程,从一个随机值开始,运行 hash 函数,并将输出(output)作为输入(input)再次运行该函数。记录函数执行的次数(index)以及每次调用的结果(output)。次数,提供了顺序和时间两个维度的支持;将输出作为输入,依次头尾相连,形成了一条完整的证据链。
由于PoH流是可验证有序的,在进行hash计算时我们会加入额外数据,如:Hash次数,事件信息等。因此,无论数据消息以多快的速度或多少被记录到基于PoH的数据结构中,我们都可以通过输入指定的次数和事件信息等来确定hash(区块)的先后顺序
当生成一个新区块时,我们可以将块的数据和结构进行切片并同时在多核上并行运行验证,当验证完成后将会在Solana网络上进行广播。同时,由于区块的时序性,并且在各个节点中有一致的时间钟,我们很容易验证区块的有效性并且确定区块的先后顺序。
Leader(出块者)和 Validator(验证者)
两者实际上都是质押了 SOL 代币的全节点,只是在不同的出块周期内,Leader 会由不同的全节点来充当,而没有当选 Leader 的全节点会成为 Validator。
选择验证者方面, Solana 采用的是 PoS(权益证明)机制:
- 质押的代币数量
- 节点的性能
- 网络延迟
- 节点的可用性
1.生成交易: 用户创建并广播交易,包含交易的详细信息和数字签名。
2.PoH 链上的排序: 交易的哈希通过数字签名连接到 PoH 链上。由于 PoH 链是有序的,交易也就被排序了。
3.Validator 验证: Validator 负责验证交易的有效性,并选择哪些交易将包含在下一个区块中。Validator 的选择可能基于质押的代币数量、验证者的性能等因素。
4.交易打包成区块: Validator 选择的交易被打包成一个区块,其中包括一个特殊的块生产交易,它包含了当前 PoH 链的哈希以及其他信息。
5.区块传播和确认: 区块广播到整个网络,其他节点验证并确认区块的有效性。确认后,区块和其中包含的交易就被添加到整个区块链中。
分类:
- 用户账户:普通的钱包用户,类似于以太坊的 EOA 账户。
- 程序账户:执行指定任务的账户,存储了程序的二进制文件
- PDA(Program Derived Addresses):程序派生地址。该类账户存储程序的状态,即程序执行过程中存储的数据,跟以太坊的状态是一个概念,只不过在这里被拆分到了单独的账户中
- ATA(Associated Token Account)账户:关联账户。它是用户与特定的 SPL(Solana Program Library)Token 代币关联的账户,主要作用是允许用户方便管理他们持有的代币。
租金
用户支付租金以将数据存储在 Solana 区块链上。如果账户无法支付租金,系统将删除这个账户,以减少为那些不再维护的数据花费存储成本。如果账户中的资产超过两年租金的最低余额,那么这个账户可以免交租金 (0.0026 SOL)。
PDA指的是“程序派生地址”(Program Derived Address).这是一种特殊类型的地址,由 Solana 的程序生成,而不是由用户的私钥直接派生。PDA的主要目的是允许程序拥有和控制某些数据或资产,而不需要传统的私钥签名。
程序的地址, program_id 是公钥,但这个公钥没有对应的私钥,它不是从私钥派生/衍生出来的。
在区块链中,你需要一个私钥来证明你拥有一个公钥的所有权,同时你才能签字同意这个账户的转账请求。但如果这个账户的所有者不是一个人而是一个去中心化程序,那么把私钥放在这个程序上就不是一个好主意。这时我们就需要一个没有私钥的 PDA。 这样程序不需要私钥就能对一个地址进行签名操作
分为:
- **On-chain Programs:**这些是部署在 Solana 上的用户编写的程序,由开发者在 Solana 网络上根据具体业务场景开发的程序。
- **Native programs:**这些是集成到 Solana 核心模块中的程序。它们提供了验证节点(validator)运行所需的基本功能。native programs 只能通过网络范围内的软件更新进行升级。
- System Program 这个程序负责管理建立新账户以及在两个账户之间转账SOL
- Solana SPL 程序定义了一系列的链上活动,其中包括针对代币的创建,交换,借贷,以及创建质押池,维护链上域名解析服务等
- BPF Loader Program
- Vote program
程序特点:
代码和数据的分离。程序存储在程序账户中,它是无状态的,这意味着它们不会在内部存储任何状态,但它是可执行的executable,会执行相应的逻辑
交易(Transaction)
交易是一组原子性的操作,代表对区块链状态的一系列更改,包括转账代币、调用程序、更新账户状态等。每个交易都具有唯一的签名,并由一个或多个指令组成。交易费用的支付通常使用 Solana 的原生代币 SOL。
**签名:**每个交易都必须由一个或多个账户的私钥进行签名,以确保交易的身份和完整性。
指令(Instruction)
指令是交易中的一条具体指令,包含执行指令所需的具体数据,可以包括执行指令的程序唯一标识 program_id、账户列表、指令参数、配置信息等,用于执行一个特定的操作。
每个交易都包含:
- instructions:一个或多个指令
- blockhash:最新的块哈希值
- signatures:指令对应的发起人的签名
交互的最小单元就是交易中的指令(Instruction)。一个交易可以打包多个指令,指令指定调用哪个程序,要读取或修改哪些账户,以及执行程序需要的额外数据
交易费用
执行一个交易需要 Compute unit, 类似 gas fee. Solana 中交易手续费用于奖励节点,弥补节点的投入成本,同时也在一定程度上减少了网络中无效的交易
以下的一些操作会产生 Compute unit:
- 执行SBF指令
- 在程序之间传递数据
- 调用系统调用
- 记录日志
- 创建程序地址
- 跨程序调用
每笔交易都设定了最大的CU限制——”compute budget”以确保单笔交易的数据量不会过大从而造成网络的拥堵。超过限制后,指令运行将停止并返回错误,从而导致交易失败
手续费的计算公式为: CU数量 * CU价格 = 手续费用
交易的确认
一笔交易在根据在solana网络上的确认程度可以分为以下几类主要状态:
- 'processed': 查询已通过连接节点获得1次确认的最新区块
- 'confirmed': 查询已通过集群获得1次确认的最新区块
- 'finalized': 查询已由集群完成的最新区块
Solana 和 ETH 的区别
Solana使用的是Proof of History (PoH)与Proof of Stake (PoS)的结合,使得网络能够达到每秒数千笔交易处理速度。
- PoH ****是 Solana 独有的创新性机制,用于记录和验证区块的时间戳和顺序。PoH 通过在每个区块中引入时间证明,使得节点能够迅速达成共识,而无需等待整个网络确认
- 而 Solana 的 PoS 机制用于选择验证者。验证者是通过抵押一定数量的代币来参与网络验证的。持有更多代币的验证者有更大的机会被选中生成新的区块和验证交易
因此,PoH 确保区块的时间戳和顺序,PoS 则确保网络的安全性和抗攻击性
Solana支持对交易的并行处理,通过将交易分成多个子集,并将每个子集分配给不同的验证节点进行处理,从而实现交易的并行处理
以太坊 每笔交易串行执行,一笔交易执行完成再开始下一笔交易,状态依次更新,这也限制了以太坊吞吐量长期维持在每秒15笔~30笔,以牺牲性能换来安全性和一致性。不过以太坊交易处理能力的提升,主要是通过Layer2的Rollup方案来实现的, 但这也会导致 MEV 的问题
Solana它的交易费用是根据交易的复杂度和大小动态计算的,这意味着,交易费用会根据交易的执行成本而变化,而不是根据网络上的交易量变化
以太坊 的交易费用因网络拥堵而波动,这是一种纯粹的市场机制,网络中交易拥堵情况下你的交易要想被确认,就需要支付高昂的手续费
Solana中一切皆账户,它的智能合约也是账户,但细分为可执行账户和数据账户,前者存储程序的代码,用来执行特定的逻辑,后者存储状态,即程序运行时的数据。
以太坊 的智能合约本身就包含了合约的逻辑代码,以及状态数据。因此合约部署之后,就不支持直接的升级,只能通过代理的方式间接升级,即重新部署一套合约代码,生成新的合约地址,代理再指向这个新的合约地址。
Solana中一切皆账户,它的账户就像一个容器(或者电脑中的文件夹),可以包含程序代码、状态数据以及账户元数据。按照功能可划分为可执行账户和数据账户,前者为存储程序代码的账户,也称为程序账户。后者包括普通用户账户和其他非程序账户,这些账户存储了用户的余额、交易历史和其他相关数据,但它们本身不包含程序代码
以太坊 分为EOA账户和智能合约,前者是普通用户在以太坊网络中的账户,用于存储以太币(ETH)和进行交易。后者是包含智能合约代码和状态的账户,这些账户由合约创建并部署在以太坊区块链上。
- 学习 LXDAO 公开课视频 https://www.youtube.com/watch?v=_sofdktmD_8
- 单例取代工厂
在 Uniswap v3 中,我们为每个流动性池部署一个新合约,这使得创建流动性池和执行多池兑换的成本更高。 在 v4 中,我们将所有流动性池保存在一个「单例」合约中,这将很大程度上节约 Gas,因为代币交易将不再需要在不同合约中持有的流动性池之间转移代币。
- 引入 Hooks
引入 hooks 在流动性池的整个生命周期中的关键点执行指定的操作——例如在交易代币之前或之后,或者在 LP 头寸更改之前或之后。
Uniswap V4 目前支持在 8 个特定的位置进行 hook 回调:
-
beforeInitialize / afterInitialize
-
beforeModifyPosition / afterModifyPosition
-
beforeSwap / afterSwap
-
beforeDonate / afterDonate
-
闪电记账系统
使用 V4 中的闪电记账系统,每个操作(交换 / 部署)只会导致内部余额更新,其中余额以「delta」为单位计价。到交换结束时,它只会在一系列计算之后换出净「delta」余额。
在 V4 中,每一个操作会更新内部的一个净余额(delta),在所有操作结束时会校验该值是否为 0,必须保证该值为 0 才能交易成功。当 Flash accounting 和 Singleton 结合时,可以大大简化多跳交易。
常数乘积函数是自动化做市商(AMM)为资产对定价的方式。该函数构造了一个双曲线,其中对于某个常数 k,有 x = k/y。
存款人,称为流动性提供者(LPs),是这些流动性池的种子。LPs根据每个AMM的预定代币权重(在Uniswap的案例中--每个代币50%)将其代币存入流动性池。
集中流动性
Uniswap V3 引入了集中流动性的概念,旨在打造资本效率更高的市场。集中流动性允许流动性提供者(LPs)设定他们愿意提供流动性的价格区间,从而使资本不再均匀分散于整个恒定价格公式曲线,而是可以聚焦于市场活动更为频繁的较窄价格范围内。此外,集中流动性通过向 LPs 提供更多手续费以及增强市场深度,进一步提升了资本效率
I.价格滑点(Price Slippage)
II.抢跑(Front-running)
三明治攻击
MEV 是 Maximal (or Maximum) Extractable Value 的缩写。在一个区块内,经济能量通过所有传入交易流入区块链。MEV 提取则是通过重新排序、包含和排除交易,从这些能量中收割以谋取金钱利益的行为。
搜索者通过链上数据和内存池寻找 MEV 机会
- 内存池是所有待处理交易暂存的地方,等待矿工提取并打包进下一个区块。由于该池对公众开放,搜索者会监控它以发现可能带来利润的交易
- 链上数据同样公开,亦可通过分析发现机遇。例如,搜索者可以监控以太坊在去中心化交易所(DEXs)上的价格
III.无常损失(Impermanent Loss)
DeFi 借贷不仅仅是通过存款赚取些许收益,更关乎实现更高程度的自我主权
DeFi 借贷在多个方面超越了传统金融借贷
- 可信中立性:用户无需前往中心化的第三方机构,即可用其资产进行借贷。智能合约全权处理包括利率、抵押和清算在内的所有事宜。
- 无许可:每个人都能平等获得贷款,任何人都可以成为出借人
- 速度:用户无需再等待贷款审批,这加快了放款流程。只要用户拥有必要的抵押物,即可借款。用户仅需准备资金和网络连接即可借款
- 透明度:由于所有交易、资金、合约及活动均在链上进行,任何人都能看到系统变动及市场状况的变化
- 可用性:应用程序可全天候从任何联网计算机访问,无需考虑银行假日,也无需员工执行交易。
- 税务影响:借贷协议允许用户在不对其抵押品产生应税事件的情况下,获得加密资产的杠杆敞口
-
APR(年化利率):
- APR 是不考虑复利的年化利率。它表示一年中借贷的利率,但不包括因利息复投而增加的收益。
- 公式:APR = (周期利率) × (一年中的周期数)
例如,如果你每月获得 1% 的利率,那么 APR = 1% × 12 = 12%。
-
APY(年化收益率):
-
APY 则考虑了复利的影响。它表示在一年中,如果利息不断复投,最终的年化收益率是多少。
-
公式:APY = (1 + 周期利率) ^ (一年中的周期数) - 1
例如,假设每月的利率仍然是 1%,那么 APY = (1 + 0.01) ^ 12 - 1 ≈ 12.68%。
-
流动性池是由智能合约锁定的代币对或组合,例如 USDC/ETH 或 DAI/USDC/USDT/FEI。这些池为协议上发生的交易提供流动性,并使用户能够兑换进出池内特定的代币
池流动性越深,即池中每种代币数量越多,交易对池内代币相对数量及代币交易时价格变动的影响就越小。换言之,池中代币越多,每次交易产生的滑点就越少。滑点是指从一种代币兑换到另一种代币时,交易中损失的价值量
AMM 通过使用流动性池而非买卖双方市场来实现代币交易,是支撑去中心化交易所的核心技术
AMM 使用户能够自动且无需许可地进行交易,无需中介介入。这正是 AMMs 的真正力量所在:加密货币用户不再受制于中心化交易者和订单簿
AMM 主要有三种类型:Uniswap、Curve 和 Balancer 上的那些。Uniswap 的模式最为常见,允许用户以 50/50 的比例创建任意两种代币的流动性池。Curve 则针对相似资产创建流动性池,而 Balancer 支持最多包含八种不同代币的资产池。
稳定费是针对借出资金余额收取的可变年费率。其概念类似于信用卡的可变年利率,例如,若你借入 1,000 DAI,稳定费率为 2.5%,一年后你将欠 Maker 1,025 DAI。若在一年内还清贷款,所欠利息将按比例减少,并计算至还款交易发起的那一刻
抵押率表示为贷款所承诺抵押品价值与未偿债务价值之比的百分比
Collateralization Ratio = (Collateral Value/Debt Value) x 100
借贷协议通常会设定最低抵押率以超额抵押债务,即要求提供的抵押品价值远超所借贷款。若抵押率降至该贷款协议规定的最低要求(即清算比率)以下,贷款将被视为抵押不足,并可能被自动清算。
利率模型用于确定资产供应者因其贡献而获得的报酬,以及借款者必须为所借资产支付的金额。该模型试图平衡三个变量
- 池流动性
- 借款利率
- 供应速率
DeFi 中常见的利率模型是一种分段函数,呈现出两个不同的斜率。其设计理念在于营造一个资金池既高效利用资本,又具备足够流动性供用户进出池的环境。不同资金池针对不同的利用率目标,但总体而言,利率作为工具旨在维持目标利用率。
在上面的例子中,该池的目标是达到 90%的利用率,这一点通过 90%处的拐点得以体现。
如果利用率较低(介于 0%至 90%之间),模型将通过低借款利率激励借贷。这些低利率会吸引用户从资金池中借取资产,从而提高利用率
然而,若利用率较高(超过 90%),借款利率会急剧上升,使得借款成本增加。此举激励借款者归还资产,以规避高利率,进而将利用率降至 90%以下。
当存入的抵押品价值降至抵押率低于最低要求时,借贷平台会自动出售借款人的抵押物以偿还未结债务及可能产生的费用或罚金。债务清偿后剩余的任何抵押品将返还给借款人。
清算价格 = (未偿还债务 x (最低抵押率/100)) / 抵押代币数量
闪电贷允许用户在极短时间内(同一区块内)无需提供抵押物即可借取资产。这类贷款通常用于不同 DeFi 协议间的套利机会。不存在资金损失的风险,因为若贷款未能在同一交易内偿还,该贷款即视为无效。
一般来说,只要您需要一笔临时贷款且确信能在交易结束时偿还,就可以使用闪电贷
-
MakerDAO
MakerDAO 是一个去中心化自治组织,旨在管理以太坊上的 Maker 协议,提供稳定币 DAI 和衍生金融体系。 RWA 作为 MakerDAO 的重要议题,被视为解决抵押品价值不稳定问题的关键方案,以支持稳定币 DAI 的大规模采用和可持续发展 对于 MakerDAO 这样的巨型借贷协议来说,关键的考量因素是:抵押品的价值稳定
-
RWA
现实世界资产代币化(Real World Asset Tokenization),即将现实世界中的资产通过区块链技术进行代币化表示。现实世界资产存在于链下,所有者可从中获得预期收益,相关权属收益由法律体系规范。 RWA 最重要的是资产端和资金端,两端都有各自的需求。
资产端需求:
- 现实世界资产端的需求是融资,无论是通过 Security Token Offering 的方式,还是通过抵押借贷(如 Centrifuge)的方式。
- 资产融资的本质是获取资本的来源变为 DeFi 的即时流动性,以及利用区块链和智能合约在融资渠道上实现降本增效。
资金端需求:
- 加密资本资金端的需求是投资,关键是捕获风险低、稳定生息、可规模化、与加密波动无关的现实世界资产。
- 从稳定的角度来看,稳定币是关键用例,作为交易媒介,不受加密波动影响;从稳定 + 生息 + 规模化的角度来看,美债 RWA 是关键用例,帮助捕获无风险收益。
- RWA 能够创造 U 本位的生息资产,成为加密世界的一种新的资产类别,这种资产类别与 DeFi 的可组合性能够带来很大的想象空间,如生息稳定币项目和生息 Layer 2 项目。
-
DAI(可简单理解成以太坊上的美元) DAI 是 MakerDAO 协议提供的第一个去中心化的基础稳定货币,可简单理解成以太坊上的美元
DAI 系统运行逻辑:用户通过抵押资产创建 Vault 生成 DAI,涉及存入、借出、偿还和赎回四个操作,未偿还时会涉及利率调整和清算。