$100如何撬動(dòng)$650萬(wàn)?Sonne Finance攻擊分析
Sonne Finance 攻擊分析:$100 如何撬動(dòng) $650 萬(wàn)?本次攻擊事件的本質(zhì)是 market (soToken) 被創(chuàng)建出來(lái)時(shí),攻擊者進(jìn)行了第一筆抵押鑄造的操作,以少量 underlying token 鑄造了很少的 soToken,導(dǎo)致 soToken 的「 totalSupply 」數(shù)值太小。攻擊者繼而利用了 Solidity 合約精度損失這個(gè)漏洞,再搭配直接往 soToken 合約發(fā)送 underlying token(不會(huì)鑄造 soToken,也就意味著「 totalSupply 」不變,「 totalCash 」變大),而不是抵押 + 鑄造的方式存入 underlying token。這樣的操作使得合約中「 totalCash 」 變量變大,但是「 totalSupply 」 保持不變,從而導(dǎo)致 exchangeRate 變大。最終攻擊者在贖回 underlying token 時(shí),需要銷(xiāo)毀的 soToken 少于抵押時(shí)鑄造的 soToken,攻擊者利用賺取的 soToken 去其他的 soToken(比如 soWETH、soUSDC)中借出 underlying token WETH、USDC,最終獲利高達(dá) 2000 萬(wàn)美元。
2024 年 5 月 15 日,Sonne Finance 在 Optimism 鏈上遭受攻擊,損失高達(dá) 2 千萬(wàn)美元。攻擊發(fā)生后,X 上 @tonyke_bot 用戶(hù)發(fā)推表示,其用約 100 美元保護(hù)了 Sonne Finance 的代幣抵押池(也稱(chēng)為 market,類(lèi)似于 Compound 中的 cToken)中剩余的約 650 萬(wàn)美元。
(https://twitter.com/tonyke_bot/status/1790547461611860182)
Sonne Finance 項(xiàng)目方發(fā)現(xiàn)攻擊之后,迅速暫停了 Optimism上的所有 markets,并表示 Base 上的 markets 是安全的。
(https://twitter.com/SonneFinance/status/1790535383005966554)
攻擊簡(jiǎn)述
Sonne Finance 是 Optimism 上的一個(gè) fork 了 Compound V2 的去中心化借貸協(xié)議,供個(gè)人、機(jī)構(gòu)和協(xié)議訪(fǎng)問(wèn)金融服務(wù)。Sonne Finance 協(xié)議將用戶(hù)的 token 資產(chǎn)聚合起來(lái),形成了借貸流動(dòng)性池,為用戶(hù)提供了一個(gè)類(lèi)似銀行的借貸業(yè)務(wù)。與 Compound 一樣,協(xié)議參與者們可以將其持有的 token 抵押到 Sonne Finance 的借貸流動(dòng)性池中,同時(shí)獲得憑證 soToken(與 cToken 一樣)。而 soToken 是一種生息資產(chǎn)憑證,隨著區(qū)塊的推進(jìn)會(huì)產(chǎn)生一定的收益,同時(shí)還會(huì)獲得 SONNE token 激勵(lì)。而參與者憑借著手里的 soToken 還能從 Sonne 借貸資產(chǎn)池中借出其他 token,例如參與者可以抵押一定數(shù)量的 USDC 獲得 soUSDC 憑證,隨后借貸出WETH用于經(jīng)一步的流通。Sonne Finance 協(xié)議中的抵押借貸可以是多對(duì)多的資產(chǎn)關(guān)系,在抵押借貸的過(guò)程中,協(xié)議會(huì)自動(dòng)計(jì)算參與者地址的健康度(Health Factor),當(dāng)健康度低于 1 時(shí),該地址的抵押品將支持被清算,而清算者也能獲得一定的清算獎(jiǎng)勵(lì)。
用戶(hù)存入的 underlying token 與鑄造的 soToken 的數(shù)量關(guān)系,主要與一個(gè)叫做 exchangeRate 的變量有關(guān),這個(gè)變量粗略可以用來(lái)表示每個(gè) soToken 價(jià)值多少 underlying token。exchangeRate 的計(jì)算公式如下:
在上述公式中,totalCash 是指 soToken 持有的 underlying token 的數(shù)量,totalBorrows 是指某 market 中被借出去的 underlying token 的數(shù)量,totalReserves 是指總儲(chǔ)備金數(shù)量(其中包含借款人支付的利息),totalSupply 是指鑄造的 soToken 的數(shù)量。
在贖回時(shí),用戶(hù)可以指定想要贖回的 underlying token 的數(shù)量redeemAmount,來(lái)計(jì)算需要銷(xiāo)毀掉的soToken的數(shù)量redeemTokens,計(jì)算方式大概為「 redeemTokens = redeemAmount / exchangeRat 」,注意這里并沒(méi)有對(duì)精度損失做處理。
本次攻擊事件的本質(zhì)是 market (soToken) 被創(chuàng)建出來(lái)時(shí),攻擊者進(jìn)行了第一筆抵押鑄造的操作,以少量 underlying token 鑄造了很少的 soToken,導(dǎo)致 soToken 的「 totalSupply 」數(shù)值太小。攻擊者繼而利用了 Solidity 合約精度損失這個(gè)漏洞,再搭配直接往 soToken 合約發(fā)送 underlying token(不會(huì)鑄造 soToken,也就意味著「 totalSupply 」不變,「 totalCash 」變大),而不是抵押 + 鑄造的方式存入 underlying token。這樣的操作使得合約中「 totalCash 」 變量變大,但是「 totalSupply 」 保持不變,從而導(dǎo)致 exchangeRate 變大。最終攻擊者在贖回 underlying token 時(shí),需要銷(xiāo)毀的 soToken 少于抵押時(shí)鑄造的 soToken,攻擊者利用賺取的 soToken 去其他的 soToken(比如 soWETH、soUSDC)中借出 underlying token WETH、USDC,最終獲利高達(dá) 2000 萬(wàn)美元。
攻擊中涉及的關(guān)鍵地址
攻擊準(zhǔn)備交易:
https://optimistic.etherscan.io/tx/0x45c0ccfd3ca1b4a937feebcb0f5a166c409c9e403070808835d41da40732db96
攻擊獲利交易:
https://optimistic.etherscan.io/tx/0x9312ae377d7ebdf3c7c3a86f80514878deb5df51aad38b6191d55db53e42b7f0
攻擊 EOA 相關(guān)地址:
0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb
0xae4a7cde7c99fb98b0d5fa414aa40f0300531f43
攻擊者(合約)相關(guān)地址:
0xa78aefd483ce3919c0ad55c8a2e5c97cbac1caf8
0x02fa2625825917e9b1f8346a465de1bbc150c5b9
underlying token(VELO Token V2):
0x9560e827af36c94d2ac33a39bce1fe78631088db
漏洞合約(soVELO,類(lèi)似于 Compound 的 cToken):
0xe3b81318b1b6776f0877c3770afddff97b9f5fe5
X 上 @tonyke_bot 用戶(hù)救援 交易:
https://optimistic.etherscan.io/tx/0x816f9e289d8b9dee9a94086c200c0470c6456603c967f82ab559a5931fd181c2
攻擊流程分析
前情提要
Sonne Finance 項(xiàng)目方最近通過(guò)了一項(xiàng)將 VELO market 添加到 Sonne Finance 的提案(https://twitter.com/SonneFinance/status/1786871066075206044),并通過(guò)多簽錢(qián)包安排了五筆在兩天之后執(zhí)行的交易(https://optimistic.etherscan.io/tx/0x18ebeb958b50579ce76528ed812025949dfcff8c2673eb0c8bc78b12ba6377b7),這五筆交易是用來(lái)創(chuàng)建 VELO market(soVELO 合約),并設(shè)置該 market 的一些關(guān)鍵配置,比如設(shè)置利率模型,設(shè)置價(jià)格預(yù)言機(jī),設(shè)置抵押因子等。VELO market 創(chuàng)建之后,用戶(hù)可以存入 VELO 代幣,以鑄造 soVELO 代幣,soVELO 代幣又可以用來(lái)借貸其他 soToken。
攻擊準(zhǔn)備
攻擊準(zhǔn)備階段主要是攻擊者在提案兩天鎖定時(shí)間結(jié)束后,根據(jù) Sonne Finance 項(xiàng)目方提案中的信息,創(chuàng)建 VELO market(soVELO 合約),設(shè)置關(guān)鍵的配置,并通過(guò)抵押 VELO 代幣進(jìn) soVELO 合約來(lái)鑄造 soVELO 代幣,同時(shí)也將自己持有的 VELO 代幣以直接發(fā)送給 soVELO 合約的方式,來(lái)增大 exchangeRate,為后續(xù)攻擊獲利做準(zhǔn)備。
具體步驟如下:
攻擊者在兩天鎖定時(shí)間結(jié)束后,首先將提案中安排的前四筆交易的操作打包到一筆交易中(交易 0x45c0cc),用來(lái)創(chuàng)建 VELO market(soVELO 合約),并設(shè)置好關(guān)鍵的配置。VELO market 初始化時(shí),exchangeRate 被設(shè)置為「 200,000,000,000,000,000,000,000,000 」。
攻擊者調(diào)用 soVELO 合約的「 mint 」函數(shù)來(lái)存入 VELO 代幣,并鑄造 soVELO 代幣,攻擊者指定「 mintAmount 」為「 400,000,001 」(VELO 代幣的數(shù)量)。從函數(shù)「 exchangeRateStoredInternal 」可以看出,由于此時(shí) soVELO 代幣的「 _totalSuppl 」是 0,因此 exchangeRate 即為第 1 步中設(shè)置的值。根據(jù)公式「 mintTokens = actualMintAmount / exchangeRate 」,此時(shí)計(jì)算出的應(yīng)該鑄造的 soVELO 代幣的數(shù)量為 2。簡(jiǎn)而言之,這一步攻擊者向 soVELO 合約中存入數(shù)值為「 400,000,001 」 的 VELO 代幣,攻擊者獲得數(shù)值為 2 的 soVELO 代幣。
soVELO.mint:
攻擊者以直接給 soVELO 合約發(fā)送 VELO 代幣的方式,給 soVELO 合約發(fā)送了數(shù)值為「 2,552,964,259,704,265,837,526 」的 VELO 代幣,此時(shí) soVELO 合約持有的 VELO 代幣增多,但是由于沒(méi)有新的 soVELO 代幣的鑄造,因此 totalSupply 保持不變,也就意味著此時(shí)根據(jù) exchangeRate 計(jì)算公式計(jì)算出的 exchangeRate 會(huì)變大。
攻擊者將持有的 soVELO 代幣轉(zhuǎn)移多次,最終轉(zhuǎn)移給了另一個(gè)攻擊 EOA 0xae4a。
攻擊獲利
攻擊獲利階段主要是攻擊者執(zhí)行提案的第五筆交易,并通過(guò)閃電貸借出 VELO 代幣直接發(fā)送給 soVELO 合約,以進(jìn)一步增大 exchangeRate。然后攻擊者利用自己手里的數(shù)值為 2 的 soVELO 代幣,去其他的 soToken(比如 soWETH,soUSDC 等)合約中借出了 WETH、USDC 等 underlying token,這些部分成為了攻擊者獲利。緊接著攻擊者去 soVELO 合約中贖回自己的 underlying token,由于 exchangeRate 變大,以及計(jì)算贖回需要銷(xiāo)毀的 soVELO 代幣時(shí)的精度損失問(wèn)題,最終使得攻擊者僅僅使用數(shù)值為 1 的 soVELO 代幣就贖回了此前存入的幾乎全部的 VELO 代幣,可以理解為攻擊者利用多得的數(shù)值為 1 的soVELO 代幣,通過(guò)從其他 soToken 借貸賺取了 WETH、USDC 等 underlying token。攻擊者使用同樣的手法多次重復(fù)攻擊,最終獲利巨大。
具體步驟如下:
攻擊者執(zhí)行題案中的第五筆交易,設(shè)置提案中規(guī)定的借貸因子。
攻擊者從 VolatileV2 AMM - USDC/VELO 池子中閃電貸出數(shù)值為「 35,469,150,965,253,049,864,450,449 」的 VELO 代幣,這會(huì)觸發(fā)攻擊者的 hook 函數(shù)。在 hook 函數(shù)中,攻擊者繼續(xù)執(zhí)行攻擊操作。
攻擊者將自己持有的 VELO 代幣發(fā)送給 soVELO 合約,以進(jìn)一步增大 exchangeRate。目前 soVELO 合約中一共有數(shù)值為「 35,471,703,929,512,754,530,287,976 」的 VELO 代幣(攻擊者三次轉(zhuǎn)入的 VELO 代幣和)。
攻擊者創(chuàng)建新的合約 0xa16388a6210545b27f669d5189648c1722300b8b,在構(gòu)造函數(shù)中,將持有的 2 個(gè) soVELO 代幣轉(zhuǎn)給新創(chuàng)建的合約 0xa163(以下稱(chēng)為攻擊者 0xa163)。
攻擊者 0xa163 以持有的 soVELO 代幣,從 soWETH 中借出數(shù)值為「 265,842,857,910,985,546,929 」的 WETH。
攻擊者 0xa163 調(diào)用 soVELO 的「 redeemUnderlying 」函數(shù),指定贖回 VELO 代幣的數(shù)值為「 35,471,603,929,512,754,530,287,976 」(幾乎是所有攻擊者此前轉(zhuǎn)入或者抵押進(jìn) soVELO 合約的 VELO 代幣數(shù)量),此時(shí)需要根據(jù)公式「 redeemTokens = redeemAmountIn / exchangeRate 」來(lái)計(jì)算贖回所需要銷(xiāo)毀的 soVELO 代幣的數(shù)量。
從「 exchangeRateStoredInternal 」函數(shù)可以看出,由于此時(shí) _totalSupply 是 2 不是 0,因此需要計(jì)算 exchangeRate 的值,通過(guò)公式「 exchangeRate = (totalCash + totalBorrows - totalReserves) / totalSupply 」計(jì)算出,目前的 exchangeRate 為「 17,735,851,964,756,377,265,143,988,000,000,000,000,000,000 」,這個(gè)值遠(yuǎn)遠(yuǎn)大于設(shè)置的初始 exchangeRate 「 200,000,000,000,000,000,000,000,00 」。
根據(jù)新的 exchangeRate 計(jì)算出的「 redeemTokens 」的值為「 1.99 」,由于 Solidity 向下取整的特性,「 redeemTokens 」的值最終為 1。也就意味著攻擊者 0xa163 使用數(shù)值為 1 的 soVELO 代幣,贖回了此前存入的幾乎所有的 VELO 代幣。同時(shí)攻擊者 0xa163 也賺取了從 soWETH 中借出的數(shù)值為「 265,842,857,910,985,546,929 」的 WETH。
soVELO.redeemUnderlying:
soVELO.exchangeRateStoredInternal:
攻擊者 0xa163 將借到的 WETH 和贖回的 VELO 代幣全部轉(zhuǎn)給了上層攻擊者,然后自毀。
攻擊者調(diào)用 soWETH 的「 liquidateBorrow 」函數(shù),用來(lái)清算前面新創(chuàng)建的合約 0xa163 借貸的部分資產(chǎn),目的是拿回鎖定住的數(shù)值為 1 的 soVELO 代幣。目前攻擊者只持有數(shù)值為 1 的 soVELO 代幣。
攻擊者調(diào)用 soVELO 的「 mint 」函數(shù),再一次抵押鑄造 soVELO 代幣,目的是湊夠數(shù)值為 2 的 soVELO 代幣,然后再次執(zhí)行上述第 3-8 步,獲利其他的 undeylying token。
攻擊者執(zhí)行數(shù)次第 9 步的操作,還掉閃電貸,獲利離場(chǎng)。
$100 如何撬動(dòng) $650 萬(wàn)
攻擊發(fā)生后,X 上 @tonyke_bot 用戶(hù)在交易 0x0a284cd 中,通過(guò)抵押 1144 個(gè) VELO 代幣到 soVELO 合約中,鑄造了 0.00000011 個(gè) soVELO。這樣操作之所以能夠阻止攻擊者進(jìn)一步攻擊,是因?yàn)檫@筆交易改變了 soVELO 中 totalSupply 的大小和持有的 VELO 代幣的數(shù)量 totalCash,而 totalSupply 增長(zhǎng)對(duì)于計(jì)算 exchangeRate 產(chǎn)生的影響大于 totalCash 增長(zhǎng)產(chǎn)生的影響,因此 exchangeRate 變小,從而導(dǎo)致攻擊者進(jìn)行攻擊時(shí),無(wú)法再利用精度損失賺取 soVELO,導(dǎo)致攻擊無(wú)法再進(jìn)行。
資金追蹤
攻擊者攫取非法收益后不久便將資金進(jìn)行了轉(zhuǎn)移,大部分資金轉(zhuǎn)移到了以下 4 個(gè)地址當(dāng)中,有的是為了換個(gè)地址繼續(xù)攻擊,有的是為了洗錢(qián):
0x4ab93fc50b82d4dc457db85888dfdae28d29b98d
攻擊者將 198 WETH 轉(zhuǎn)入了該地址,然后該地址采用了相同的攻擊手法,在下列交易中獲得非法收益:
攻擊結(jié)束后,該地址將上述非法所得轉(zhuǎn)給了 0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb。
0x5d0d99e9886581ff8fcb01f35804317f5ed80bbb
攻擊者將 724277 USDC、2353 VELO 轉(zhuǎn)入了該地址,并將 USDC 兌換成了Ether。隨后立即將部分資金轉(zhuǎn)入了 Stargate 跨鏈橋,剩下大部分非法資金殘留在該地址中:
0xbd18100a168321701955e348f03d0df4f517c13b
攻擊者將 33 WETH 轉(zhuǎn)入了該地址,并采用 peel chain 的方式嘗試洗錢(qián),洗錢(qián)鏈路如下:
0xbd18100a168321701955e348f03d0df4f517c13b -> 0x7e97b74252b6df53caf386fb4c54d4fb59cb6928 -> 0xc521bde5e53f537ff208970152b75a003093c2b4 -> 0x9f09ec563222fe52712dc413d0b7b66cb5c7c795。
0x4fac0651bcc837bf889f6a7d79c1908419fe1770
攻擊者將 563 WETH 轉(zhuǎn)入了該地址,隨后轉(zhuǎn)給了 0x1915F77A116dcE7E9b8F4C4E43CDF81e2aCf9C68,目前沒(méi)有進(jìn)一步行為。
攻擊者本次洗錢(qián)的手段相對(duì)來(lái)說(shuō)較為專(zhuān)業(yè),手法呈現(xiàn)多樣性趨勢(shì)。因此對(duì)于我們 Web3 參與者來(lái)說(shuō),在安全方面要持續(xù)不斷地提高我們的反洗錢(qián)能力,通過(guò) KYT、AML 等相關(guān)區(qū)塊鏈交易安全產(chǎn)品來(lái)提高 Defi 項(xiàng)目的安全性。
安全建議
精度損失需重視。精度損失導(dǎo)致的安全問(wèn)題層出不窮,尤其是在Defi項(xiàng)目中,精度損失往往導(dǎo)致嚴(yán)重的資金損失。建議項(xiàng)目方和安全審計(jì)人員仔細(xì)審查項(xiàng)目中存在精度損失的代碼,并做好測(cè)試,盡量規(guī)避該漏洞。
建議類(lèi)似于 Compound 中 cToken 這種 market 的創(chuàng)建和首次抵押鑄造操作由特權(quán)用戶(hù)來(lái)執(zhí)行,避免被攻擊者操作,從而操作匯率。
當(dāng)合約中存在關(guān)鍵變量依賴(lài)于「 this.balance 」或者「 token.balanceOf() 」的值時(shí),需要慎重考慮該關(guān)鍵變量改變的條件,比如是否允許直接通過(guò)給合約轉(zhuǎn)原生幣或者代幣的方式改變?cè)撟兞康闹担€是只能通過(guò)調(diào)用某特定函數(shù)才能改變?cè)撟兞康闹怠?/p>
你可能感興趣的文章
-
以太坊還能漲嗎?從技術(shù)和基本面幫你看懂真相
上一周以太坊實(shí)現(xiàn)26.4%的周漲幅, 一舉突破2800的壓力位, 沖刺至4000大關(guān)腳下,以太坊還能漲嗎?下文將從以太坊的基本面以及技術(shù)面價(jià)格走勢(shì)來(lái)分析過(guò)去一周以及今年以來(lái)的以太…
2025-07-28 -
區(qū)塊鏈究竟是什么?原理、應(yīng)用、投資風(fēng)險(xiǎn)以及未來(lái)趨勢(shì)解析
區(qū)塊鏈究竟是什么?區(qū)塊鏈簡(jiǎn)單說(shuō),就是一種建立在線(xiàn)上的去中心化的數(shù)位帳本技術(shù),能確保交易數(shù)據(jù)安全透明,且不可篡改,這種技術(shù)不僅應(yīng)用于比特幣,還被廣泛應(yīng)用于供應(yīng)鏈管…
2025-07-28 -
加密貨幣中鏈上與鏈下交易主要區(qū)別是什么?
加密領(lǐng)域的鏈上交易是指直接在區(qū)塊鏈上執(zhí)行的轉(zhuǎn)賬,鏈下交易最初繞過(guò)區(qū)塊鏈驗(yàn)證,最終確認(rèn)后再記錄在鏈上,從而提高速度并降低成本,鏈下流程的用戶(hù)允許受信任的第三方處理交…
2025-07-28 -
ChatGPT怎么用?ChatGPT AI 在加密交易中的5 個(gè)實(shí)際應(yīng)用案例
加密貨幣交易面臨獨(dú)特的挑戰(zhàn):海量的數(shù)據(jù)流、迅速的市場(chǎng)變動(dòng)和情緒決策陷阱,雖然技術(shù)分析和基本面研究依然至關(guān)重要,但現(xiàn)在許多交易者已經(jīng)開(kāi)始利用像ChatGPT 這樣的AI 工具…
2025-07-28 -
什么是Linea?如何運(yùn)作?ConsenSys 推出的以太坊Layer-2 網(wǎng)絡(luò)?
什么是Linea?如何運(yùn)作?作為第二大公有區(qū)塊鏈,以太坊's 網(wǎng)絡(luò)仍然面臨著高昂的Gas 費(fèi)用、慢速交易速度和有限的吞吐量,尤其是在需求高峰時(shí),進(jìn)入Linea,一個(gè)由以太坊Layer-…
2025-07-28 -
什么是云算力?如何運(yùn)作?挖礦加密貨幣的簡(jiǎn)單指南
在不斷發(fā)展的加密貨幣世界中,挖礦長(zhǎng)期以來(lái)被視為推動(dòng)區(qū)塊鏈網(wǎng)絡(luò)的最基本過(guò)程之一,然而,隨著挖礦變得越來(lái)越具競(jìng)爭(zhēng)性和資源密集型,許多人開(kāi)始轉(zhuǎn)向一種更為便捷的替代方案…
2025-07-28 -
TRON是什么?最快、最便宜的USDT網(wǎng)絡(luò)的構(gòu)建介紹
2025年7月,波場(chǎng)TRON掀起波瀾,其原生代幣TRX一度超越卡爾達(dá)諾的ADA,成為市值第九大的加密貨幣,這一里程碑不僅體現(xiàn)在波場(chǎng)TRON市值飆升至298億美元,還體現(xiàn)在該公司在納斯…
2025-07-28 -
什么是去中心化應(yīng)用 (dApp)?dApp的優(yōu)勢(shì)、缺點(diǎn)、用途是什么介紹
去中心化應(yīng)用程序dApps是在點(diǎn)對(duì)點(diǎn)P2P或區(qū)塊鏈網(wǎng)絡(luò)上運(yùn)行的軟件,而不是在單個(gè)服務(wù)器或集中式計(jì)算機(jī)上運(yùn)行,在區(qū)塊鏈技術(shù)和智能合約的支持下,dApp提供了增強(qiáng)的安全性、透明…
2025-07-28 -
Monad是什么?Monad主網(wǎng)發(fā)布日期和空投是什么時(shí)候?
Monad是一個(gè)高性能 Layer1區(qū)塊鏈,旨在徹底革新以太坊兼容性,Monad的主網(wǎng)發(fā)布日期為2025年9月30日,代幣指標(biāo)如下:MON的總發(fā)行量和最大發(fā)行量均為1000億,盡管 Monad Labs尚…
2025-07-27 -
正向合約和反向合約是什么??jī)烧哂惺裁磪^(qū)別?各有什么優(yōu)勢(shì)?
在永續(xù)合約市場(chǎng)中,合約一般分為正向合約和反向合約,正向合約在加密市場(chǎng)中也稱(chēng)為USDT本位合約、穩(wěn)定幣合約,它以USDT為定價(jià)單位,而反向合約也稱(chēng)為幣本位合約,反向合約則是…
2025-07-26