作者:0xhhh,EthStorage|PolygonzkEVM的整體架構和交易執行流程),我們總結了PolygonzkEVM的整體框架以及交易執行流程,同時也分析了PolygonzkEVM是如何實現計算擴容的同時繼承了L1的安全性的;在這篇文章里,我們將依托上篇文章建立的框架,深入polygonzkEVM關于Sequencer和Bridge更多的技術細節,同時也探討未來潛在的去中心化Sequencer架構的不同特點。
一、深入解析zkEVMBridge
在上一篇文章里,我們介紹PloygonzkEVM的過程中,實際上缺失了很重要的一個部分,就是PolygonzkEVM的原生橋。1.跨鏈數據狀態管理PolygonzkEVM在L1和L2分別維護了一棵ExitTree,名字分別為L1ExitMerkletree和L2ExitMerkletree。但是為了更好的管理這兩棵樹,PolygonzkEVM很聰明的將這兩棵樹結合在了一起,如下圖:
也就是用分別把L1ExitTreeRoot作為GlobalExitTree的左葉子節點,把L2ExitTreeRoot作為GlobalExitTree的右葉子節點。不過需要注意這里L1TreeRoot和L2TreeRoot是SparseMerkleTree(SMT),而GlobalExitTree是BinaryMerkleTree。L1/L2ExitTree葉子節點的基本信息如下:
2.跨鏈流程
在PolygonzkEVM的合約設計中,還是盡可能的將Bridge和Consensus合約盡可能的解耦。目前其在L1部署的合約主要分為3個,如下圖所示:
需要注意的是他們之間不是繼承關系,都是獨立的合約,PolygonZkEVMBridge和PolygonZkEVM都會調用PolygonZkEVMGlobalExitRoot來更新或驗證GlobalExitTreeRoot。
1)?L1→L2的跨鏈流程
L1→L2的跨鏈流程對應上圖的橙色標識的三個步驟:
對應以下代碼中的BatchData的結構體中的globalExitRoot:
PolygonZkEVMBridge在L2的合約
https://testnet-zkevm.polygonscan.com/tx/0x2a742f2f8a7b8635a76cc70b4574bebb1a81b2c0c1a618188773a1f8f2283bb8
https://testnetzkevm.polygonscan.com/address/0x39e780d8800f7396e8b7530a8925b14025aedc77#code
Polygon Labs發起新提案,提議將Spark Protocol部署至Polygon zkEVM:8月2日消息,Polygon Labs團隊發起新提案,提議將MakerDAO旗下借貸協議Spark Protocol部署至Polygon zkEVM。提案稱,Spark Protocol目前利用Chainlink Price Feeds來滿足其預言機需求,目前Polygon Labs正在與Chainlink Labs團隊討論,后者將很快在8月份支持Polygon zkEVM,該時間表為Spark部署部署至Polygon zkEVM提供了充足的時間。最初上線的抵押品包括WETH、wstETH和DAI。
Polygon Labs目前正在探索一些選項,以為Spark在zkEVM上的發布提供初始DAI流動性。為了啟動流動性,DAI流動性的最低目標規模為50萬美元。Polygon Labs將確定額外的初始撥款規模,以引導Spark在Polygon zkEVM上的發展。[2023/8/2 16:13:32]
2)L2→L1的跨鏈流程
用戶調用部署在L2的Bridge合約(PolygonZkEVMBridge.sol)中的Bridge()函數發送一筆L2-Bridge-Tx,這會更新添加一個新節點在L2ExitTree中,然后依次更新L2ExitTreeRoot和GlobalExitTreeRoot。
接下來當Sequencer會把這筆L2-Bridge-Tx放到某一個Batch中發送到L1的共識和DA合約(PolygonZkEVM.sol)中。
然后在之后Aggregator調用trustedVerifyBatches()往L1提交validityproof的時候,實際上也會把L2ExitRoot也一并作為Input進行上傳,也就是以下函數的中的NewLocalExitRoot,它代表了L2有新的BridgeToL1的交易,但是這些交易目前在L1還不能提款,需要等待這個新的NewLocalExitRoot被驗證成功。
接下來這個傳入的NewLocalExitRoot也會作為驗證電路的一部分,輸入這個驗證邏輯是我在L2發生的這些新的BridgeToL1的交易是不是導致L2ExitTreeRoot變成當前這個提交的NewLocalExitRoot。
如果這個這個ValidityProof驗證通過,那么L1的GlobalExitRootManager會更新L2ExittrreRoot和GlobalExitTreeRoot:?globalExitRootManager.updateExitRoot(newLocalExitRoot);
這個時候,用戶就可以調用部署在L1的Bridge合約(PolygonZkEVMBridge.sol)的ClaimAsset()函數并給出相應的MerklePath進行提款,跨鏈交易的也就完美結束。
二、PolygonzkEVM如何抗審查
在上篇文章,我們介紹了TrustedSequencer,由官方運行的SingleSequencer,基本上L2網絡的交易都會提交給這個TrustedSequencer,并且可以獲得一個及時SequencerFinality。
數據:Polygon zkEVM獨立地址數突破7萬個,橋接TVL超1.5萬枚ETH:金色財經報道,據Dune Analytics數據顯示,Polygon zkEVM獨立地址數已突破7萬個,本文撰寫時達到70,483個,橋接TVL超1.5萬枚ETH,當前為15,588 ETH,按照最新價格數據顯示約合3億美元。[2023/7/1 22:11:56]
而實際上用戶還可以通過另一種方式直接提交交易到L1的合約中,而不需要通過TrustedSequencer,從而保證了整個網絡仍然具備一定的抗審查的特性。
1.執行流程
1)用戶調用L1合約中的ForceBatch函數,通過這個函數可以用戶可以把自己想要執行的L2交易直接送到L1的合約中的。
2)合約中會將這些Transactions打包成一個Batch,并且記錄在合約中一個ForceBatches的Mapping中。
3)TrustedSequence監聽到ForceBatches中有新的ForceBatch的時候,會將其同步到本地的節點中,然后會在下次往L1提交Batches的時候包含這個ForceBatch。
4)不過這里還存在一種特殊情況,如果TrustedSequence如果宕機了,或者故意不提交某個用戶提交的ForceBatch,那么在五天之后用戶可以自己調用L1合約中的SequenceForceBatches()函數,讓這筆ForceBatch進入到L1合約中的SequencedBatches,也就意味著這筆ForceBatch在Rollup中的交易順序被L1合約最終確定,即便是TrustedSequence也無法再更改這個ForceBatch的交易順序。(實際上所有Rollup都會有這樣的特性來提供抗審查特性比如Arbitrum的SequenceInbox和Inbox)。
不過這里推薦大家盡可能不要通過ForceBatch的方式提交Rollup的交易,因為通過這種方式,你在調用ForceBatch往L1提交自己的交易的時候會暴露你的交易內容,而這個時候交易順序還沒被確認(需要等待Sequence同步ForceBatch并通過SequenceBatch()再一次提交到L1的時候交易順序才被真正確認)同時你已經沒辦法取消你的交易了,這個時候你有很大的可能被搶跑。
這似乎這并不能真正的抗審查,因為ForceBatch的方式存在被搶跑的風險,用戶真的會用這個功能嗎?
2.Sequencer的真正狀態
從上文我們可以得知,Sequence會從L1同步ForceBatch中的交易到本地節點進行執行,于是Sequence的真正狀態如下圖所示:
Bn表示用戶直接提交給Sequence的交易執行后得出的結果;
FBn表示Sequence同步ForceBatch的交易進行執行后得出的結果。
0VIX:正在調查疑與 vGHST 有關的情況,已暫停 POS 與 zkEVM 市場:4月28日消息,Polygon 生態項目 0VIX Protocol 發推稱,正在與安全伙伴合作,調查目前似乎與 vGHST 有關的情況。因此,POS 和 zkEVM 市場已經暫停,包括暫停 oToken 的轉移、鑄造與清算。目前只有 POS 受到影響,但 zkEVM 已經暫停以作預防,并可能很快再次啟用。[2023/4/28 14:33:34]
https://zkevm.polygon.technology/
三、L2網絡存在的三種不同的Finality
接下來我們回顧下Ploygon的整體架構,為接下來的去中心化Sequencer思考做好鋪墊。我們需要關注到。
對于Sequencer和Aggregator來說,他們的狀態都是通過Syschronizer從一層合約中進行同步的,他們之間并不是直接通信的。
1)三種Finality
因此我們可以認為目前整個網絡存在三種不同程度的Finality,我們給它命名成SequencerFinality,DAFinality和Verified?Finality。
a.第一種SequecerFinality,在有一些文章中也將這種Finality稱為SoftFinality,但是我覺得叫做SequenecerFinality更為合適,因為這個Finality其實是SingleSequencer給的狀態承諾。
Sequencer接受到用戶交易之后,執行后給出的狀態,這是最不安全的狀態;但是在目前官方SingleSequencer的場景下,卻可以在保證安全的同時帶來極致的用戶體驗。在目前單一Sequencer的Rollup網絡中,基本上都可以體驗到即時確認的快樂。不過,SingleSequencer最大的風險就是Sequencer宕機,這會導致整個L2網絡基本癱瘓,不過由于DA層是位于以太坊上的,依然可以在之后部分恢復L2網絡宕機前的狀態;不過那部分來不及發送到L1的L2交易將無法被恢復。
b.第二種DAFinality,代表這些交易已經被提交到L1的DA層合約上,此時交易順序也被確定了。
TrustedSequencer已經調用SequenceBatch將交易發送到L1上,在這種情況下,交易已經被DA層包含;在Polygon的設計中,由于單一TrustedSequencer的原因,所以可以確保上傳到L1合約上進行DA的交易都是有效交易。我們可以認為當一筆交易被TrustedSequencer上傳到L1合約中的時候,這個時候它已經被Rollup網絡承認了,并且在之后Aggregator會提供ValidityProof讓這筆交易真正無法被Revert(除非L1Reorg)。
c.第三種VerifiedFinality指的是這筆交易已經通過ValidityProof的驗證了,屬于真正的Finality;在一些文章中也把它叫做HardFinality。
當Aggregator為一批上傳到DA層的交易提供的ValidityProof被合約驗證通過的時候,這個時候我們認為這些交易已經無法被Revert了(除非L1Reorg)。我們在上一篇文章里提到過,目前提交到DA層的交易到驗證validityproof的通過的時間是30分鐘,同時Aggregator也可以通過提供ValidityProof從而獲得足夠的Matic報酬。
借貸市場0VIX已在Polygon zkEVM網絡啟動:3月28日消息,借貸市場0VIX已在Polygon zkEVM網絡啟動,成為首個在Polygon zkEVM網絡部署的DeFi協議,包括ETH、MATIC、USDT和USDC在內的四種資產市場已經上線。[2023/3/28 13:31:23]
2)Aggregator同步狀態的取舍
假如我們這里假設提供ValidityProof是有利可圖的,那么對于Aggregator來說,最好的同步交易的方式,不是在L1的DA層合約中同步,而是直接跟TrustedSequencer建立rpc鏈接,直接從TrustedSequencer獲取最新的交易,這樣生成ValidityProof會更快,從而相比其他從DA合約中獲取交易的Aggregator更有競爭優勢,因為提供ValidityProof這件事情是先到先得,對于一批交易來說也僅僅需要一個聚合的validityproof,第一個提交ValidityProof的Aggregator可以拿走對應交易的Matic獎勵,其他Aggregator生成的ValidityProof也無法再獲得任何獎勵。
不過目前實際上Polygon跟TrustedSequencer角色一樣,也有一個TrustedAggregator,來處理生成和提交ValidityProof的工作。https://zkevm.polygon.technology/
四、Sequencer的未來
接下來,我們繼續是關于去中心化Sequencer的思考。首先第一個問題是我們為什么需要去中心化的Sequencer?因為我們希望Rollup能在擴容以太坊的計算能力的同時,繼承以太坊的安全性和去中心化程度。而當前SingleSequencer的方案顯然達不到繼承以太坊的去中心化程度的目標。再繼續勾畫去中心化Sequencer的未來之前,我們先來回顧Sequencer的工作。以PolygonzkEVM為例,目前TrustedSequencer對交易的處理會遵循FCFS,先到的交易先進行處理,并行Mempool也是私有的,盡可能保護用戶的交易不被MEV。
當收集到一定量的交易之后,會把它們封裝成Batches上傳到L1合約中對應的DA的位置,并且在第一篇文章中我們也提到了這些了Sequencer上傳的Batch中實際上已經通過在后一個Batch包含前一個Batch的哈希的方式確定了交易的順序。因此我們認為Sequencer的工作類似L1Proposer的工作,提議了一批交易,并且確認了交易的順序。
因為我們是從PolygonzkEVM開始介紹去中心化Sequencer的,我們就先介紹PolygonzkEVM的去中心化Sequencer方案ProofOfEfficiency(效率證明)。
1.Proof-0f-Efficiency?1)方案描述在POE的設計中,允許任何人成為Sequencer并且向L1提交RollupBlock的,Rollup網絡的交易順序取決于交易被提交到L1的RollupDA合約的順序。如下圖,用戶都可以自行選擇將交易發送給哪個Sequencer,甚至可以自己成為Sequencer,這些Sequencer在收到足夠的交易之后,會將這些交易打包成Batch,然后往L1上提交。
這些Sequencer需要考慮利潤問題:
Sequencer成本=L1gascost?+generatezkProoffee
Ankr將在Polygon zkEVM推出后提供RPC連接:3月17日消息,Web3 基礎設施提供商 Ankr 將在 3 月 27 日 Polygon zkEVM 推出后提供 RPC 連接,Ankr 還將通過啟動 RPC 連接到 zkEVM 測試網與主網,使開發者能夠在以太坊擴容方案上建設。[2023/3/18 13:11:28]
Sequencer收入=L2gasfee
所以Sequencer需要考量將至少多少筆交易打成一個Batch提交L1才是有利可圖的。但是Sequencer還需要考慮另外一個問題,時效性問題,如果一個Sequencer的提交交易速度過慢,那么它的用戶可能會流失到其他提供更快確認的Sequencer那里。
2)方案可行性
首先這個方案能運轉的核心原因是Polygon的DA部分沒有做任何狀態承諾,僅僅確定了交易順序;狀態承諾(Sequencer承諾交易執行后對應的新的世界狀態,但是這個狀態未被ValidityProof或者FraudProof驗證的狀態)是在提交ValidityProof的時候才會給出,這是這個方案能執行的核心原因。
實際上像Arbitrum在提交交易到DA合約中的時候也沒有做任何狀態承諾,但是Optimism在提交交易到DA層的時候是攜帶狀態承諾的,所以理論上Arbitrum也可以運用POE來實現去中心化Sequencer,但是Optimism則不行。
3)為什么攜帶狀態承諾就不能運用POE?因為在多個Sequencer幾乎同時往L1提交Batch的時候,實際上沒有一個Sequencer可以保證最終在DA合約上L2的交易順序到底是怎樣,所以如果攜帶狀態承諾,大概率會導致整個Batch無法通過ValidityProof或者FraudProof的驗證。
4)如何處理無效交易?
無效交易指的是比如賬戶的Nonce過低,賬戶余額不足以支付Gas費用的交易,當這些交易在L1(Geth)是不會被放入到區塊的,因為如果一個區塊中包含一筆無效交易,都會導致整個區塊變成無效區塊,Validator不會給這種區塊投票,Propoer也不會提案這種區塊。
在當前SingleSequencer的情況下,L2網絡是有能力辨別這種無效區塊的,并且可以避免在L1DA合約中避免包含這種交易,這可以避免浪費L1的區塊空間。
但是采用POE之后,Sequencer實際上失去了辨別這種無效交易的能力,因此在L1的驗證交易帶來的狀態變更過程中,也需要將這種情況考慮進去,并且Sequencer提交無效交易是無法獲得用戶的手續費的。
5)PublicMempool(公共交易池)?
采用POE之后,如果這些去中心化的Sequencer之間會存在PublicMempool,那么會導致用戶一筆交易被不同的Sequencer提交多次,當然只有第一次提交的交易是有效交易,也只有這交易最終能獲得用戶的手續費。
6)Sequencer為何無法預測執行結果
在這種PermissonlessSequencer的模型下,一個Sequencer是無法給用戶提供及時的SequencerFinality,因為Sequencer預測的最終上鏈的的交易順序和實際的交易順序會有偏差,這個偏差是由于可能有多個Sequencer在幾乎同個時刻向L1的DA合約提交了交易Batch,在這種情況下很難保證這些交易Batch的實際順序是否跟預測順序相同。
因此Sequencer同步自身狀態的時候,也會從L1的DA合約上同步最新被提交的交易Batch并執行來獲得最新狀態,而不是其他Sequencer那里同步狀態。
7)L2的MEV流失到L1
由于交易任何人都可以成為Sequencer提交Rollup網絡的交易,并且提交交易Batch的交易實際上跟L1的普通交易無異,因此它實際上還是會經過MEVBoost的整個流程,意味著L2網絡的MEV都會流失到MEVBoost模塊。
8)Aggregator的設計
在POE的設計上,Aggregator同樣也是Permissionless的,但是由于ValidityProof實際上只需要一個正確的交易,也就意味著只有第一個為交易提交正確的ValidityProof的Aggregator才能獲得獎勵。因此作為Aggregator,你需要權衡提交的ValidityProof的證明范圍,提交時間以及提交ValidityProof可以獲得的Matic獎勵之間的關系,最終找出一個最有競爭力的策略。
似乎,利用這種自由市場競爭策略,可以讓交易對應的ValidityProof的生成速度達到最快。
https://ethresear.ch/t/proof-of-efficiency-a-new-consensus-mechanism-for-zk-rollups/119888)
8)總結
POE可以帶來完全PermissionLess的網絡,并且整個網絡可能也不會有宕機的風險,但是L1的DA合約中可能包含無效交易(比如相同Nonce的交易),MEV都被L1網絡獲取,并且只能提供DAFinality和VerifiedFinality。
2.BasedRollup
BasedRollup是期望將Rollup網絡的SingleSequencer的工作委托給以太坊的proposer去完成。它會要求每個Proposer提案L1的區塊需要包含一個有效的Rollup區塊。
因此L1網絡的BlockBuilder需要運行一個Rollup的全節點用來接受L2的交易,并且構建最大價值的RollupBlock。
這樣的方案的好處是可以最大程度的繼承了L1的安全性以及去中心化程度,但是也會導致只能提供SequencerFinality和VerifiedFinality,L2的MEV也會都流失到L1同時也需要對以太坊客戶端的代碼進行修改,這也可能會影響L1的安全性。
3.ShareSequencing
SharedRollup相比BasedRollup將構建和提交RollupBlock的工作交給以太坊的Propoer,則是將這個工作交給ShareSequencers中的委員會。
3.1.具體流程如下:
a.不同Rollup的用戶都可以直接向SharedSequencers所在的網絡直接發送Rollup的交易b.SharedSequencers會在內部運行一個BFT共識,在每一輪選出一個SequencerLeader來對交易進行排序并構建對應的RollupBlock.
c.然后將這些RollupBlock提交到不同的Rollup網絡對應在L1上的DA合約
d.不同的Rollup網絡再通過L1的DA合約同步網絡中的最新交易,然后進入到他們自身驗證ValidityProof或者FraudProof的流程。
3.2.SharedSequencer架構的潛在影響
1)多個Rollup網絡共用一個SharedSequencerCommittee
2)從單個Rollup的角度來看,只是把把官方運行的SingleSequencer委托給了這個SharedSequencerCommittee
3)在每一輪從SharedSequencerCommittee中會選出一個SequencerLeader,負責對接入這個SharedSequencers網絡的RollupBlock進行構建,并且依次將這些RollupBlock提交到對應Rollup在以太坊上的DA合約內。
a.比如A需要將Arbitrum上USDC跨鏈到Optimism上,那么正常流程是它會在Arbitrum上先進行Lock,等待Lock成功之后,再去Optimism上提交自己在Arbitrum的LockProof(e.g.MerkleTreePath+TreeRoot),然后在Optimism上Mint出來對應的USDC資產;
b.當用戶向SharedSequencers提交這樣一個交易的時候,每一輪的SeuqnecerLeader實際上可以將ArbitrumLock的操作+OptimismMint的操作放在同一時刻的RollupBlock進行執行,這樣可以帶來巨大的用戶體驗提升;
c.但是它依舊無法做到像同一個Rollup網絡的用戶體驗,比如Mint的時候你依然需要提供你的LockProof;
d.所以我們可以認為接入到這個SharedSequencers網絡中的Rollup們是一個接近于完全同步的系統;
e.接近完全同步的系統有什么作用呢?f.可以提供原子跨鏈服務,因為每一輪選出的SequencerLeader擁有排序所有Rollup交易的權力,所以他有能力構建原子跨鏈的交易。
4)跨鏈MEV的角度
因為每一輪的LeaderSequencer擁有所有RollupBlock的排序權力,所以理論上可以捕獲所有的跨鏈MEV,感覺之后SharedSequencer也需要引入或者直接接入MEVBoost這種MEV架構,因為從目前看各個Rollup網絡的區塊間隔都會遠遠快于以太坊的區塊間隔,比如Optimism的2s每一塊,Arbitrum最快是0.25s出一塊。因此作為每一輪的SequencerLeader構造RollupBlock的計算量其實并不小,因此感覺生態成熟起來之后也會有相應的MEV架構來輔助構造最大價值的RollupBlock。
5)從Decentralization和Liveness的角度看SharedSequencers
因為SharedSequencerCommittee內部會用BFT共識來在每一輪選擇出一個SequencerLeader來提案所有的RollupBlock,所以Decentralization和Liveness都要比目前的SingleSequencer方案強大不少。
6)從生態的角度
a.對于不同的Rollup擁有了更好的共存的理由,因為用戶可以很方便的在各個Rollup的網絡中進行資產轉移,也可以更好的對實現以太坊生態的負載均衡。
b.對于不同的正在構造ShreadSequencer的項目而言,可能就是你死我活的競爭,因為從用戶角度和目前各個Rollup都是SignleSequencer的角度而言,似乎在SharedSequencer這條賽道會出現贏家通吃的問題。
7)Finality角度
因為本質上還是SingleSequencer,所以無論是SequencerFinality還是VerifiedFinality都跟原來是一樣的。
3.3.潛在風險
因為Rollup之間不一定是同構Rollup,比如Arbitrum和polygonzkEVM之間的跨鏈,那么意味著跨鏈交易對應在Arbitrum和polygonzkEVM之上交易的VerifiedFinality并不一致,比如我在PolygonzkEVM之上的mint交易已經獲得VerifiedFinality(提交了ValidityProof),但是此時我在Arbitrum上的Lock交易僅獲得了DAFinality(需要等待7天挑戰期),如果我在這個時候成功Revert了我在Arbiturm的交易,那么也就意味著:我實際上在PolygonzkEVM無成本鑄造了很多跨鏈資產。
3.4總結
優勢:
a.MEV可以被Rollup網絡獲取,并且還可以額外獲取更多的跨鏈MEV;
b.用戶跨Rollup體驗好,并且能讓Rollup之間由競爭關系轉為共生關系,每個Rollup都可以提供自己獨特的價值,然后與其他Rollup網絡組合成可以為用戶提供各種各樣定制化服務的網絡;
c.相比SignleSequencer,網絡的去中心化程度得到了大幅度增強,并且網絡的穩定性大大增強了,在某一個SequencerLeader不出塊的時候,會及時輪換一個新的SequencerLeader進行出塊;
d.網絡的三種Finality都跟原來SingleSequencer保持一致。劣勢:本質上還是SingleSequencer的模型,并且也引入了新的攻擊向量。
五、總結
在這篇文章我們詳細結構了PolygonzkEVM的bridge以及Sequencer更多的技術細節,在下篇文章也是最后一篇文章,會繼續解剖zkEVM的技術細節,敬請期待。
Tags:ENCSEQNCEUENCArtificial intelligence ecoystemSEQ幣ASI.financeINFLUENCE
Aave社區正對“如何分配AaveGrantsDAO收到的30萬枚OP”提案進行投票,該提案目前支持率為99.97%,并將于5月8日結束.
1900/1/1 0:00:00整理:西柚,ChainCatcher“過去24小時都發生了哪些重要事件”1.Web3信用協議Getaverse獲得LDCapital投資據官方信息.
1900/1/1 0:00:00Coinbase將于周四收盤后公布其第一季度財報。根據TheBlock數據顯示,Coinbase每月的平均每日現貨交易量繼續呈下降趨勢.
1900/1/1 0:00:00Voyager在官方博客上發布關于客戶初始恢復的重要更新。根據該文章,Voyager現擁有13.34億美元的資產,相當于客戶對Voyager資產索賠總額的75.68%.
1900/1/1 0:00:00HALO官方消息稱,將于今日北京時間20:00在其官網舉行OriginesCitizenNFT公售。本次NFT發售共計2000枚,單價1.6BNB.
1900/1/1 0:00:00來源:PawnFi 由DCG、CoinbaseVentures等多家頂級機構注資的NFT金融項目PawnFi宣布將于近期啟動早鳥體驗活動,開放社群申請參與協議的早期體驗.
1900/1/1 0:00:00