Solana[part22]_DeFi项目拆解

Solana[part22]_DeFi项目拆解
SoniaChenDeFi相关概念
什么是 DeFi?
- 定义:去中心化金融(Decentralized Finance,简称 DeFi)是基于区块链技术,提供无需中介的金融服务,如借贷、交易、保险等。
- 特点:
○ 去中心化:无需传统金融机构
○ 开放性:任何人都可以参与
○ 透明性:所有交易记录公开可查
什么是 Swap?
- 定义:Swap 是一种去中心化交易功能,允许用户在无需中介的情况下直接交换两种加密资产。
- 常见场景:
○ 兑换小额代币(如将 USDC 换成 ETH)。
○ 调整投资组合。
○ 提供交易流动性。
其他概念
1. AMM(Automated Market Maker,自动做市商)
- 权威定义:
一种基于算法的去中心化交易机制,通过数学公式(如恒定乘积公式x*y=k)自动匹配买卖订单、定价资产,无需传统订单簿和中心化机构。 - 通俗解释:
把“交易”变成“从资金池里取币”。比如你想拿ETH换USDT,不用等有人卖USDT给你,直接从一个存着ETH和USDT的池子里兑换,价格由公式自动算(池里ETH少了,价格就涨;USDT少了,价格就跌)。
2. 流动性池(Liquidity Pool)
- 权威定义:
去中心化交易所中,用户存入的两种(或多种)代币组成的资金池,为交易提供流动性(即交易的“货源”),支撑AMM的运行。 - 通俗解释:
大家凑钱建的“公共钱包”,里面存着两种币(比如ETH和USDT)。有人交易时,就从这个钱包里拿币、放币。你往池子里存钱,就能分交易手续费。
3. LP Token(Liquidity Provider Token,流动性提供者代币)
- 权威定义:
用户向流动性池提供资金后,获得的“份额凭证”,代表其在池中的资产占比,可用于赎回本金、分配交易费收益,或参与其他DeFi协议。 - 通俗解释:
你往资金池里存了1个ETH和1000 USDT,系统给你发个“存单”(比如LP Token)。拿着这个存单,你可以随时把自己的ETH和USDT拿回来,还能分到池子产生的手续费。就像银行存定期给的存单,只是更灵活。
4. 滑点(Slippage)
- 权威定义:
交易中实际成交价格与预期价格的偏差,源于交易对流动性池的冲击(交易规模越大,滑点通常越高)。 - 通俗解释:
你以为1 ETH能换1800 USDT,结果实际只换到1790 USDT——差的10 USDT就是滑点。因为你买的时候,把池子里的USDT买走了一部分,导致USDT变贵,ETH相对贬值,价格就“滑”了。
5. 交易费(Trading Fee)
- 权威定义:
用户在去中心化交易所交易时支付的费用,通常按交易金额的比例收取(如0.3%),大部分分配给流动性提供者(LP)作为收益。 - 通俗解释:
每次交易扣的“手续费”。比如你用1万USDT买ETH,扣0.3%就是30 USDT,这30 USDT会分给所有往池子里存钱的人(相当于给他们的“打工费”)。
6. 价格影响(Price Impact)
- 权威定义:
单笔交易对流动性池内资产价格的影响程度,交易规模占池内资产比例越高,价格影响越大。 - 通俗解释:
你买的量越大,把池子里的币买得越“空”,价格就涨得越凶。比如池里只有10个ETH,你一下买5个,剩下的5个ETH价格会突然飙升——这就是你的交易对价格的“冲击”。
7. 无常损失(Impermanent Loss,IL)
- 权威定义:
流动性提供者因池内代币价格波动,导致持有的LP Token价值 低于持有原始代币的价值 的损失(若价格回归,损失可能消失,故称为“无常”)。 - 通俗解释:
举个例子:- 你存了1 ETH(2000 USDT)和2000 USDT进池子,此时ETH价格2000 USDT。
- 后来ETH涨到4000 USDT,池子里的ETH变少、USDT变多(因为公式
x*y=k会让价格自动调整)。 - 如果你当初不存池子,直接拿着1 ETH,现在能值4000 USDT;但存池子后,赎回的ETH+USDT总价值可能只有3500 USDT——差的500 USDT就是无常损失。
- 但如果ETH又跌回2000 USDT,这个损失会消失(所以叫“无常”)。
最容易理解的通俗解释🤔
通过之前学习的ETF质押来进行理解
如果用生活场景类比,二者的区别:
- LP 提供流动性 ≈ 开一家 “货币兑换小店”:
你要开店,必须同时备着 “人民币” 和 “美元”(两种资产),不然客人想换美元你没货,想换人民币你也没货。客人来兑换时,会给你手续费(你的收益);但如果人民币和美元汇率波动太大(比如人民币突然升值),你手里的美元可能贬值,导致你 “手里的钱不如当初直接拿着不开店”(这就是无常损失)。 - ETF 质押 ≈ 把钱存银行定期:
你把 “1 万元定期存款单”(类比 ETF 份额)交给银行,银行用你的钱去放贷,给你付利息(你的收益)。期间你不能随便取走这笔钱(流动性限制),但到期后你能完整拿回 1 万元本金 + 利息,不会因为银行放贷的操作,把你的 “人民币” 变成 “美元”(不会换资产类型),也不会有 “汇率波动导致本金变相缩水” 的问题(除非存款利率跑不赢通胀,但这和无常损失是两回事)。
说白了,LP 就像是在一个池子里放着两种钱,比如美元和人民币。你要是当 LP,就靠别人在这个池子里换钱(也就是 swap)赚点手续费。你的这两种钱相当于押在池子里了,人家会给你点 LP token,后面想把钱拿出来,就用这 LP token 换回去就行。
那刚开始咋投呢?得按当时的价格比例来。就像那个公式 x*y=k 说的那样 —— 如果你是又创池子又当 LP 的人,最开始放的钱肯定得跟外面市场价对得上,比如外面 1 美元换 7 人民币,你创池子时就得放 10 美元配 70 人民币这种比例,不然一下子就被人薅羊毛了。
要是后面再有人来当 LP,就不能看外面市场价了,得按池子里现在的比例来,这也是那个 x*y=k 算出来的。
至于那个无常损失,这么想就对了:比如外面美元涨价了,1 美元能换 14 人民币了,但池子里的价格还没跟上,还是 1:7。这时候肯定有人来套利啊 —— 用自己的人民币,按池子里 1:7 的老比例换美元,换完去外面按 1:14 卖掉,这不就赚了吗?
这么一来,池子里的美元就变少了,人民币变多了。就像原来池子里是 10 美元 ×70 人民币 = 700(这个 k 值不变),有人拿 28.98 人民币来换美元,合约就按 (10 - 换走的美元)×(70+28.98)=700 来算,最后他能换走大概 2.93 美元。
交易完之后,池子里就剩 7.07 美元和 98.98 人民币了,k 还是 700,但比例变成 1:14 了(跟外面市场价对上了)。这时候你要是把池子里的钱换成外面的价,就会比最开始直接拿着这两种钱不动少点,这就是无常损失。不过还好有手续费,要是手续费赚得多,说不定还能补回来
拆解DeFi项目——raydium-cp-swap 核心指令详解
首先有四个角色需要明确:
结合项目代码和功能设计,该项目主要涉及 4 个核心角色,各自承担不同职责并参与费用分配,具体如下:
1. 流动性提供者(LP 持有者)
- 角色:为交易池提供代币流动性的用户/地址。
- 核心行为:通过
deposit指令向池子里注入两种代币(如 token0 和 token1),获得对应的 LP 代币作为凭证;后续可通过withdraw指令销毁 LP 代币,取回对应的代币和交易费分成。 - 收益来源:交易产生的手续费中,扣除协议费(
protocol_fee)和资金费(fund_fee)后的剩余部分,按 LP 持有比例分配。
2. 协议所有者(Protocol Owner)
- 角色:整个 AMM 协议的管理者(如项目团队、多签地址或 DAO)。
- 核心行为:通过
create_amm_config初始化协议配置,设定protocol_fee_rate;通过collect_protocol_fee指令提取累积的协议费。 - 收益来源:每笔交易费按
protocol_fee_rate比例抽取的费用,用于协议开发、维护等运营成本。 - 权限:可通过
update_amm_config更换自身地址或调整费率(需符合权限校验)。
3. 资金所有者(Fund Owner)
- 角色:管理专项基金的账户(如生态基金、社区国库)。
- 核心行为:通过
collect_fund_fee指令提取累积的资金费,用于生态建设(如补贴、激励等)。 - 收益来源:每笔交易费按
fund_fee_rate比例抽取的费用,用途受限于生态特定需求。 - 权限:由
amm_config配置指定,可独立于协议所有者更换(通过update_amm_config)。
4. 池子创建者(Pool Creator)
- 角色:发起创建交易池的用户/地址(通过
initialize或initialize_with_permission指令)。 - 核心行为:设定初始流动性、选择交易对,支付创建费用(
create_pool_fee)。 - 特殊权限:部分场景下可通过
collect_creator_fee指令提取特定费用(代码中明确约束“仅创建者可调用”),具体逻辑需结合业务场景判断(可能是对创建者的额外激励)。
总结
四个角色的核心区别在于 职责和收益来源:
- LP 持有者:提供流动性,赚剩余交易费;
- 协议所有者:管理协议,赚协议运营费;
- 资金所有者:管理生态基金,赚专项用途费;
- 池子创建者:发起建池,可能获得创建者专属费用。
这种角色拆分是为了精细化管理收益分配,适配协议运营、生态建设、用户激励等不同需求。
admin
create_amm_config
update_amm_config
update_pool_status
collect_protocol_fee
collect_fund_fee
User
initialize(创建流动池)
deposit(添加流动性)
withdraw(提现-减少流动性)
swap_base_input(基于输入数量的代币交换)
swap_base_output(基于输出数量的代币交换)







