跟蹤L2交易的最終確定時間

中級1/14/2024, 2:25:54 PM
Rollup 繼承了“以太坊安全性”或“信任最小化”,本質上意味著可以利用與以太坊確認規則衕等安全性的 Rollup 確認規則。本文介紹了確認規則併強調了最終確定性確定性

特別感謝 Jon Charbonneau 和 Conor McMenamin 審核了這篇文章。

此時我們都應該知道確認規則具有安全性,而不是Rollup本身。當我們説 Rollup 繼承了“以太坊安全性”或者它們是“信任最小化”時,我們實際上是指在Rollup上可以使用具有與以太坊確認規則大緻相衕安全性的確認規則。然而,大多數區塊鏈瀏覽器更多的是關註顯示一個緑色徽章,而不去詳細説明他們所指的是哪個確認規則,或者它們提供了什麽安全屬性。

在 L2BEAT,我們希望解決這個問題併讓每個人都可以使用它。特別是,我們希望關註最終確定性——這是對抗雙重支付攻擊的最強確認規則。

確認規則:一緻性與可用性

確認規則是在特定假設下,指示何時一個區塊被確認併且不太可能被重組(reorg)的算法。一旦一個區塊被確認,就可以進行與其交易相關的行動。例如,這可能涉及將一杯咖啡交給顧客或將一輛車交付給買家。

不衕的確認規則給用戶不衕的安全保障。確認規則的安全性包括一緻性和可用性,很大程度上取決於底層的共識算法:

  • 一緻性(安全性):在網絡分區下,任何兩個節點的視圖都是一緻的。
  • 即使大量節點停止參與協議,交易仍然會在一定時間內繼續被納入賬本。

CAP定理告訴我們告訴我們,設計一種既在網絡分區下保持一緻又在動態參與下可用的共識算法是不可能的:如果髮生嚴重的網絡分區,節點要麽決定繼續生産區塊併失去一緻性,要麽停止併失去可用性。節點無法區分其他節點是簡單離線(動態參與)還是處於活動狀態但無法訪問(網絡分區),因此不可能採取不衕的行動。

伊芙不知道鮑勃是簡單地離線還是在不衕的網絡分區。

像比特幣這樣的區塊鏈,利用類似中本聰的共識,有利於活躍性,這意味著在網絡分裂期間,雙方將繼續産生區塊,併且如果分區解決,最終將重組,而像 Cosmos 鏈這樣的區塊鏈則使用類似 PBFT 的共識,在網絡分區下停止以保持一緻性。

以太坊上的確認規則

以太坊在網絡分區的情況下,優先選擇保持可用性,併採用了LMD GHOST算法。這意味著,誠實的節點可能對鏈的最新狀態有不衕的理解,併可能對衕一高度的不衕區塊給予確認,這可能導緻區塊的重新組織(重組)。在網絡條件良好時,以太坊還通過Casper FFG協議,試圖提供更強的一緻性保障。最終確定性是一種強大的確認規則,它通過硬編碼的規則,確保一旦一個區塊被確認,就不會再被重組。

已經確定的賬本(緑色)始終是實時賬本(藍色)的前綴。

如果兩個衝突的區塊被衕時確認,那麽最終確定性的保障就會受到威脅。這種情況可能在超過三分之一的驗證者存在惡意行爲時髮生。不過,在以太坊上,這種行爲將導緻驗證者的抵押損失,因此風險很大。用戶可以選擇使用Casper FFG作爲最安全的確認規則,或者依賴於LMD GHOST以穫取更快的確認。LMD GHOST的確認規則類似於比特幣中的k-確認規則,但可能比單純檢查交易是否被記録在賬本上更覆雜,正如Safe Block確認規則所示。

Rollup 的確認規則

理論上,Rollup可以使用與以太坊相衕的確認規則。如果你在Rollup上髮送了一個交易,併且稍後在以太坊主鏈(L1)中看到這個交易被記録在一個已經確定的區塊中,那麽你可能會認爲這個L2的交易也是最終確定的。但實際情況比這更爲覆雜。

交易數據Rollup

在以太坊中,一個區塊包含了交易列錶和這些交易提出的狀態根,這些信息都記録在區塊頭中。如果交易執行的結果與狀態根不符,整個區塊將被丟棄,包括那些可能會在其他區塊中以不衕順序添加的交易。在Rollup中,由於髮布數據和提交狀態根是兩個獨立的過程,因此即使狀態根無效,交易也不必被丟棄。考慮到這種分離,我們隻需檢查交易是否已被確定,而不需要等待狀態根的最終確定,這樣可以避免額外的延遲,例如在Optimistic Rollup中的七天挑戰期。

狀態差異Rollup

狀態差異是狀態轉換函數的輸出。爲了驗證它們是否有效,需要等待一個零知識證明(ZK證明)。生成ZK證明需要時間,而且還有進一步的延遲,因爲存在將更多交易包含在單個證明中的激勵,以此來更好地分攤證明生成和驗證的成本。證明聚合技術提供了一個解決方案,平衡了確認時間和成本分攤之間的權衡:即使某個Rollup的活動較少,它仍然可以從將更活躍的Rollup中的交易包含在衕一證明中的成本分攤中受益。一個例子是Starkware目前的SHARP繫統,目前正在聚合 Starknet、Paradex 和 StarkEx Rollup(如 dYdX 甚至 Validiums)的證明。

事情變得覆雜的地方

Rollup 派生規範

如果 rollup 不基於固定順序,批次的處理順序可以由 rollup 排序器決定,這可能會導緻在 L1 上以不衕的順序髮布它們。例如,OP Stack 鏈在 L1 上髮布的批次是使用前一個批次的哈希鏈接的。這些批次不需要按時間順序髮布,導緻了一個 12 小時的排序窗口,在此期間節點等待可能遺漏的交易。僅因爲它們在 L1 上髮布,併不意味著交易被認爲已包含在內:如果一個批次尚未連接到批次的規範鏈,存在構建具有不衕排序或交易集的另一個分支的風險。

在 OP Stack 鏈上,區塊時間爲 2 秒,每個以太坊區塊內有 6 個區塊。這 6 個區塊間的分組被稱爲一個“時代”。通過 L1 提交的 L1 至 L2 消息包含在給定 L1 區塊的對應時代的第一個區塊的第一部分中。雖然這些交易可以在不等待排序窗口過去的情況下被認爲是已確認的,因爲它們在 L2 賬本上的排序已知,但重要的是要註意,如果缺少前一個批次,節點將不會開始計算包含這些消息的區塊。這是因爲在沒有完整序列的情況下,無法計算狀態,因此,狀態根也不會在 L1 上髮布。

其結果是,僅檢查鏈上數據不足以追蹤 L1 確認時間。還需要通過檢查 rollup 節點軟件本身來了解 L2 區塊如何從 L1 數據衍生出來。

許可功能

Scroll 是一種髮布交易數據的 ZK Rollup,這意味著原則上不需要等待 ZK 證明即可將其交易視爲最終交易。如果他們沒有實現刪除尚未經過驗證的批次的功能,情況就會是這樣。

https://etherscan.io/address/0x2e07f0fba71709bb5e1f045b02152e45b451d75f#code#F1#L260

這衕樣適用於髮布狀態差異的Rollup:zkSync Era 和 zkSync Lite 有一個三步過程來髮布狀態差異:首先,它們在沒有任何證明的情況下提交數據,然後爲它們提供證明,然後在 24 小時延遲後,根可以執行來處理提款。理論上,當證明被提供時,交易的排序是固定的,所以人們不需要等待執行延遲過去。除此之外,zkSync 可以撤銷這些區塊:

https://etherscan.io/address/0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b#code#F10#L425

雖然在 zkSync Era 中沒有區塊被恢覆,但在 zkSync Lite 上卻髮生了這種情況8次

最終確定性可觀察性

由於髮布狀態差異的 rollup 併不髮布交易數據,我們如何追蹤確保交易已經被包括在內?是的,我們可以追蹤效果,比如賬戶隨機數,但一般情況下會變得覆雜。一個月前我提出了以下問題:

這是一個解決方案,如果排序器願意回應你併且你信任它,這種方法是有效的。但如果它不願意呢?或者它願意但你不信任它呢?你如何驗證這個説法是正確的?
這是我最喜歡的回答。這裡建議了一個實際有效的解決方案:

雖然這個方法有效,但它意味著使用狀態差異的技術決策會滲透到應用邏輯中,這意味著即使一個rollup與以太坊虛擬機EVM等價,項目也必鬚調整其智能合約以適應這種情況。部分解決方案是髮布交易根併在ZK證明中驗證其有效性。即便如此,仍然需要依賴排序器穫取必要的Merkle路徑,這在有聲譽的中心化排序器中可能是合理的,但在無權限的情況下會更加覆雜。

活躍度指標

作爲跟蹤Rollup交易最終確定時間的第一步,我們在 L2BEAT 上開始跟蹤活躍度指標,特別是交易批次(如果適用)和狀態根之間的間隔。理由是,例如,如果Rollup每月僅與 L1 交互一次,則用戶不能期望最終確定時間爲幾分鐘。活躍度指標可以被認爲是最終確定時間的下限指標:如果交易數據Rollup每兩分鐘髮布一次批次,併且假設 L2 交易的分布是均勻的,則最終確定的預期時間不低於一分鐘。

以下是我們爲zkSync Era(狀態更新)和OP Mainnet(交易批次)追蹤的一些數據示例:

zkSync Era 9 月份的活躍度指標。

9 月份 OP 主網活躍度指標。

正如預測的那樣,由於ZK證明需要時間生成,併且有動力在單個證明中包含更多交易,zkSync Era的活躍度指標比OP Mainnet差。需要註意的是,正如我們在前麵的章節中討論的那樣,活躍度指標併不能直接轉化爲最終確定時間的考慮因素:在最壞的情況下,由於其排序窗口,OP Mainnet實際上具有更長的最終確定時間。

您現在可以在 L2BEAT 上探索大多數 rollup 的活躍度指標:

跟蹤活躍度的局限性

雖然活躍度可以被視爲最終確定性的下限指標,但有時它可能是一個非常糟糕的指標。想象一下一個 Rollup 的區塊時間爲 4 秒,這意味著每個以太坊區塊都有 3 個 Rollup 區塊。如果 rollup 運營商隻爲每個 L1 區塊髮布兩個 L2 區塊,即使從以太坊的角度來看,rollup 非常活躍,它也會越來越落後於 L2 軟確認,最終確定的時間也會變得越來越糟糕。雖然這是一種極端情況,但Rollup需要考慮到這一點。

一個實際的例子是 Starknet:雖然我們觀察到狀態更新之間的平均時間爲 32 秒,但最終確定的時間實際上接近 6 小時:

來源:starkscan

一個實際的例子是Starknet:盡管我們觀察到狀態更新之間平均需要32秒,但最終確定時間實際上接近6小時。這是因爲Starknet爲每個L2區塊在L1上髮布狀態根更新。然而,爲了做到這一點,他們必鬚引用SHARP證明,通常每30分鐘左右髮布一次。此外,這些證明通常落後於L2軟確認鏈的最新塊約6小時。

軟確認

軟確認是用於在L2上實現更短的確認時間而犧牲安全保障的確認規則。目前,在所有情況下,軟確認意味著信任中心化的操作員不會在L1上髮布不衕的交易。不正確的軟確認可以歸因於操作失誤,因此可以實施機製來跟蹤排序器的聲譽,無論是鏈下還是鏈上的懲罰。與Nethermind合作,我們計畫估算這些安全屬性,併跟蹤在任何特定時刻處於風險中的價值量。

左:Starknet 上的經濟保證,前提是他們有通過削減機製穫得的軟確認。右:隨著時間的推移,麵臨重組風險的總價值。

曏前走

時展望未來,跟蹤最終確定時間是一項覆雜的任務。我們的第一步是監控ZK rollups提交證明的間隔,這對最終確定時間的下限産生了更高的限製,相對於狀態根提交之間的間隔。隨後,我們計畫引入顯示每個項目歷史數據的圖錶。接下來,我們的研究將關註所有需要考慮的額外機製,以最終實現最終確定時間的實時度量。請繼續關註!

聲明:

  1. 本文轉載自[medium],著作權歸屬原作者[Luca Donno],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

跟蹤L2交易的最終確定時間

中級1/14/2024, 2:25:54 PM
Rollup 繼承了“以太坊安全性”或“信任最小化”,本質上意味著可以利用與以太坊確認規則衕等安全性的 Rollup 確認規則。本文介紹了確認規則併強調了最終確定性確定性

特別感謝 Jon Charbonneau 和 Conor McMenamin 審核了這篇文章。

此時我們都應該知道確認規則具有安全性,而不是Rollup本身。當我們説 Rollup 繼承了“以太坊安全性”或者它們是“信任最小化”時,我們實際上是指在Rollup上可以使用具有與以太坊確認規則大緻相衕安全性的確認規則。然而,大多數區塊鏈瀏覽器更多的是關註顯示一個緑色徽章,而不去詳細説明他們所指的是哪個確認規則,或者它們提供了什麽安全屬性。

在 L2BEAT,我們希望解決這個問題併讓每個人都可以使用它。特別是,我們希望關註最終確定性——這是對抗雙重支付攻擊的最強確認規則。

確認規則:一緻性與可用性

確認規則是在特定假設下,指示何時一個區塊被確認併且不太可能被重組(reorg)的算法。一旦一個區塊被確認,就可以進行與其交易相關的行動。例如,這可能涉及將一杯咖啡交給顧客或將一輛車交付給買家。

不衕的確認規則給用戶不衕的安全保障。確認規則的安全性包括一緻性和可用性,很大程度上取決於底層的共識算法:

  • 一緻性(安全性):在網絡分區下,任何兩個節點的視圖都是一緻的。
  • 即使大量節點停止參與協議,交易仍然會在一定時間內繼續被納入賬本。

CAP定理告訴我們告訴我們,設計一種既在網絡分區下保持一緻又在動態參與下可用的共識算法是不可能的:如果髮生嚴重的網絡分區,節點要麽決定繼續生産區塊併失去一緻性,要麽停止併失去可用性。節點無法區分其他節點是簡單離線(動態參與)還是處於活動狀態但無法訪問(網絡分區),因此不可能採取不衕的行動。

伊芙不知道鮑勃是簡單地離線還是在不衕的網絡分區。

像比特幣這樣的區塊鏈,利用類似中本聰的共識,有利於活躍性,這意味著在網絡分裂期間,雙方將繼續産生區塊,併且如果分區解決,最終將重組,而像 Cosmos 鏈這樣的區塊鏈則使用類似 PBFT 的共識,在網絡分區下停止以保持一緻性。

以太坊上的確認規則

以太坊在網絡分區的情況下,優先選擇保持可用性,併採用了LMD GHOST算法。這意味著,誠實的節點可能對鏈的最新狀態有不衕的理解,併可能對衕一高度的不衕區塊給予確認,這可能導緻區塊的重新組織(重組)。在網絡條件良好時,以太坊還通過Casper FFG協議,試圖提供更強的一緻性保障。最終確定性是一種強大的確認規則,它通過硬編碼的規則,確保一旦一個區塊被確認,就不會再被重組。

已經確定的賬本(緑色)始終是實時賬本(藍色)的前綴。

如果兩個衝突的區塊被衕時確認,那麽最終確定性的保障就會受到威脅。這種情況可能在超過三分之一的驗證者存在惡意行爲時髮生。不過,在以太坊上,這種行爲將導緻驗證者的抵押損失,因此風險很大。用戶可以選擇使用Casper FFG作爲最安全的確認規則,或者依賴於LMD GHOST以穫取更快的確認。LMD GHOST的確認規則類似於比特幣中的k-確認規則,但可能比單純檢查交易是否被記録在賬本上更覆雜,正如Safe Block確認規則所示。

Rollup 的確認規則

理論上,Rollup可以使用與以太坊相衕的確認規則。如果你在Rollup上髮送了一個交易,併且稍後在以太坊主鏈(L1)中看到這個交易被記録在一個已經確定的區塊中,那麽你可能會認爲這個L2的交易也是最終確定的。但實際情況比這更爲覆雜。

交易數據Rollup

在以太坊中,一個區塊包含了交易列錶和這些交易提出的狀態根,這些信息都記録在區塊頭中。如果交易執行的結果與狀態根不符,整個區塊將被丟棄,包括那些可能會在其他區塊中以不衕順序添加的交易。在Rollup中,由於髮布數據和提交狀態根是兩個獨立的過程,因此即使狀態根無效,交易也不必被丟棄。考慮到這種分離,我們隻需檢查交易是否已被確定,而不需要等待狀態根的最終確定,這樣可以避免額外的延遲,例如在Optimistic Rollup中的七天挑戰期。

狀態差異Rollup

狀態差異是狀態轉換函數的輸出。爲了驗證它們是否有效,需要等待一個零知識證明(ZK證明)。生成ZK證明需要時間,而且還有進一步的延遲,因爲存在將更多交易包含在單個證明中的激勵,以此來更好地分攤證明生成和驗證的成本。證明聚合技術提供了一個解決方案,平衡了確認時間和成本分攤之間的權衡:即使某個Rollup的活動較少,它仍然可以從將更活躍的Rollup中的交易包含在衕一證明中的成本分攤中受益。一個例子是Starkware目前的SHARP繫統,目前正在聚合 Starknet、Paradex 和 StarkEx Rollup(如 dYdX 甚至 Validiums)的證明。

事情變得覆雜的地方

Rollup 派生規範

如果 rollup 不基於固定順序,批次的處理順序可以由 rollup 排序器決定,這可能會導緻在 L1 上以不衕的順序髮布它們。例如,OP Stack 鏈在 L1 上髮布的批次是使用前一個批次的哈希鏈接的。這些批次不需要按時間順序髮布,導緻了一個 12 小時的排序窗口,在此期間節點等待可能遺漏的交易。僅因爲它們在 L1 上髮布,併不意味著交易被認爲已包含在內:如果一個批次尚未連接到批次的規範鏈,存在構建具有不衕排序或交易集的另一個分支的風險。

在 OP Stack 鏈上,區塊時間爲 2 秒,每個以太坊區塊內有 6 個區塊。這 6 個區塊間的分組被稱爲一個“時代”。通過 L1 提交的 L1 至 L2 消息包含在給定 L1 區塊的對應時代的第一個區塊的第一部分中。雖然這些交易可以在不等待排序窗口過去的情況下被認爲是已確認的,因爲它們在 L2 賬本上的排序已知,但重要的是要註意,如果缺少前一個批次,節點將不會開始計算包含這些消息的區塊。這是因爲在沒有完整序列的情況下,無法計算狀態,因此,狀態根也不會在 L1 上髮布。

其結果是,僅檢查鏈上數據不足以追蹤 L1 確認時間。還需要通過檢查 rollup 節點軟件本身來了解 L2 區塊如何從 L1 數據衍生出來。

許可功能

Scroll 是一種髮布交易數據的 ZK Rollup,這意味著原則上不需要等待 ZK 證明即可將其交易視爲最終交易。如果他們沒有實現刪除尚未經過驗證的批次的功能,情況就會是這樣。

https://etherscan.io/address/0x2e07f0fba71709bb5e1f045b02152e45b451d75f#code#F1#L260

這衕樣適用於髮布狀態差異的Rollup:zkSync Era 和 zkSync Lite 有一個三步過程來髮布狀態差異:首先,它們在沒有任何證明的情況下提交數據,然後爲它們提供證明,然後在 24 小時延遲後,根可以執行來處理提款。理論上,當證明被提供時,交易的排序是固定的,所以人們不需要等待執行延遲過去。除此之外,zkSync 可以撤銷這些區塊:

https://etherscan.io/address/0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b#code#F10#L425

雖然在 zkSync Era 中沒有區塊被恢覆,但在 zkSync Lite 上卻髮生了這種情況8次

最終確定性可觀察性

由於髮布狀態差異的 rollup 併不髮布交易數據,我們如何追蹤確保交易已經被包括在內?是的,我們可以追蹤效果,比如賬戶隨機數,但一般情況下會變得覆雜。一個月前我提出了以下問題:

這是一個解決方案,如果排序器願意回應你併且你信任它,這種方法是有效的。但如果它不願意呢?或者它願意但你不信任它呢?你如何驗證這個説法是正確的?
這是我最喜歡的回答。這裡建議了一個實際有效的解決方案:

雖然這個方法有效,但它意味著使用狀態差異的技術決策會滲透到應用邏輯中,這意味著即使一個rollup與以太坊虛擬機EVM等價,項目也必鬚調整其智能合約以適應這種情況。部分解決方案是髮布交易根併在ZK證明中驗證其有效性。即便如此,仍然需要依賴排序器穫取必要的Merkle路徑,這在有聲譽的中心化排序器中可能是合理的,但在無權限的情況下會更加覆雜。

活躍度指標

作爲跟蹤Rollup交易最終確定時間的第一步,我們在 L2BEAT 上開始跟蹤活躍度指標,特別是交易批次(如果適用)和狀態根之間的間隔。理由是,例如,如果Rollup每月僅與 L1 交互一次,則用戶不能期望最終確定時間爲幾分鐘。活躍度指標可以被認爲是最終確定時間的下限指標:如果交易數據Rollup每兩分鐘髮布一次批次,併且假設 L2 交易的分布是均勻的,則最終確定的預期時間不低於一分鐘。

以下是我們爲zkSync Era(狀態更新)和OP Mainnet(交易批次)追蹤的一些數據示例:

zkSync Era 9 月份的活躍度指標。

9 月份 OP 主網活躍度指標。

正如預測的那樣,由於ZK證明需要時間生成,併且有動力在單個證明中包含更多交易,zkSync Era的活躍度指標比OP Mainnet差。需要註意的是,正如我們在前麵的章節中討論的那樣,活躍度指標併不能直接轉化爲最終確定時間的考慮因素:在最壞的情況下,由於其排序窗口,OP Mainnet實際上具有更長的最終確定時間。

您現在可以在 L2BEAT 上探索大多數 rollup 的活躍度指標:

跟蹤活躍度的局限性

雖然活躍度可以被視爲最終確定性的下限指標,但有時它可能是一個非常糟糕的指標。想象一下一個 Rollup 的區塊時間爲 4 秒,這意味著每個以太坊區塊都有 3 個 Rollup 區塊。如果 rollup 運營商隻爲每個 L1 區塊髮布兩個 L2 區塊,即使從以太坊的角度來看,rollup 非常活躍,它也會越來越落後於 L2 軟確認,最終確定的時間也會變得越來越糟糕。雖然這是一種極端情況,但Rollup需要考慮到這一點。

一個實際的例子是 Starknet:雖然我們觀察到狀態更新之間的平均時間爲 32 秒,但最終確定的時間實際上接近 6 小時:

來源:starkscan

一個實際的例子是Starknet:盡管我們觀察到狀態更新之間平均需要32秒,但最終確定時間實際上接近6小時。這是因爲Starknet爲每個L2區塊在L1上髮布狀態根更新。然而,爲了做到這一點,他們必鬚引用SHARP證明,通常每30分鐘左右髮布一次。此外,這些證明通常落後於L2軟確認鏈的最新塊約6小時。

軟確認

軟確認是用於在L2上實現更短的確認時間而犧牲安全保障的確認規則。目前,在所有情況下,軟確認意味著信任中心化的操作員不會在L1上髮布不衕的交易。不正確的軟確認可以歸因於操作失誤,因此可以實施機製來跟蹤排序器的聲譽,無論是鏈下還是鏈上的懲罰。與Nethermind合作,我們計畫估算這些安全屬性,併跟蹤在任何特定時刻處於風險中的價值量。

左:Starknet 上的經濟保證,前提是他們有通過削減機製穫得的軟確認。右:隨著時間的推移,麵臨重組風險的總價值。

曏前走

時展望未來,跟蹤最終確定時間是一項覆雜的任務。我們的第一步是監控ZK rollups提交證明的間隔,這對最終確定時間的下限産生了更高的限製,相對於狀態根提交之間的間隔。隨後,我們計畫引入顯示每個項目歷史數據的圖錶。接下來,我們的研究將關註所有需要考慮的額外機製,以最終實現最終確定時間的實時度量。請繼續關註!

聲明:

  1. 本文轉載自[medium],著作權歸屬原作者[Luca Donno],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
Comece agora
Registe-se e ganhe um cupão de
100 USD
!