diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/archive-nodes/index.md index cf9cb2e577a..f1a5cdc7531 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/archive-nodes/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/archive-nodes/index.md @@ -1,6 +1,6 @@ --- -title: 以太坊歸檔節點 -description: 歸檔節點概覽 +title: "以太坊歸檔節點" +description: "歸檔節點概覽" lang: zh-tw sidebarDepth: 2 --- @@ -9,21 +9,21 @@ sidebarDepth: 2 ## 先決條件 {#prerequisites} -你應該瞭解[以太坊節點](/developers/docs/nodes-and-clients/)的概念,[其架構](/developers/docs/nodes-and-clients/node-architecture/)、[同步策略](/developers/docs/nodes-and-clients/#sync-modes)、[運行](/developers/docs/nodes-and-clients/run-a-node/)和[使用它們](/developers/docs/apis/json-rpc/)的實踐方法。 +您應該了解 [以太坊節點](/developers/docs/nodes-and-clients/) 的概念、[其架構](/developers/docs/nodes-and-clients/node-architecture/)、[同步策略](/developers/docs/nodes-and-clients/#sync-modes),以及 [運行](/developers/docs/nodes-and-clients/run-a-node/) 和 [使用它們](/developers/docs/apis/json-rpc/) 的方法。 ## 什麼是歸檔節點 -要理解歸檔節點的重要性,讓我們先釐清「狀態」的概念。 以太坊可以被稱為_基於交易的狀態機_。 它包括了帳戶以及執行交易並改變帳戶狀態的應用程式。 有關每個帳戶和合約的全球數據儲存在一個稱為狀態的 字典樹資料庫中。 這由執行層 (EL) 用戶端處理,並包括: +要理解歸檔節點的重要性,讓我們先釐清「狀態」的概念。 以太坊可以稱為_以交易為基礎的狀態機_。 它包括了帳戶以及執行交易並改變帳戶狀態的應用程式。 有關每個帳戶和合約的全球數據儲存在一個稱為狀態的 字典樹資料庫中。 這由執行層 (EL) 用戶端處理,並包括: - 帳戶餘額和隨機數 - 合約代碼與儲存 -- 共識相關資料,例如質押存款合約 +- 共識相關資料,例如:質押存款合約 -為了與網路互動、驗證和產生新區塊,以太坊用戶端必須跟上最近的變化(鏈尖),因此需要知道當前狀態。 設定為全節點的執行層用戶端會驗證並跟隨網路的最新狀態,但只緩存過去的少數幾個狀態,例如與最後 128 個區塊相關的狀態,因此它可以處理鏈重組並快速存取最近的資料。 最近的狀態是所有用戶端需要用來驗證傳入交易和使用網路的資料。 +為了與網路互動、驗證和產生新區塊,以太坊用戶端必須跟上最近的變化(鏈尖),因此需要知道當前狀態。 設定為完整節點的執行層用戶端會驗證並追蹤網路的最新狀態,但只會快取過去的少數幾個狀態 (例如:與最近 128 個區塊相關的狀態),因此它可以處理鏈重組,並提供對近期資料的快速存取。 最近的狀態是所有用戶端需要用來驗證傳入交易和使用網路的資料。 你可以將狀態想像為給定區塊的瞬間網路快照,而將存檔視為歷史重播。 -歷史狀態可以安全地修剪,因為它們對網路的運作並不必要,而且用戶端保留所有過時資料是無用的。 存在於某個最近區塊(例如區塊頭之前的 128 個區塊)之前的狀態實際上已被丟棄。 全節點只保留歷史區塊鏈資料(區塊和交易)以及可供全節點用來根據請求重新產生較早狀態的偶然歷史快照。 它們透過在以太坊虛擬機中重新執行過去的交易來實現這一點,當所需的狀態距離最近的快照很遠時,這可能在計算上要求很高。 +歷史狀態可以安全地修剪,因為它們對網路的運作並不必要,而且用戶端保留所有過時資料是無用的。 在某個近期區塊 (例如:標頭前的 128 個區塊) 之前存在的狀態,實際上會被捨棄。 全節點只保留歷史區塊鏈資料(區塊和交易)以及可供全節點用來根據請求重新產生較早狀態的偶然歷史快照。 它們透過在以太坊虛擬機中重新執行過去的交易來實現這一點,當所需的狀態距離最近的快照很遠時,這可能在計算上要求很高。 然而,這意味著在全節點上存取歷史狀態會消耗大量的算力。 用戶端可能需要執行所有過去的交易並從創世塊計算一個歷史狀態。 歸檔節點透過不僅儲存最近的狀態,而且儲存每個區塊後建立的每個歷史狀態來解決這個問題。 它基本上是以更大的磁碟空間需求作為代價。 @@ -35,8 +35,8 @@ sidebarDepth: 2 狀態存檔的主要好處是可以快速存取歷史狀態查詢。 舉例來說,歸檔節點將即時返回以下結果: -- _0x1337 帳戶在區塊 15537393 中的以太幣餘額是多少?_ -- _0x 合約在區塊 1920000 中的 0x 代幣餘額是多少?_ +- _0x1337... 帳戶的 ETH 餘額為何..._ _在區塊 15537393?_ +- _在區塊 1920000,合約 0x 中的代幣 0x 餘額是多少?_ 如上所述,全節點會需要透過以太坊虛擬機執行以產生此資料,這會使用 CPU 並花費時間。 歸檔節點在磁碟上存取它們,且立即回應。 對一些特定基礎設施來說,這非常有用,例如: @@ -46,33 +46,34 @@ sidebarDepth: 2 - 去中心化應用程式開發者 - 審計和合規 -也有各種免費的[服務](/developers/docs/nodes-and-clients/nodes-as-a-service/)可以存取歷史資料。 由於運行歸檔節點要求更高,因此這種存取往往受到限制,且只適用於偶爾存取。 如果你的專案需要持續存取歷史資料,你應該考慮運行一個自己的歸檔節點。 +也有各種免費的 [服務](/developers/docs/nodes-and-clients/nodes-as-a-service/) 能讓您存取歷史資料。 由於運行歸檔節點要求更高,因此這種存取往往受到限制,且只適用於偶爾存取。 如果你的專案需要持續存取歷史資料,你應該考慮運行一個自己的歸檔節點。 ## 實作和使用 歸檔節點在此處表示由面向使用者的執行層用戶端提供的資料,因為它們處理狀態資料庫並提供 JSON-RPC 端點。 設定選項、同步時間和資料庫大小可能因用戶端而異。 詳細資訊請參考你的用戶端提供的文檔。 -在開始建立你的歸檔節點前,請先了解用戶端之間的差異,尤其是[硬體要求](/developers/docs/nodes-and-clients/run-a-node/#requirements)的部分。 多數用戶端沒有最佳化這個部分,且它們的存檔需要超過 12TB 的儲存空間。 與如 Erigon 的實作對比,Erigon 可以在低於 3TB 的空間儲存相同的資料,使其成為運行歸檔節點最有效率的方式。 +在開始運行您自己的存檔節點前,請先了解不同用戶端之間的差異,特別是各種 [硬體需求](/developers/docs/nodes-and-clients/run-a-node/#requirements)。 多數用戶端沒有最佳化這個部分,且它們的存檔需要超過 12TB 的儲存空間。 與如 Erigon 的實作對比,Erigon 可以在低於 3TB 的空間儲存相同的資料,使其成為運行歸檔節點最有效率的方式。 ## 推薦的做法 -除了一般的[運行節點建議](/developers/docs/nodes-and-clients/run-a-node/)外,歸檔節點可能更注重硬體和維護。 考慮到 Erigon 的[關鍵功能](https://github.com/ledgerwatch/erigon#key-features),最實用的方法是使用 [Erigon](/developers/docs/nodes-and-clients/#erigon)用戶端實作。 +除了 [運行節點的一般建議](/developers/docs/nodes-and-clients/run-a-node/) 之外,存檔節點可能對硬體和維護有更高的要求。 考量到 Erigon 的 [主要功能](https://github.com/ledgerwatch/erigon#key-features),最實際的方法是使用 [Erigon](/developers/docs/nodes-and-clients/#erigon) 用戶端實作。 ### 硬體 -永遠在用戶端文檔中確認滿足了特定模式的硬體要求。 對歸檔節點來說,最大的需求是磁碟空間。 取決於用戶端的不同,可能從 3TB 到 12TB 都有。 雖然硬碟被認為可能是儲存大量資料的更好辦法,但同步資料和不斷地更新鏈頭需要固態硬碟。 [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) 硬碟足夠好,但它要有可靠的品質,至少要 [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences)。 磁碟可以安裝在有足夠插槽的桌機或伺服器中。 這些專用設備適合需要長時間正常運行的節點。 在筆電上運行也是完全可行的,但便攜性將帶來額外的成本。 +永遠在用戶端文檔中確認滿足了特定模式的硬體要求。 +對歸檔節點來說,最大的需求是磁碟空間。 取決於用戶端的不同,可能從 3TB 到 12TB 都有。 雖然硬碟被認為可能是儲存大量資料的更好辦法,但同步資料和不斷地更新鏈頭需要固態硬碟。 [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) 硬碟已足夠,但應具備可靠的品質,至少是 [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences) 等級。 磁碟可以安裝在有足夠插槽的桌機或伺服器中。 這些專用設備適合需要長時間正常運行的節點。 在筆電上運行也是完全可行的,但便攜性將帶來額外的成本。 -所有的資料都需要放入一個磁碟區中,所以磁碟必須合併,如 [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) 或 LVM。 或許 [ZFS](https://en.wikipedia.org/wiki/ZFS) 也是值得考慮的選擇,因為它支援「寫入時複製」,確保了資料正確寫入磁碟而沒有任何低階錯誤。 +所有資料都必須放在單一磁碟區中,因此必須合併磁碟,例如:使用 [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) 或 LVM。 或許也值得考慮使用 [ZFS](https://en.wikipedia.org/wiki/ZFS),因為它支援「寫入時複製」,可確保資料正確寫入磁碟,不會有任何低階錯誤。 -關於更多避免資料庫損毀的穩定安全方法,特別是專業設定中,如果你的系統支援,可以考慮 [ECC 記憶體](https://en.wikipedia.org/wiki/ECC_memory)。 RAM 的大小一般建議和全節點一樣,但更多的 RAM 可以加速同步速度。 +為了在防止意外的資料庫損壞方面獲得更高的穩定性和安全性,特別是在專業設定中,如果您的系統支援,請考慮使用 [ECC 記憶體](https://en.wikipedia.org/wiki/ECC_memory)。 RAM 的大小一般建議和全節點一樣,但更多的 RAM 可以加速同步速度。 在初始同步時,在歸檔模式的用戶端會執行自創世塊以來的每個交易。 執行速度大多時候受到 CPU 限制,所以更快的 CPU 對減少初始同步時間有幫助。 在平均水準的消費級電腦上,初始同步可能會長達一個月。 -## 了解更多 {#further-reading} +## 延伸閱讀 {#further-reading} -- [以太坊全節點與歸檔節點](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode,2020 年 9 月_ -- [建立你自己的以太坊歸檔節點](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush,2021 年 8 月_ -- [如何設定 Erigon、Erigon 的 RPC 和 TrueBlocks(抓取和應用程式介面)作為服務](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _ - Magnus Hansson,2022 年 9 月更新_ +- [以太坊完整節點與存檔節點比較](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode,2022 年 9 月_ +- [建立您自己的以太坊存檔節點](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush,2021 年 8 月_ +- [如何將 Erigon、Erigon 的 RPC 與 TrueBlocks (抓取與 API) 設定為服務](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson,2022 年 9 月更新_ ## 相關主題 {#related-topics} diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/bootnodes/index.md index 794f763ab75..9847f50c8c1 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/bootnodes/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/bootnodes/index.md @@ -1,31 +1,31 @@ --- -title: 以太坊引導節點介紹 -description: 你需要知道的引導節點基礎資訊 +title: "以太坊引導節點介紹" +description: "你需要知道的引導節點基礎資訊" lang: zh-tw --- 當一個新節點加入以太坊網路時,它需要連接至網路上已經存在的其他節點,以找到新的對等節點。 這些以太坊網路的進入點被稱為引導節點。 用戶端中通常有個硬編碼進去的引導節點清單。 這些引導節點通常由以太坊基金會的 DevOps 團隊或客戶團隊自身負責運行。 注意,引導節點與靜態節點不同。 靜態節點會被多次呼叫,而引導節點只有在沒有足夠的節點可以連接,或節點需要引導一些新連接時才會被呼叫。 -## 連接至引導節點 {#connect-to-a-bootnode} +## 連線至引導節點 {#connect-to-a-bootnode} -大部分的用戶端中都有個內建的引導節點清單,但你也可能會想運行自己的引導節點,或者使用沒在用戶端硬編碼清單上的引導節點。 這種情況下,你可以在啟動用戶端時指定引導節點,如下所示(這個是 Geth 的例子,請查看你的用戶端文檔): +大部分的用戶端都有內建的引導節點清單,但您可能也想運行自己的引導節點,或使用一個不在用戶端硬編碼清單上的引導節點。 這種情況下,你可以在啟動用戶端時指定引導節點,如下所示(這個是 Geth 的例子,請查看你的用戶端文檔): ``` -geth --bootnodes "enode://@:" +geth --bootnodes \ ``` -## 運行引導節點 {#run-a-bootnode} +## 執行啟動節點 {#run-a-bootnode} -引導節點是不在 NAT([網路位址轉譯](https://www.geeksforgeeks.org/network-address-translation-nat/))後的全節點。 只要可以公開可用,每個全節點都可以作為引導節點。 +啟動節點是沒有位於 [網路位址轉換 (NAT)](https://www.geeksforgeeks.org/network-address-translation-nat/) 後方的完整節點。 只要可以公開可用,每個全節點都可以作為引導節點。 -當你啟動節點時,它會記錄你的 [enode](/developers/docs/networking-layer/network-addresses/#enode),這是可供其他人連接你的節點的公開識別碼。 +當你啟動節點時,它應會記錄你的 [enode](/developers/docs/networking-layer/network-addresses/#enode),這是其他人可用來連接你節點的公開識別碼。 通常每次啟動都會重新產生 enode,所以請務必查看你的用戶端文檔,以了解如何為你的引導節點產生永久的 enode。 要成為一個好的引導節點,增加該節點能連接的對等節點最大數量是個好辦法。 運行一個有許多對等節點的引導節點會顯著增加帶寬需求。 -## 可用的引導節點 {#available-bootnodes} +## 可用的啟動節點 {#available-bootnodes} -Go-ethereum 內建的引導節點清單可以在[此處](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23)查看。 這些引導節點由以太坊基金會和 go-ethereum 團隊維護。 +go-ethereum 內建的啟動節點清單可以在[這裡](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23)找到。 這些引導節點由以太坊基金會和 go-ethereum 團隊維護。 還有由志願者維護的引導節點的其他清單。 請確認至少包含一個官方的引導節點,否則你可能會受到日蝕攻擊。 diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/client-diversity/index.md index 47f2db1d5bb..93f8827e554 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/client-diversity/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/client-diversity/index.md @@ -1,87 +1,106 @@ --- -title: 用戶的多樣化 -description: 對以太坊用戶端多樣性的重要性的高階解釋。 +title: "用戶端多樣化" +description: "對以太坊用戶端多樣性的重要性的高階解釋。" lang: zh-tw sidebarDepth: 2 --- 以太坊節點的行為是由它所運行的用戶端軟體控制。 有許多生產等級的以太坊用戶端,每個用戶端都由不同團隊以不同程式語言開發和維護。 用戶端是以相同規範建立的,以確保用戶端彼此可以無縫互相通訊,且具有相同的功能及提供相等的使用者體驗。 然而,目前節點間的用戶端分佈仍然不夠均勻,無法充分發揮這種網路強化的潛力。 理想上,使用者大致平均分配到各個用戶端,以為網路帶來儘可能多的用戶端多樣性。 -## 前置要求 {#prerequisites} +## 先決條件 {#prerequisites} -如果你還不了解節點和用戶端是什麼,請先閱讀[節點和用戶端](/developers/docs/nodes-and-clients/)。 [執行](/glossary/#execution-layer)和[共識](/glossary/#consensus-layer)層在術語表中有定義。 +如果你還不了解節點和用戶端是什麼,請參閱[節點和用戶端](/developers/docs/nodes-and-clients/)。 詞彙表中定義了[執行層](/glossary/#execution-layer)和[共識層](/glossary/#consensus-layer)。 ## 為什麼會有多樣化的用戶端呢? {#why-multiple-clients} -存在多種獨立開發和維護的用戶端是有利的,因為用戶端多樣性使網路應對攻擊和錯誤時更有彈性。 多種用戶端是以太坊獨有的優勢 - 其他區塊鏈依賴單一用戶端的正確性。 然而,只擁有多種用戶端還不夠,它們必須被社群採用,且活躍的節點在它們間需要相對平均分佈。 +存在多種獨立開發和維護的用戶端是有利的,因為用戶端多樣性使網路應對攻擊和錯誤時更有彈性。 多種用戶端是以太坊獨有的優勢 - 其他區塊鏈依賴單一用戶端的正確性。 然而,僅僅擁有多個可用的用戶端是不夠的,它們必須被社群採用,且全部的活躍節點必須相對平均地分佈在它們之間。 ## 為什麼用戶端多樣化重要? {#client-diversity-importance} 有許多獨立開發和維護的用戶端對去中心化網路的健康十分重要。 讓我們探索一下其中原因。 -### 錯誤 {#bugs} +### 程式錯誤 {#bugs} 當單一用戶端中存在錯誤,如果該用戶端只代表少數以太坊節點時,對網路的風險較小。 節點在許多用戶端上分佈大致均勻,大多數用戶端遭受共同問題的可能性很小,網路因此更加穩健。 -### 對攻擊的抗性 {#resilience} +### 抵禦攻擊的韌性 {#resilience} -用戶端多樣性提供了攻擊抗性。 舉例來說,一個[欺騙特定用戶端](https://twitter.com/vdWijden/status/1437712249926393858)切換到特定分支鏈的攻擊不太可能成功,因為其他的用戶端不太可能以相同方式被利用,且規範鏈維持正常不變。 低用戶端多樣性會增加主導用戶端被駭的風險。 用戶端多樣性已被證明是抵禦網路上惡意攻擊的重要防禦,舉例來說 2016 年的上海阻斷服務攻擊是可能成功的,因為攻擊者能夠欺騙主導用戶端 (Geth) 在每個區塊中執行數千萬次的慢速磁碟讀寫操作。 因為替代用戶端同時在線且沒有同樣的漏洞,以太坊才得以在修復 Geth 的漏洞期間抵禦攻擊並持續運行。 +用戶端多樣性提供了攻擊抗性。 舉例來說,一種[欺騙特定用戶端](https://twitter.com/vdWijden/status/1437712249926393858)到特定鏈分支的攻擊不太可能成功,因為其他用戶端不太可能以同樣的方式被利用,而且正統鏈仍然完好無損。 低用戶端多樣性會增加主導用戶端被駭的風險。 用戶端多樣性已被證明是抵禦網路上惡意攻擊的重要防禦,舉例來說 2016 年的上海阻斷服務攻擊是可能成功的,因為攻擊者能夠欺騙主導用戶端 (Geth) 在每個區塊中執行數千萬次的慢速磁碟讀寫操作。 因為替代用戶端同時在線且沒有同樣的漏洞,以太坊才得以在修復 Geth 的漏洞期間抵禦攻擊並持續運行。 -### 權益證明最終確定性 {#finality} +### 權益證明的最終性 {#finality} 超過 33% 的以太坊節點共識用戶端中都存在的錯誤可能會阻止共識層的最終確定,這表示使用者沒辦法相信交易在某個時刻不會被撤銷或更改。 這對建立在以太坊上的許多應用程式是非常大的問題,尤其是去中心化金融。 - 更糟糕的是,在兩三個主流用戶端中的重大錯誤可能會導致鏈錯誤地分叉和最終確定,使大量的驗證者被卡在無效的鏈上。 如果這些驗證者想重新加入正確的鏈,它們可能會面臨罰沒或緩慢且昂貴的自願提款和重新啟用流程。 罰沒的規模與有罪節點的數量成正比,其中三分之二的主流節點會被罰沒最高金額(32 以太幣)。 + 更糟的是,擁有三分之二多數的用戶端如果存在一個嚴重錯誤,可能導致鏈錯誤地分裂和敲定,造成大量驗證者卡在無效鏈上。 如果這些驗證者想重新加入正確的鏈,它們可能會面臨罰沒或緩慢且昂貴的自願提款和重新啟用流程。 罰沒的規模與有罪節點的數量成正比,其中三分之二的主流節點會被罰沒最高金額(32 以太幣)。 雖然這些情況不太可能發生,以太坊生態系可以透過平均分佈用戶端至各個活躍節點以降低風險。 理想上,不會有共識用戶端超過總節點數的 33%。 -### 共同的責任 {#responsibility} +### 共同責任 {#responsibility} 擁有主流用戶端也有人力成本問題。 它為小型開發團隊帶來了過多壓力和責任。 越低的用戶端多樣性,會使得開發者維護主流用戶端的負擔更重。 將此責任分散至多個團隊,對以太坊網路上的節點和網路上的開發者的健康都有益。 ## 目前的用戶端多樣性 {#current-client-diversity} -![圓餅圖顯示了用戶端多樣性](./client-diversity.png) _圖表資料來自 [ethernodes.org](https://ethernodes.org) 和 [ clientdiversity.org](https://clientdiversity.org/)_ +### 執行用戶端 {#execution-clients-breakdown} -上方的兩個圓餅圖顯示了目前執行層和共識層用戶端上的節點多樣性的快照(2022 年 1 月撰文時)。 執行層由 [Geth](https://geth.ethereum.org/) 壓倒性地主導,[Open Ethereum](https://openethereum.github.io/) 排名第二,[Erigon](https://github.com/ledgerwatch/erigon) 第三,[Nethermind](https://nethermind.io/) 第四,其他用戶端相加還不到整個網路的 1%。 最常在共識層上被使用的用戶端 - [Prysm](https://prysmaticlabs.com/#projects) - 的主導地位不及 Geth,但還是佔了超過整個網路的 60%。 [Lighthouse](https://lighthouse.sigmaprime.io/) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分別佔約 20% 和 14%,其他用戶端則很少被使用。 + -執行層資料是在 2022 年 1 月 23 日從 [Ethernodes](https://ethernodes.org) 取得的。 共識層的資料是從 [Michael Sproul](https://github.com/sigp/blockprint) 取得的。 共識層資料較難取得,因為共識層用戶端並不總是有可用於識別它們的明確足跡。 該資料是使用分類演算法產生的,有時候會把一些小眾用戶端搞混(點按[此處](https://twitter.com/sproulM_/status/1440512518242197516)以獲得更多資訊)。 上圖中,這些不明確的分類使用了「/」或標籤(例如 Nimbus/Teku)標示。 儘管如此,很顯然主要網路都在運行 Prysm。 此資料是一組固定區塊的快照(在這個例子中是時隙 2048001 至 2164916 中的信標區塊),Prysm 的主導地位有時更高,超過了 68%。 儘管只是快照,但圖中的數值提供了我們目前整體用戶端多樣性狀態的良好認識。 +### 共識用戶端 {#consensus-clients-breakdown} -現在已可在 [clientdiversity.org](https://clientdiversity.org/) 上查看共識層的最新用戶端多樣性資料。 + -## 執行層 {#execution-layer} - -直到現在,關於用戶端多樣性的討論主要集中在共識層。 然而,執行用戶端 [Geth](https://geth.ethereum.org) 目前約佔所有節點的 85%。 這個比例問題很大,與共識用戶端的原因一樣。 舉例來說,Geth 中影響交易處理或建立執行有效負載的錯誤可能會導致共識用戶端最終確定有問題或錯誤的交易。 因此,如果執行用戶端分佈狀況更均勻,以太坊將更加健康,理想情況下不該有用戶端網路佔比超過 33%。 - -## 使用小眾用戶端 {#use-minority-client} - -解決用戶端多樣性需要的不只是個人使用者選擇小眾用戶端 - 它還需要挖礦/驗證者池及主要去中心化應用程式和交易所等機構更換用戶端。 然而,所有使用者都可以儘自己的一份力量,以糾正目前的不平衡,並讓所有可用的以太坊軟體使用分佈正常化。 合併後,所有節點營運者都需要運行執行用戶端和共識用戶端。 選擇以下推薦的用戶端組合,可幫助提升用戶端多樣性。 - -### 執行客戶 {#execution-clients} +此圖表可能已過時 — 請前往 [ethernodes.org](https://ethernodes.org) 和 [clientdiversity.org](https://clientdiversity.org) 取得最新資訊。 -[Besu](https://www.hyperledger.org/use/besu) +上方的兩個圓餅圖顯示了執行層和共識層目前用戶端多樣性的快照(撰寫於 2025 年 10 月)。 用戶端多樣性多年來有所改善,執行層中 [Geth](https://geth.ethereum.org/) 的主導地位已見減弱,[Nethermind](https://www.nethermind.io/nethermind-client) 緊隨其後,[Besu](https://besu.hyperledger.org/) 第三,[Erigon](https://github.com/ledgerwatch/erigon) 第四,而其他用戶端則佔不到網路的 3%。 共識層最常用的用戶端——[Lighthouse](https://lighthouse.sigmaprime.io/)——與第二常用的用戶端非常接近。 [Prysm](https://prysmaticlabs.com/#projects) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分別佔約 31% 和約 14%,其他用戶端則很少被使用。 -[Nethermind](https://downloads.nethermind.io/) +執行層的資料於 2025 年 10 月 26 日從 [supermajority.info](https://supermajority.info/) 取得。 共識用戶端的資料是從 [Michael Sproul](https://github.com/sigp/blockprint) 取得的。 共識層資料較難取得,因為共識層用戶端並不總是有可用於識別它們的明確足跡。 此資料是透過一種分類演算法產生的,該演算法有時會混淆一些小眾用戶端(詳情請見[此處](https://twitter.com/sproulM_/status/1440512518242197516))。 在上方的圖表中,這些模糊的分類是採用二選一的標籤處理 (例如 Nimbus/Teku)。 儘管如此,很顯然主要網路都在運行 Prysm。 儘管只是快照,但圖中的數值提供了我們目前整體用戶端多樣性狀態的良好認識。 -[Erigon](https://github.com/ledgerwatch/erigon) +關於共識層用戶端多樣性的最新資料,現已公布在 [clientdiversity.org](https://clientdiversity.org/)。 -[Go-Ethereum](https://geth.ethereum.org/) +## 執行層 {#execution-layer} -### 共識用戶端 {#consensus-clients} +直到現在,關於用戶端多樣性的討論主要集中在共識層。 然而,執行用戶端 [Geth](https://geth.ethereum.org) 目前約佔所有節點的 85%。 這個比例問題很大,與共識用戶端的原因一樣。 舉例來說,Geth 中影響交易處理或建立執行有效負載的錯誤可能會導致共識用戶端最終確定有問題或錯誤的交易。 因此,如果執行用戶端分佈狀況更均勻,以太坊將更加健康,理想情況下不該有用戶端網路佔比超過 33%。 -[Nimbus](https://nimbus.team/) +## 使用小眾用戶端 {#use-minority-client} -[Lighthouse](https://github.com/sigp/lighthouse) +解決用戶端多樣性需要的不只是個人使用者選擇小眾用戶端 - 它還需要驗證者池及主要去中心化應用程式和交易所等機構更換用戶端。 然而,所有使用者都可以儘自己的一份力量,以糾正目前的不平衡,並讓所有可用的以太坊軟體使用分佈正常化。 合併後,所有節點營運者都需要運行執行用戶端和共識用戶端。 選擇以下推薦的用戶端組合,可幫助提升用戶端多樣性。 -[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) +### 執行用戶端 {#execution-clients} -[Lodestar](https://github.com/ChainSafe/lodestar) +- [Besu](https://www.hyperledger.org/use/besu) +- [Nethermind](https://downloads.nethermind.io/) +- [Erigon](https://github.com/ledgerwatch/erigon) +- [Go-Ethereum](https://geth.ethereum.org/) +- [Reth](https://reth.rs/) -[Prysm](https://prysm.offchainlabs.com/docs/) +### 共識用戶端 {#consensus-clients} -[Grandine](https://docs.grandine.io/) +- [Nimbus](https://nimbus.team/) +- [Lighthouse](https://github.com/sigp/lighthouse) +- [Teku](https://consensys.io/teku) +- [Lodestar](https://github.com/ChainSafe/lodestar) +- [Prysm](https://prysm.offchainlabs.com/docs/) +- [Grandine](https://docs.grandine.io/) -技術性使用者可以透過為小眾用戶端撰寫更多教學和文檔,並鼓勵其節點營運的對等節點從主導用戶端遷出,以幫助加速此流程。 [clientdiversity.org](https://clientdiversity.org/) 上有切換到小眾共識用戶端的指南。 +技術性使用者可以透過為小眾用戶端撰寫更多教學和文檔,並鼓勵其節點營運的對等節點從主導用戶端遷出,以幫助加速此流程。 關於如何切換至小眾共識用戶端的指南,可在 [clientdiversity.org](https://clientdiversity.org/) 上找到。 ## 用戶端多樣性儀表板 {#client-diversity-dashboards} @@ -90,22 +109,24 @@ sidebarDepth: 2 **共識層:** - [Rated.network](https://www.rated.network/) -- [clientdiversity.org](https://clientdiversity.org/) **執行層:** +- [clientdiversity.org](https://clientdiversity.org/) + +**執行層:** - [supermajority.info](https://supermajority.info//) - [Ethernodes](https://ethernodes.org/) -## 衍生閱讀 {#further-reading} +## 延伸閱讀 {#further-reading} -- [以太坊共識層上的用戶端多樣性](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) -- [以太坊合併:運行主流用戶端需自行承擔風險!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest,2022 年 3 月 24 日_ +- [以太坊共識層的用戶端多樣性](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) +- [以太坊合併:執行多數用戶端,後果自負!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest,2022 年 3 月 24 日_ - [用戶端多樣性的重要性](https://our.status.im/the-importance-of-client-diversity/) - [以太坊節點服務清單](https://ethereumnodes.com/) -- [用戶端多樣性的「五個為什麼」](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) -- [以太坊多樣性及如何解決 (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) +- [用戶端多樣性問題的「五個為什麼」](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) +- [以太坊的多樣性以及如何解決 (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) - [clientdiversity.org](https://clientdiversity.org/) ## 相關主題 {#related-topics} -- [運行以太坊節點](/run-a-node/) -- [節點與用戶端](/developers/docs/nodes-and-clients/) +- [執行一個以太坊節點](/run-a-node/) +- [節點和用戶端](/developers/docs/nodes-and-clients/) diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/index.md index 65fc363137f..cc999c04c45 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/index.md @@ -1,15 +1,15 @@ --- -title: 節點和客戶 -description: 以太坊節點及用戶端軟體概述,以及如何設定節點和你為何應該這麼做。 +title: "節點和用戶端" +description: "以太坊節點及用戶端軟體概述,以及如何設定節點和你為何應該這麼做。" lang: zh-tw sidebarDepth: 2 --- 以太坊是一個由許多電腦(稱為節點)組成的分散式網路,這些節點運行能夠驗證區塊和交易資料的軟體。 這些軟體必須於你的電腦上運行,將電腦轉換成以太坊節點。 一個節點由兩個獨立的軟體(稱為「用戶端」)組成。 -## 基本資訊 {#prerequisites} +## 先決條件 {#prerequisites} -在深入研究並執行屬於你的以太坊用戶端實例之前,你應該瞭解點對點網路的概念和[以太坊虛擬機基礎知識](/developers/docs/evm/)。 請參閱[以太坊簡介](/developers/docs/intro-to-ethereum/)。 +在深入研究並執行屬於你的以太坊用戶端實例之前,你應該瞭解點對點網路的概念和[以太坊虛擬機基礎知識](/developers/docs/evm/)。 請查看我們的[以太坊簡介](/developers/docs/intro-to-ethereum/)。 如果你對節點這個主題還很陌生,推薦你首先查看我們適合使用者的[運行以太坊節點](/run-a-node)簡介。 @@ -20,41 +20,44 @@ sidebarDepth: 2 - 執行用戶端(又稱為執行引擎,EL 用戶端或舊稱為 以太坊 1 用戶端)監聽網路上廣播的新交易,在以太坊虛擬機器 (EVM) 中執行交易,並保存所有目前以太坊資料的最新狀態和資料庫。 - 共識用戶端(又稱為信標鏈節點、CL 用戶端或舊稱為以太坊 2 用戶端)執行權益證明共識演算法,使網路能夠依據來自執行用戶端的驗證過的資料達成一致。 此外,還有第三個軟體,稱為「驗證者」;驗證者可以被新增到共識用戶端中,讓節點能參與保護網路安全。 -這些用戶端共同運作以追蹤以太坊區塊鏈的頭部並使用戶可以和以太坊網路互動。 這種多個軟體協同工作的模組化設計稱為[封裝複雜性](https://vitalik.eth.limo/general/2022/02/28/complexity.html)。 此方法可以更簡單地無縫執行[合併](/roadmap/merge),讓用戶端軟體更容易維運和開發,並能重複利用個別的用戶端,例如在[二層網路生態系統](/layer-2/)中使用。 +這些用戶端共同運作以追蹤以太坊區塊鏈的頭部並使用戶可以和以太坊網路互動。 這種多個軟體協同工作的模組化設計稱為[封裝複雜性](https://vitalik.eth.limo/general/2022/02/28/complexity.html)。 此方法可以更簡單地無縫執行[合併](/roadmap/merge),讓用戶端軟體更容易維運和開發,並能重複利用個別的用戶端,例如在[第 2 層生態系統](/layer-2/)中使用。 -![關聯的執行和共識用戶端](./eth1eth2client.png) 關聯的執行用戶端和共識用戶端的簡化示意圖。 +![執行用戶端與共識用戶端配對](./eth1eth2client.png) +執行用戶端與共識用戶端配對的簡化圖。 -### 用戶的多樣化 {#client-diversity} +### 用戶端多樣性 {#client-diversity} -[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)和[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)存在於由不同團隊開發的多種程式語言中。 +[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)和[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)都由不同的團隊以多種程式語言開發。 -多種用戶端實作可以降低對單一程式碼庫的依賴,從而使網路更強大。 理想目標是達到多樣性,沒有任一用戶端在網路中佔有主導地位,從而消除潛在的單點故障。 語言多樣化也可以吸引更廣泛的開發者社群,並讓他們可以用自己偏好的語言來建立整合。 +多種用戶端實作可以降低對單一程式碼庫的依賴,從而使網路更強大。 理想目標是達到多樣性,沒有任一用戶端在網路中佔有主導地位,從而消除潛在的單點故障。 +語言多樣化也可以吸引更廣泛的開發者社群,並讓他們可以用自己偏好的語言來建立整合。 -瞭解更多關於[用戶端多樣化](/developers/docs/nodes-and-clients/client-diversity/)的資訊。 +深入瞭解[用戶端多元性](/developers/docs/nodes-and-clients/client-diversity/)。 這些實作的共通點就是都遵循一套統一規範。 這些規範決定以太坊網路和區塊鏈的運作方式。 所有的技術細節都已經定義,規範如下: - 最初的[以太坊黃皮書](https://ethereum.github.io/yellowpaper/paper.pdf) - [執行規範](https://github.com/ethereum/execution-specs/) - [共識規範](https://github.com/ethereum/consensus-specs) -- 各種[網路升級](/ethereum-forks/)中實作的[以太坊改善提議](https://eips.ethereum.org/) +- 在各種[網路升級](/ethereum-forks/)中實施的 [EIP](https://eips.ethereum.org/) ### 追蹤網路中的節點 {#network-overview} 多種追蹤器提供以太坊網路中節點的即時概覽。 必須注意,由於去中心化網路的特性,這些爬蟲僅能提供有限的網路資訊,並且可能會報告不同的結果。 -- Etherscan 提供的[節點地圖](https://etherscan.io/nodetracker) -- Bitfly 提供的[Ethernodes](https://ethernodes.org/) -- Chainsafe 提供的 [Nodewatch](https://www.nodewatch.io/),爬取共識節點 -- [Monitoreth](https://monitoreth.io/) – 由 MigaLabs 開發的分散式網路監控工具 +- Etherscan 的[節點地圖](https://etherscan.io/nodetracker) +- Bitfly 的 [Ethernodes](https://ethernodes.org/) +- Chainsafe 的 [Nodewatch](https://www.nodewatch.io/),爬取共識節點 +- [Monitoreth](https://monitoreth.io/) - MigaLabs 開發的分散式網路監控工具 +- [每週網路健康報告](https://probelab.io) - 由 ProbeLab 提供,使用 [Nebula crawler](https://github.com/dennis-tra/nebula) 和其他工具 ## 節點類型 {#node-types} -如果你想[運行你自己的節點](/developers/docs/nodes-and-clients/run-a-node/),你需要瞭解:不同類型的節點以不同的方式消耗資料。 事實上,用戶端可以運行三種類型的節點:輕節點、全節點和歸檔節點。 還可以選擇不同的同步策略,從而達成更快的同步時間。 同步是指取得以太坊最新狀態資訊的速度。 +如果你想[執行你自己的節點](/developers/docs/nodes-and-clients/run-a-node/),你應該了解節點有多種類型,它們消耗資料的方式也不同。 事實上,用戶端可以運行三種類型的節點:輕節點、全節點和歸檔節點。 還可以選擇不同的同步策略,從而達成更快的同步時間。 同步是指取得以太坊最新狀態資訊的速度。 -### 全節點 {#full-node} +### 完整節點 {#full-node} -全節點對區塊鏈上的區塊逐一驗證,包括下載和驗證每個區塊的區塊體和狀態資料。 全節點有不同的類型 - 一些全節點會從初始區塊開始,驗證整個區塊鏈歷史上的每一個區塊。 另外一些全節點,僅從較近期的、它們認為有效的區塊開始驗證(例如:Geth 的 「快照同步」)。 不論從哪裡開始,全節點僅保留相對近期的資料(通常是最新的 128 個區塊)的本機副本,允許刪除較舊的資料以節省磁碟空間。 舊的資料可以在需要時重新生成。 +全節點對區塊鏈上的區塊逐一驗證,包括下載和驗證每個區塊的區塊體和狀態資料。 全節點有不同的類型 - 一些全節點會從初始區塊開始,驗證整個區塊鏈歷史上的每一個區塊。 其他節點則從它們信任為有效的較新區塊開始驗證 (例如 Geth 的「快照同步」)。 不論從哪裡開始,全節點僅保留相對近期的資料(通常是最新的 128 個區塊)的本機副本,允許刪除較舊的資料以節省磁碟空間。 舊的資料可以在需要時重新生成。 - 儲存完整區塊鏈資料(儘管會定期修剪,全節點並不會將所有狀態資料儲存回創世塊) - 參與區塊驗證,驗證所有區塊和狀態。 @@ -65,60 +68,61 @@ sidebarDepth: 2 從初始區塊開始驗證每一個區塊並且從不刪除任何已下載資料的全節點,稱為歸檔節點。 -- 儲存全節點中保存的所有內容並建立歷史狀態檔案。 歸檔節點可供查詢鏈上資料,像是某個帳戶在第 #4,000,000 區塊的餘額,或是簡單可靠的測試一組自己的交易而無須使用追蹤功能來挖掘這些資料。 +- 儲存全節點中保存的所有內容並建立歷史狀態檔案。 歸檔節點可供查詢鏈上資料,像是某個帳戶在第 #4,000,000 區塊的餘額,或是簡單可靠的測試一組自己的交易而無須使用追蹤功能來驗證這些資料。 - 這些資料量以兆位元為單位,因此歸檔節點對於一般使用者來說較沒有吸引力,但是對於區塊瀏覽器、錢包服務商、鏈分析則十分方便。 以檔案以外的任何模式同步用戶端都會導致區塊鏈資料被修剪。 這意味著,沒有所有歷史狀態的存檔,但全節點能夠按需建立該存檔。 -瞭解更多關於[歸檔節點](/developers/docs/nodes-and-clients/archive-nodes)的資訊。 +深入瞭解[歸檔節點](/developers/docs/nodes-and-clients/archive-nodes)。 -### 輕節點 {#light-node} +### 輕量節點 {#light-node} -相較於下載所有的區塊,輕節點僅下載區塊頭。 這些區塊頭包含了區塊內容的摘要資訊。 輕節點所需要的任何其他資訊,都須向全節點發送請求來取得。 然後,輕節點可以根據區塊頭中的狀態根獨立驗證接收的資料。 輕節點讓使用者能參與以太坊網路,而無需運行全節點所需的強大的硬體或高帶寬。 最終,輕節點可能可以在行動電話或是嵌入式裝置中運行。 輕節點並不參與共識(意即不能成為礦工/驗證者),但是可以存取以太坊區塊鏈,並具有與全節點相同的功能和安全保證。 +相較於下載所有的區塊,輕節點僅下載區塊頭。 這些區塊頭包含了區塊內容的摘要資訊。 輕節點所需要的任何其他資訊,都須向全節點發送請求來取得。 然後,輕節點可以根據區塊頭中的狀態根獨立驗證接收的資料。 輕節點讓使用者能參與以太坊網路,而無需運行全節點所需的強大的硬體或高帶寬。 最終,輕節點可能可以在行動電話或是嵌入式裝置中運行。 輕量節點不參與共識 (即它們不能成為驗證者),但它們可以存取以太坊區塊鏈,其功能和安全保障與完整節點相同。 -輕量用戶端是以太坊積極發展的領域,我們預期很快可以看到共識層和執行層的輕量用戶端。 也有一些潛在的路徑可以透過[廣播網路](https://www.ethportal.net/)提供輕量用戶端資料。 這是有利的,因為廣播網路可以支援輕節點網路,而不需要全節點來處理請求。 +輕量用戶端是以太坊積極發展的領域,我們預期很快可以看到共識層和執行層的輕量用戶端。 +也有一些潛在的途徑可以透過 [gossip 網路](https://www.ethportal.net/) 提供輕量用戶端資料。 這是有利的,因為廣播網路可以支援輕節點網路,而不需要全節點來處理請求。 -以太坊目前還不支援大量的輕節點,但輕節點支援是預計在不久的將來會快速發展的領域。 特別像是 [Nimbus](https://nimbus.team/)、[Helios](https://github.com/a16z/helios) 及 [LodeStar](https://lodestar.chainsafe.io/) 等用戶端,目前都著重聚焦在輕節點。 +以太坊目前還不支援大量的輕節點,但輕節點支援是預計在不久的將來會快速發展的領域。 特別是像 [Nimbus](https://nimbus.team/)、[Helios](https://github.com/a16z/helios) 和 [LodeStar](https://lodestar.chainsafe.io/) 等用戶端目前都非常專注於輕量節點。 ## 運行以太坊節點之理由? {#why-should-i-run-an-ethereum-node} 運行節點可以讓你直接、去信任並私密地使用以太坊,同時透過保持網路強健和去中心化來支持以太坊網路。 -### 對你之好處 {#benefits-to-you} +### 對你的好處 {#benefits-to-you} 運行自己的節點讓你可以透過私密、自給自足和去信任的方式來使用以太坊。 你無須信任網路,因為你可以透過你的用戶端驗證資料。 「不要信任,要驗證」是流行的區塊鏈口號。 - 你的節點依據共識規則自行驗證所有交易和區塊。 這意味著你不必依賴或完全信任網路中的任何其他節點。 -- 你可以將自己的以太坊錢包與自己的節點一起使用。 你可以更安全和私密地使用去中心化應用程式,而不需要洩漏你的地址和餘額給中介機構。 一切都可以透過你的用戶端核實。 [MetaMask](https://metamask.io)、[Frame](https://frame.sh/) 和[許多其他錢包](/wallets/find-wallet/)都有提供遠端程序呼叫匯入,讓他們可以使用你的節點。 +- 你可以將自己的以太坊錢包與自己的節點一起使用。 你可以更安全和私密地使用去中心化應用程式,而不需要洩漏你的地址和餘額給中介機構。 一切都可以透過你的用戶端核實。 [MetaMask](https://metamask.io)、[Frame](https://frame.sh/) 和[許多其他錢包](/wallets/find-wallet/)都提供 RPC 匯入功能,讓它們可以使用你的節點。 - 你可以運行並自託管其他依賴以太坊資料的服務。 例如:信標鏈驗證者、諸如二層網路的軟體、基礎設施、區塊瀏覽器、支付處理商等等。 -- 你可以提供自己的自訂[遠端程序呼叫端點](/developers/docs/apis/json-rpc/)。 你甚至可以公開提供這些端點給社群,以協助他們避開大型中心化提供者。 -- 你可以透過**行程間通訊 (IPC)** 來連線到自己的節點,或者你可以重新編寫節點,使其能夠載入你的外掛程式。 這樣可以降低延遲,會帶來諸多好處,例如利用 web3 函式庫處理大量資料時,或是當你需要盡可能快速替換交易時(例如:預先交易)。 -- 你可以直接質押 ETH 來維護網路安全並賺取獎勵。 請參考[單獨質押](/staking/solo/)瞭解更多。 +- 你可以提供自己的自訂 [RPC 端點](/developers/docs/apis/json-rpc/)。 你甚至可以公開提供這些端點給社群,以協助他們避開大型中心化提供者。 +- 你可以透過**行程間通訊 (IPC)** 連線到你的節點,或重寫節點以將你的程式作為外掛程式載入。 這能提供低延遲,非常有幫助,例如在使用 web3 程式庫處理大量資料時,或是在你需要盡快替換交易時 (即搶先交易)。 +- 你可以直接質押 ETH 來維護網路安全並賺取獎勵。 請參閱[單獨質押](/staking/solo/)以開始使用。 -![你如何透過應用程式和節點存取以太坊](./nodes.png) +![如何透過應用程式和節點存取以太坊](./nodes.png) -### 網路優點 {#network-benefits} +### 網路效益 {#network-benefits} 多樣化的節點對於以太坊的健康、安全和營運彈性非常重要。 - 全節點強制執行共識規則,因此不會被欺騙而接受不遵循這些規則的區塊。 這對網路提供了額外的安全性,因為如果所有的節點都是不執行完整驗證的輕節點,驗證者可以攻擊網路。 -- 如果攻擊攻破了[權益證明](/developers/docs/consensus-mechanisms/pos/#what-is-pos)的加密貨幣經濟防禦,全節點可以選擇追隨最誠實的區塊鏈,執行社交恢復。 +- 在攻擊突破[權益證明](/developers/docs/consensus-mechanisms/pos/#what-is-pos)的加密經濟防禦時,完整節點可以選擇遵循誠實鏈來執行社會復原。 - 網路中的節點越多,就越能打造更多樣化和強韌的網路,這是去中心化的最終目的,提供一個抗審查且可靠的系統。 -- 全節點為依賴區塊鏈資料的輕量用戶端提供這些區塊鏈資料的存取權限。 輕節點不會儲存整個區塊鏈,而是透過[區塊頭中的狀態根](/developers/docs/blocks/#block-anatomy)來驗證資料。 若有需要,輕節點可以向全節點索取更多的資訊。 +- 全節點為依賴區塊鏈資料的輕量用戶端提供這些區塊鏈資料的存取權限。 輕量節點不儲存整個區塊鏈,而是透過[區塊標頭中的狀態根](/developers/docs/blocks/#block-anatomy)來驗證資料。 若有需要,輕節點可以向全節點索取更多的資訊。 如果你運行一個全節點,整個以太坊網路均會受益,即便你沒有運行驗證者。 -## 運行你自己的節點 {#running-your-own-node} +## 執行你自己的節點 {#running-your-own-node} 有興趣運行自己的以太坊用戶端嗎? -如需適合初學者的介紹,請造訪我們的[運行節點](/run-a-node)頁面以瞭解更多資訊。 +如需適合初學者的介紹,請瀏覽我們的[執行節點](/run-a-node)頁面以瞭解更多資訊。 -如果你是技術性使用者,請瞭解有關如何[啟動自己的節點](/developers/docs/nodes-and-clients/run-a-node/)的更多資訊和選項。 +如果你是技術型使用者,請深入瞭解關於如何[啟動你自己的節點](/developers/docs/nodes-and-clients/run-a-node/)的更多詳細資訊和選項。 ## 替代方案 {#alternatives} -設定自己的節點需要時間和資源,但你不一定需要自己運行。 在這種情況下,你可以使用第三方應用程式介面提供者。 有關使用這些服務的概述,請參閱[節點即服務](/developers/docs/nodes-and-clients/nodes-as-a-service/)。 +設定自己的節點需要時間和資源,但你不一定需要自己運行。 在這種情況下,你可以使用第三方應用程式介面提供者。 關於使用這些服務的總覽,請查看[節點即服務](/developers/docs/nodes-and-clients/nodes-as-a-service/)。 如果在你的社群中,有人運行以太坊節點並提供公開應用程式介面,你可以透過自訂遠端程序呼叫將你的錢包指向社群節點,比起隨機選擇一個可信的第三方,可以獲得更多的隱私。 @@ -126,20 +130,20 @@ sidebarDepth: 2 ## 執行用戶端 {#execution-clients} -以太坊社群維護多個開源執行用戶端(以前稱為「以太坊 1 用戶端」,或直接稱為「以太坊用戶端」),這些用戶端由不同團隊使用不同程式語言開發。 這使網路更強大也更[多樣化](/developers/docs/nodes-and-clients/client-diversity/)。 理想目標是達成多樣性,沒有任一用戶端佔有主導地位,以減少單點故障。 +以太坊社群維護多個開源執行用戶端(以前稱為「以太坊 1 用戶端」,或直接稱為「以太坊用戶端」),這些用戶端由不同團隊使用不同程式語言開發。 這使得網路更加強大且更具[多元性](/developers/docs/nodes-and-clients/client-diversity/)。 理想目標是達成多樣性,沒有任一用戶端佔有主導地位,以減少單點故障。 -此表總結了不同的用戶端。 所有這些用戶端都通過了[用戶端測試](https://github.com/ethereum/tests),並積極維護以保持最新的網路升級狀態。 +此表總結了不同的用戶端。 它們全都通過[用戶端測試](https://github.com/ethereum/tests),並被積極維護以跟上網路升級。 -| 用戶端 | 語言 | 作業系統 | 網路 | 同步策略 | 狀態修剪 | -| ---------------------------------------------------------------------- | ---------- | --------------------- | ------------------------- | -------------------------------------------------- | ------ | -| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [快照](#snap-sync)、[完整](#full-sync) | 歸檔、已修剪 | -| [Nethermind](https://www.nethermind.io/) | C#、.NET | Linux、Windows、macOS | Mainnet, Sepolia, Holesky | [快照](#snap-sync) (不提供服務)、快速、[完整](#full-sync) | 歸檔, 緩衝 | -| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [快照](#snap-sync)、[快速](#fast-sync)、[完整](#full-sync) | 歸檔, 緩衝 | -| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [完整](#full-sync) | 歸檔, 緩衝 | -| [Reth](https://reth.rs/) | Rust | Linux、Windows、macOS | Mainnet, Sepolia, Holesky | [完整](#full-sync) | 歸檔、已修剪 | -| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo)_(測試版)_ | TypeScript | Linux, Windows, macOS | Sepolia、Holesky | [完整](#full-sync) | 已修剪 | +| 用戶端 | 語言 | 作業系統 | 網路 | 同步策略 | 狀態修剪 | +| ------------------------------------------------------------------------------------------- | ----------------------- | ------------------- | ------------------ | --------------------------------------------------------------- | ------ | +| [Geth](https://geth.ethereum.org/) | Go | Linux、Windows、macOS | 主網、Sepolia、Holesky | [快照](#snap-sync)、[完整](#full-sync) | 歸檔、已修剪 | +| [Nethermind](https://www.nethermind.io/) | C#、.NET | Linux、Windows、macOS | 主網、Sepolia、Holesky | [快照](#snap-sync) (不提供服務)、快速、[完整](#full-sync) | 歸檔、已修剪 | +| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux、Windows、macOS | 主網、Sepolia、Holesky | [快照](#snap-sync)、[快速](#fast-sync)、[完整](#full-sync) | 歸檔、已修剪 | +| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux、Windows、macOS | 主網、Sepolia、Holesky | [完整](#full-sync) | 歸檔、已修剪 | +| [Reth](https://reth.rs/) | Rust | Linux、Windows、macOS | 主網、Sepolia、Holesky | [完整](#full-sync) | 歸檔、已修剪 | +| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(beta)_ | TypeScript | Linux、Windows、macOS | Sepolia、Holesky | [完整](#full-sync) | 已修剪 | -有關受支援網路的更多信息,請閱讀[以太坊網路](/developers/docs/networks/)。 +想進一步了解支援的網路,請閱讀[以太坊網路](/developers/docs/networks/)。 每個用戶端都有獨特的用例和優勢,因此你應該根據自己的偏好進行選擇。 多樣化使實作能夠專注於不同的功能和使用者受眾。 你可能希望根據功能、支援、程式語言或許可證來選擇用戶端。 @@ -147,7 +151,7 @@ sidebarDepth: 2 Hyperledger Besu 是適用於公共和授權網路的企業級以太坊用戶端。 它運行所有以太坊主網功能,從追蹤到 GraphQL,具有廣泛的監控功能,並由 ConsenSys 在開放社群管道和企業商業 SLA 中提供支援。 它是用 Java 編寫的,並獲得 Apache 2.0 許可。 -Besu 詳盡的 [文件](https://besu.hyperledger.org/en/stable/)會引導你學習其所有功能及設定的細節。 +Besu 詳盡的[文件](https://besu.hyperledger.org/en/stable/)會引導你了解其所有功能和設定的細節。 ### Erigon {#erigon} @@ -157,7 +161,7 @@ Erigon,舊稱 Turbo‐Geth,最初為 Go Ethereum 的分叉,專注於速度 Go Ethereum(簡稱 Geth)是以太坊協定的原始實作之一。 目前,它是使用最廣泛的用戶端,擁有最大的使用者群體,並為使用者和開發者提供的各種工具。 它是用 Go 編寫的,完全開源,並獲得 GNU LGPL v3 許可。 -從相關[文件](https://geth.ethereum.org/docs/)中了解有關 Geth 的更多資訊。 +在其[文件](https://geth.ethereum.org/docs/)中深入瞭解 Geth。 ### Nethermind {#nethermind} @@ -167,7 +171,7 @@ Nethermind 是使用 C# .NET 技術堆疊開發的以太坊實作,以 LGPL-3.0 - 狀態存取 - 網路和豐富的功能,如 Prometheus/Grafana 儀表板、seq 企業日誌記錄支援、JSON-RPC 追蹤和分析插件。 -Nethermind 也為高級使用者提供[詳細文件](https://docs.nethermind.io)、強大的開發支援、線上社群和全年無休支援。 +Nethermind 也有[詳盡的文件](https://docs.nethermind.io)、強大的開發支援、線上社群,並為付費使用者提供全年無休的支援。 ### Reth {#reth} @@ -175,7 +179,7 @@ Reth(Rust Ethereum 的簡稱)是以太坊全節點的實作,致力於達 Reth 是生產就緒的執行用戶端,且適用於質押或高正常運作時間的服務等重要任務上。 在一些高效能、高利潤下的使用案例中表現優秀,如遠端程序呼叫、最大可提取價值、索引、模擬和點對點活動等。 -查看 [Reth Book](https://reth.rs/) 或 [ Reth 的 GitHub 儲存庫](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth)以獲得更多資訊。 +查看 [Reth Book](https://reth.rs/) 或 [Reth GitHub repo](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth) 以深入了解。 ### 開發中 {#execution-in-development} @@ -185,58 +189,58 @@ Reth 是生產就緒的執行用戶端,且適用於質押或高正常運作時 EthereumJS 執行用戶端 (EthereumJS) 是以 TypeScript 編寫,並由多個套件組成,包括以區塊表示的核心以太坊基礎單元、交易和梅克爾帕特里夏樹據結構類別,以及核心用戶端元件,包括以太坊虛擬機 (EVM) 的實作、區塊鏈類別和 DevP2P 網路堆疊。 -閱讀相關[文件](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master),了解更多資訊。 +閱讀其[文件](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master)以深入了解 ## 共識用戶端 {#consensus-clients} -有多種共識用戶端(以前稱為「以太坊 2」用戶端)支援[共識升級](/roadmap/beacon-chain/)。 它們負責所有共識相關的邏輯,包含了分叉選擇演算法、處理證明並管理[權益證明](/developers/docs/consensus-mechanisms/pos)的獎勵和懲處。 +有多種共識用戶端 (舊稱「Eth2」用戶端) 可支援[共識升級](/roadmap/beacon-chain/)。 它們負責所有共識相關的邏輯,包括分叉選擇演算法、處理證明,以及管理[權益證明](/developers/docs/consensus-mechanisms/pos)的獎勵和懲罰。 -| 用戶端 | 程式語言 | 作業系統 | 網路 | -| ------------------------------------------------------------- | ---------- | --------------------- | ------------------------------------------- | -| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | 信標鏈、Goerli、Pyrmont、Sepolia、Ropsten 等 | -| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | 信標鏈、Goerli、Sepolia、Ropsten 等 | -| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | 信標鏈、Goerli、Sepolia、Ropsten 等 | -| [Prysm](https://prysm.offchainlabs.com/docs/) | 開始 | Linux, Windows, macOS | 信標鏈、Gnosis、Goerli、Pyrmont、Sepolia、Ropsten 等 | -| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux、Windows、macOS | 信標鏈、Gnosis、Goerli、Sepolia、Ropsten 等 | -| [Grandine](https://docs.grandine.io/)(測試版) | Rust | Linux、Windows、macOS | 信標鏈、Goerli、Sepolia 等 | +| 用戶端 | 語言 | 作業系統 | 網路 | +| ------------------------------------------------------------- | ---------- | ------------------- | ------------------------------------ | +| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux、Windows、macOS | 信標鏈、Holesky、Pyrmont、Sepolia 等 | +| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux、Windows、macOS | 信標鏈、Holesky、Sepolia 等 | +| [Nimbus](https://nimbus.team/) | Nim | Linux、Windows、macOS | 信標鏈、Holesky、Sepolia 等 | +| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux、Windows、macOS | 信標鏈、Gnosis、Holesky、Pyrmont、Sepolia 等 | +| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux、Windows、macOS | 信標鏈、Gnosis、Holesky、Sepolia 等 | +| [Grandine](https://docs.grandine.io/) | Rust | Linux、Windows、macOS | 信標鏈、Holesky、Sepolia 等 | ### Lighthouse {#lighthouse} Lighthouse 是以 Rust 開發的共識用戶端實作,以 Apache-2.0 授權。 它由 Sigma Prime 維護,自信標鏈問世以來一直穩定且可直接用於生產。 各企業、質押池及個人都依賴它。 它的目標是從桌上型個人電腦到複雜的自動化部署,在各環境中都保持安全、高效及可互通性。 -文件可在 [Lighthouse 手冊](https://lighthouse-book.sigmaprime.io/)中找到 +可以在 [Lighthouse Book](https://lighthouse-book.sigmaprime.io/) 中找到文件 ### Lodestar {#lodestar} Lodestar 是以 Typescript 編寫,生產就緒的共識用戶端實作,以 LGPL-3.0 授權。 它由 ChainSafe Systems 維護,此外也是為單獨質押者、開發者、研究者而生的最新共識用戶端。 Lodestar 包含了信標節點及驗證者用戶端,該用戶端由以太坊協定的 JavaScript 實作提供支援。 Lodestar 致力於提升以太坊輕量用戶端的可用性,並為更多開發者擴大可存取性,以及提高以太坊生態系統多樣性。 -更多資訊可在 [Lodestar 官網](https://lodestar.chainsafe.io/)找到 +更多資訊請見 [Lodestar 網站](https://lodestar.chainsafe.io/) ### Nimbus {#nimbus} Nimbus 是以 Nim 開發的共識用戶端實作,以 Apache-2.0 授權。 它是生產就緒的用戶端,常被單獨質押者及質押池使用。 Nimbus 專為資源效率而生,可在資源有限的裝置及企業基礎設施上輕鬆運行,而不影響其穩定性及獎勵效能。 更少的資源佔用意味著網路面臨壓力時,用戶端有更大的安全邊際。 -在 [Nimbus 文檔](https://nimbus.guide/)中瞭解更多 +在 [Nimbus 文件](https://nimbus.guide/)中深入瞭解 ### Prysm {#prysm} Prysm 是功能完整且開源的共識用戶端,以 Go 語言開發並以 GPL-3.0 授權。 它有可選的網頁應用用戶介面,並將自行質押者及機構使用者的使用者體驗、文檔及設定檔放在第一位。 -閱讀 [Prysm 文檔](https://prysm.offchainlabs.com/docs/)以獲得更多資訊。 +瀏覽 [Prysm 文件](https://prysm.offchainlabs.com/docs/)以深入瞭解。 ### Teku {#teku} Teku 是最初的信標鏈創世用戶端之一。 除了一般的目標(安全性、穩定性、可用性、效能)外,Teku 特別致力於遵循各式各樣的用戶端標準。 -Teku 提供了非常彈性的部署選項。 信標節點與驗證者用戶端可以在同個進程一起運行,對單獨質押者來說非常方便,節點也可分開運行,以完成複雜的質押操作。 此外,Teku 與 [Web3Signer](https://github.com/ConsenSys/web3signer/) 完全相容,以實現簽署金鑰安全及罰沒保護。 +Teku 提供了非常彈性的部署選項。 信標節點與驗證者用戶端可以在同個進程一起運行,對單獨質押者來說非常方便,節點也可分開運行,以完成複雜的質押操作。 此外,Teku 與 [Web3Signer](https://github.com/ConsenSys/web3signer/) 完全互通,可保障簽署金鑰安全並提供削減懲罰保護。 -Teku 以 Java 編寫,並以 Apache 2.0 授權發佈。 它由 ConsenSys 的 Protocols 團隊開發,該團隊也負責 Besu 和 Web3Signer 開發。 在 [Teku 文檔中](https://docs.teku.consensys.net/en/latest/)瞭解更多。 +Teku 以 Java 編寫,並以 Apache 2.0 授權發佈。 它由 ConsenSys 的 Protocols 團隊開發,該團隊也負責 Besu 和 Web3Signer 開發。 在 [Teku 文件](https://docs.teku.consensys.net/en/latest/)中深入瞭解。 ### Grandine {#grandine} Grandine 是以 Rust 語言編寫,以 GPL-3.0 授權的共識用戶端實作。 它由 Grandine 核心團隊維護,具有速度快、高效能和輕量的特點。 它適用於各類的質押者,從使用低資源裝置(如樹莓派)的單獨質押者,到運行數萬個驗證者的大機構質押者都能使用。 -文件可在 [Grandine 手冊](https://docs.grandine.io/)中找到 +文件可在 [Grandine Book](https://docs.grandine.io/) 中找到 ## 同步模式 {#sync-modes} @@ -255,7 +259,7 @@ Grandine 是以 Rust 語言編寫,以 GPL-3.0 授權的共識用戶端實作 - 透過驗證每筆交易,最大限度地減少信任依賴並提供最高的安全性。 - 隨著交易數量不斷增加,處理所有交易可能需要幾天到幾週的時間。 -[歸檔節點](#archive-node)執行完整同步,以建立(並保留)每個區塊中每個交易所做的狀態變更的完整歷史記錄。 +[歸檔節點](#archive-node)會執行完整同步,以建立 (並保留) 每個區塊中每筆交易所做的狀態變更的完整歷史記錄。 #### 快速同步 {#fast-sync} @@ -271,7 +275,7 @@ Grandine 是以 Rust 語言編寫,以 GPL-3.0 授權的共識用戶端實作 - 最快的同步策略,目前為以太坊主網的預設策略。 - 在不犧牲安全性的情況下,節省了大量的磁碟空間和網路頻寬。 -[更多有關快照同步的資訊](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)。 +[關於快照同步的更多資訊](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)。 #### 輕量同步 {#light-sync} @@ -280,7 +284,7 @@ Grandine 是以 Rust 語言編寫,以 GPL-3.0 授權的共識用戶端實作 - 依靠對開發者的信任和共識機制,只取得最新狀態。 - 用戶端可在幾分鐘內在目前網路狀態下使用。 -**NB** 輕量同步目前無法在權益證明以太坊上使用,新版本的輕量同步應很快會發佈! +**注意**:輕量同步還不能用於權益證明的以太坊 - 新版本的輕量同步應該很快就會發布! [關於輕量用戶端的更多資訊](/developers/docs/nodes-and-clients/light-clients/) @@ -288,28 +292,28 @@ Grandine 是以 Rust 語言編寫,以 GPL-3.0 授權的共識用戶端實作 #### 樂觀同步 {#optimistic-sync} -樂觀同步是一種合併後同步策略,被設計為可選擇向後兼容,可使執行節點透過預先建立的方法同步。 執行引擎可以_樂觀地_匯入信標區塊而不需要完整驗證,找到最新的區塊頭,並使用上述方法開始同步鏈。 接著,在執行用戶端同步至最新狀態後,它會通知共識用戶端信標鏈中交易的有效性。 +樂觀同步是一種合併後同步策略,被設計為可選擇向後兼容,可使執行節點透過預先建立的方法同步。 執行引擎可以_樂觀地_匯入信標區塊而不需完全驗證它們,找到最新的標頭,然後用上述方法開始同步鏈。 接著,在執行用戶端同步至最新狀態後,它會通知共識用戶端信標鏈中交易的有效性。 [關於樂觀同步的更多資訊](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md) #### 檢查點同步 {#checkpoint-sync} -檢查點同步又稱弱主觀性同步,在同步信標節點時提供優異的使用者體驗。 它是基於[弱主觀性](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/)假設,使信標鏈能夠從近期的弱主觀性檢查點開始同步,而不是從創世塊開始。 檢查點同步顯著縮短了初始同步時間,其信任假設與從[創世塊](/glossary/#genesis-block)開始同步相同。 +檢查點同步又稱弱主觀性同步,在同步信標節點時提供優異的使用者體驗。 它基於[弱主觀性](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/)的假設,這使得信標鏈能夠從最近的弱主觀性檢查點而不是創世塊開始同步。 與從[創世塊](/glossary/#genesis-block)開始同步相比,檢查點同步的信任假設相似,但能大幅縮短初始同步時間。 在實際運作上,這表示你的節點會連接至遠端服務,以下載近期最終確定的狀態,並從該點開始繼續驗證資料。 提供資料的第三方會受到信任,因此應謹慎選擇。 -關於[檢查點同步](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)的更多資訊 +更多關於[檢查點同步](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)的資訊 -## 衍生閱讀 {#further-reading} +## 延伸閱讀 {#further-reading} -- [以太坊 101 - 第 2 部分 - 瞭解節點](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes,2019 年 2 月 13 日_ -- [運行以太坊全節點:針對幾乎沒有動力的人提供的指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31)_ – Justin Leroux,2019 年 11 月 7 日_ +- [以太坊 101 - 第 2 部分 - 了解節點](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes,2019 年 2 月 13 日_ +- [執行以太坊完整節點:一份寫給有點懶的人的指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux,2019 年 11 月 7 日_ ## 相關主題 {#related-topics} -- [分塊](/developers/docs/blocks/) +- [區塊](/developers/docs/blocks/) - [網路](/developers/docs/networks/) ## 相關教學 {#related-tutorials} -- [只需刷寫 MicroSD 卡即可將你的樹莓派 4 變成驗證者節點 -- 安裝指南](/developers/tutorials/run-node-raspberry-pi/) _ -- 刷寫你的樹莓派 4,插入乙太網路纜線,連接 SSD 磁碟,然後啟動設備,將樹莓派 4 轉變為運行執行層(主網)和/或共識層(信標鏈/驗證者)的完整以太坊節點。_ +- [只要快閃 MicroSD 卡,就能將你的 Raspberry Pi 4 變成驗證者節點 – 安裝指南](/developers/tutorials/run-node-raspberry-pi/) _– 快閃你的 Raspberry Pi 4、插入乙太網路線、連接 SSD 硬碟並為裝置通電,即可將 Raspberry Pi 4 變成執行執行層 (主網) 和/或共識層 (信標鏈/驗證者) 的完整以太坊節點。_ diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/light-clients/index.md index 20aa0d19698..ce6034009f5 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/light-clients/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/light-clients/index.md @@ -1,18 +1,18 @@ --- -title: 輕量用戶端 -description: 以太坊輕量用戶端介紹 +title: "輕量用戶端" +description: "以太坊輕量用戶端介紹" lang: zh-tw --- 運行全節點是與以太坊互動最去信任、隱私、去中心化和抗審查的方式。 透過全節點,你可以保留自己的區塊鏈副本,可用於即時查詢並直接存取以太坊的點對點網路。 然而,運行全節點需要大量的記憶體、儲存空間及 CPU 資源。 這意味著讓所有人運行自己的節點不可行。 以太坊路線圖上有幾種解決方式,包括無狀態,但距離實現還要幾年的時間。 近期的解決方法是權衡一些運行全節點的優點,以實現大幅效能改進,使節點在極低硬體需求下運行。 做出這種妥協的節點稱為輕節點。 -## 輕量用戶端是什麼? {#what-is-a-light-client} +## 什麼是輕量用戶端 {#what-is-a-light-client} 輕節點是運行輕量用戶端軟體的節點。 輕節點不保留區塊鏈資料的本地副本,也不獨立驗證所有變更,而是向一些提供者索取必要資料。 提供者可能是直接或透過一些中心化遠端程序呼叫伺服器連結到全節點。 接著,輕節點驗證資料,使資料能和鏈頭保持同步。 輕節點只處理區塊頭,只有偶爾才會下載實際區塊內容。 節點的輕量程度可能會有所不同,具體取決於它們執行的輕量和全用戶端軟體的組合。 舉例來說,最輕量的設定是運行一個輕量執行用戶端和一個輕量共識用戶端。 許多節點也有可能會選擇運行輕量共識用戶端和全執行用戶端,反之亦然。 ## 輕量用戶端是如何運作的? {#how-do-light-clients-work} -當以太坊開始使用基於權益證明的共識機制時,專門引入了新的基礎設施來支援輕量用戶端。 它的運作方式是,每 1.1 天隨機選擇包含了 512 個驗證者的子集作為**同步委員會**。 同步委員會簽署最近區塊的頭部。 每個區塊頭包括了同步委員會中驗證者的聚合簽名,以及一個顯示驗證者簽名與否的「位元欄位」。 每個區塊頭還包含了預期參與下一個區塊簽名的驗證者清單。 這表示輕量用戶端可以快速查看同步委員會是否已簽署它們收到的資料,它們也可以透過比較它們收到的資料和依據上一個區塊而預期收到的資料,以確認同步委員會的真實性。 這樣一來,輕量用戶端就能持續更新對最新以太坊區塊的了解,而不需要實際下載區塊,只要下載包含摘要資訊的區塊頭即可。 +當以太坊開始使用基於權益證明的共識機制時,專門引入了新的基礎設施來支援輕量用戶端。 其運作方式是每 1.1 天隨機選出一個由 512 個驗證者組成的子集,作為**同步委員會**。 同步委員會簽署最近區塊的頭部。 每個區塊頭包括了同步委員會中驗證者的聚合簽名,以及一個顯示驗證者簽名與否的「位元欄位」。 每個區塊頭還包含了預期參與下一個區塊簽名的驗證者清單。 這表示輕量用戶端可以快速查看同步委員會是否已簽署它們收到的資料,它們也可以透過比較它們收到的資料和依據上一個區塊而預期收到的資料,以確認同步委員會的真實性。 這樣一來,輕量用戶端就能持續更新對最新以太坊區塊的了解,而不需要實際下載區塊,只要下載包含摘要資訊的區塊頭即可。 在執行層上,沒有對輕量執行用戶端的單一規範。 輕量執行用戶端的範圍差異可以與全執行用戶端的「輕量模式」不同,後者有全節點的所有以太坊虛擬機和網路功能,但只驗證區塊頭,而不下載相關資料,或者它也可以是更精簡的用戶端,主要依賴將請求轉發至遠端程序呼叫提供者以和以太坊交互。 @@ -32,7 +32,7 @@ lang: zh-tw 輕量用戶端解鎖的創新領域其中之一是可以在儲存空間、記憶體和處理能力都很小的裝置上運行以太坊節點。 如今的以太坊節點需要大量運算資源,輕量用戶端可被嵌入瀏覽器中、在手機上運行,或者甚至可能在更小的智慧型裝置上運行,如智慧手錶。 這表示含有嵌入式用戶端的以太坊錢包可能可以在手機上運行。 這表示手機錢包可更去中心化,因為它們不需要信任中心化資料提供者以獲取資料。 -這個的延伸是使用**物聯網 (IoT)** 裝置。 輕量用戶端可用於快速證明某些代幣或非同質化代幣的餘額或擁有權,透過所有同步委員會提供的安全保證,以觸發物聯網的某些操作。 想像一個[腳踏車租借服務](https://youtu.be/ZHNrAXf3RDE?t=929),透過應用程式和嵌入式輕量用戶端以快速驗證你擁有租借服務的非同質化代幣,如果是,則解鎖一輛腳踏車讓你騎走。 +這項技術的延伸應用是支援**物聯網 (IoT)** 裝置。 輕量用戶端可用於快速證明某些代幣或非同質化代幣的餘額或擁有權,透過所有同步委員會提供的安全保證,以觸發物聯網的某些操作。 想像有一個[腳踏車租借服務](https://youtu.be/ZHNrAXf3RDE?t=929),其應用程式內嵌了輕量用戶端,可快速驗證您是否擁有該租借服務的 NFT,如果驗證成功,就會為您解鎖一輛腳踏車讓您騎走! 以太坊卷軸也受益於輕量用戶端。 卷軸一直以來的其中一個大問題是,駭客會瞄準允許資金在卷軸和以太坊之間轉移的跨鏈橋發動攻擊。 其中一個漏洞是卷軸用來偵測使用者是否存款至跨鏈橋的預言機。 如果預言機提供了錯誤資料,它們可能會欺騙卷軸有新存款至跨鏈橋的資金,並錯誤的釋放資金。 嵌入在卷軸中的輕量用戶端可以用來避免預言機損壞帶來的傷害,因為存款進跨鏈橋可以得到一個附加的證明,可在釋放資金前被卷軸用來驗證。 相同的概念也適用於其他跨鏈橋。 @@ -42,20 +42,20 @@ lang: zh-tw 有許多的輕量用戶端都在開發中,包括執行、共識、和執行/共識組合的輕量用戶端。 這些是在撰文時我們已知的輕量用戶端實現: -- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client):由 TypeScript 編寫的輕量用戶端 -- [Helios](https://github.com/a16z/helios):由 Rust 編寫的執行和共識組合輕量用戶端 -- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light):用 Go 語言編寫的執行用戶端輕量模式(開發中) -- [Nimbus](https://nimbus.guide/el-light-client.html):由 Nim 編寫的共識輕量用戶端 +- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client):以 TypeScript 編寫的共識輕量用戶端 +- [Helios](https://github.com/a16z/helios):以 Rust 編寫的執行與共識整合式輕量用戶端 +- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light):執行用戶端的輕量模式 (開發中),以 Go 編寫 +- [Nimbus](https://nimbus.guide/el-light-client.html):以 Nim 編寫的共識輕量用戶端 據我們所知,上述這些服務都尚未準備好在生產環境中使用。 -為了改進輕量用戶端存取以太坊資料的方式,還有很多工作要做。 目前,輕量用戶端依賴使用用戶端/伺服器架構向全節點發出的遠端程序呼叫請求,但在未來可以透過專用網路用更去中心化的方式請求資料,如[門戶網路](https://www.ethportal.net/)可以透過點對點廣播協議將資料發送至輕量用戶端。 +為了改進輕量用戶端存取以太坊資料的方式,還有很多工作要做。 目前,輕量用戶端依賴用戶端/伺服器模型,透過 RPC 請求向完整節點索取資料。但在未來,可以使用專用網路 (例如 [Portal Network](https://www.ethportal.net/)) 以更去中心化的方式請求資料,該網路可以透過點對點 Gossip 通訊協定將資料提供給輕量用戶端。 -其他[路線圖](/roadmap/)上的專案如 [Verkle 樹](/roadmap/verkle-trees/)和[無狀態性](/roadmap/statelessness/),最終會為輕量用戶端帶來與全用戶端同等的安全保證。 +其他[開發藍圖](/roadmap/)項目,例如 [Verkle 樹](/roadmap/verkle-trees/) 和[無狀態性](/roadmap/statelessness/),最終將使輕量用戶端的安全保證與完整用戶端相當。 -## 了解更多 {#further-reading} +## 延伸閱讀 {#further-reading} - [Zsolt Felfodhi 談 Geth 輕量用戶端](https://www.youtube.com/watch?v=EPZeFXau-RE) - [Etan Kissling 談輕量用戶端網路](https://www.youtube.com/watch?v=85MeiMA4dD8) - [Etan Kissling 談合併後的輕量用戶端](https://www.youtube.com/watch?v=ZHNrAXf3RDE) -- [Piper Merriam:通往功能性輕量用戶端的曲折之路](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/) +- [Piper Merriam:通往功能性輕量用戶端的漫漫長路](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/) diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/node-architecture/index.md index e876df86beb..2f57cef1afb 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/node-architecture/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/node-architecture/index.md @@ -1,26 +1,28 @@ --- -title: 節點架構 -description: 關於如何安排以太坊節點的介紹。 +title: "節點架構" +description: "關於如何安排以太坊節點的介紹。" lang: zh-tw --- -一個以太坊節點由兩個用戶端組成:一個[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)以及一個[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)。 +一個以太坊節點由兩個用戶端組成:一個[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)和一個[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)。 節點若要提案新區塊,還必須執行[驗證器用戶端](#validators)。 -當以太坊使用[工作量證明](/developers/docs/consensus-mechanisms/pow/)時,一個執行用戶端已足夠運行以太坊全節點。 然而,自從實行[權益證明](/developers/docs/consensus-mechanisms/pow/),執行用戶端需要與另外一個軟體同時使用,該軟體稱為[「共識用戶端」](/developers/docs/nodes-and-clients/#consensus-clients)。 +當以太坊使用[工作量證明](/developers/docs/consensus-mechanisms/pow/)時,一個執行用戶端已足夠執行一個以太坊全節點。 然而,自從實施[權益證明](/developers/docs/consensus-mechanisms/pow/)後,執行用戶端必須與另一個稱為[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)的軟體一起使用。 下圖顯示兩種以太坊用戶端的關係。 兩種用戶端與他們各自的點對點 (P2P) 網路相連。 執行用戶端透過其點對點網路廣播交易,來確保能夠管理自己的本機交易池,而共識用戶端透過其點對點網路廣播區塊,來確保共識和鏈增長,因此需要獨立的點對點網路。 ![](node-architecture-text-background.png) -要讓這兩種用戶端架構運作,驗證用戶端必須能夠將大量交易傳送至執行用戶端。 透過在本機執行交易,用戶端驗證交易沒有違反任何以太坊的規則且提議的以太坊狀態更新是否正確。 同樣地,當節點被選為區塊生產者,共識用戶端必須能夠從 Geth 請求各種交易,以添加到新的區塊裡並執行它們來更新全域狀態。 用戶端間的通訊由本機遠端程序呼叫連線使用[引遠端程序呼叫](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)處理。 +_執行用戶端有多種選擇,包括 Erigon、Nethermind 和 Besu_。 + +要讓這兩種用戶端架構運作,驗證用戶端必須將大量交易傳送至執行用戶端。 執行用戶端在本地執行交易,以驗證交易沒有違反任何以太坊規則,以及對以太坊狀態的提議更新是正確的。 當一個節點被選為區塊生產者時,其共識用戶端實例會向執行用戶端請求交易捆綁包,以將其納入新區塊並執行,進而更新全域狀態。 共識用戶端使用[引擎 API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md),透過本地 RPC 連線來驅動執行用戶端。 ## 執行用戶端的作用為何? {#execution-client} -執行用戶端負責處理交易、廣播交易、狀態管理,以及支援以太坊虛擬機 ([EVM](/developers/docs/evm/))。 然而,它並**不**負責產生區塊、廣播區塊,或是處理共識邏輯。 這些為共識用戶端的工作範圍。 +執行用戶端負責交易驗證、處理和傳播,以及狀態管理和支援以太坊虛擬機 ([EVM](/developers/docs/evm/))。 它**不**負責建構區塊、傳播區塊或處理共識邏輯。 這些為共識用戶端的工作範圍。 -執行用戶端建立執行有效負載:交易列表、更新的狀態樹,以及其他執行相關的資料。 共識用戶端將執行有效負載加入每一個區塊。 執行用戶端也負責重新執行每個新區塊的交易,確保交易為有效的。 執行交易在執行用戶端的嵌入式電腦上執行,該嵌入式電腦稱為[以太坊虛擬機 (EVM)](/developers/docs/evm)。 +執行用戶端建立執行有效負載:交易列表、更新的狀態樹,以及其他執行相關的資料。 共識用戶端將執行有效負載加入每一個區塊。 執行用戶端也負責重新執行每個新區塊的交易,確保交易為有效的。 交易是在執行用戶端的嵌入式電腦上執行,也就是所謂的[以太坊虛擬機 (EVM)](/developers/docs/evm)。 -執行用戶端還透過[遠端程序呼叫方法](/developers/docs/apis/json-rpc)提供一個連接以太坊的使用者介面,讓使用者可以查詢以太坊區塊鏈、提交交易和部署智慧型合約。 遠端程序呼叫呼叫通常由 [Web3js](https://docs.web3js.org/)、[Web3py](https://web3py.readthedocs.io/en/v5/) 這樣的函式庫處理,或是像是瀏覽器錢包的使用者介面。 +執行用戶端也透過 [RPC 方法](/developers/docs/apis/json-rpc) 提供以太坊的使用者介面,讓使用者可以查詢以太坊區塊鏈、提交交易和部署智能合約。 RPC 呼叫通常由 [Web3js](https://docs.web3js.org/)、[Web3py](https://web3py.readthedocs.io/en/v5/) 這類的函式庫,或由瀏覽器錢包等使用者介面來處理。 總而言之,執行用戶端為: @@ -33,25 +35,25 @@ lang: zh-tw 共識用戶端不參與區塊的證明或提議;此由共識用戶端的驗證者(可選附加組件)完成。 沒有驗證者的共識用戶端只會同步鏈頭,使節點能夠保持同步。 這讓使用者可以使用他們的執行用戶端與以太坊交易,並確信位於正確的鏈上。 -## 驗證者 {#validators} +## 驗證程式 {#validators} -節點營運者可以在存款合約中存入 32 以太幣,以添加一個驗證者到他們的共識用戶端。 驗者者用戶端與共識用戶端捆綁在一起,可以隨時添加進節點。 驗證者處理證明及區塊提議。 它們讓節點可以累積獎勵,或因懲罰或罰沒而失去以太幣。 運行驗證者軟體也讓一個節點有資格被選中來提議新區塊。 +質押並運行驗證者軟體將使一個節點有資格被選中來提議新區塊。 節點營運者可以在存款合約中存入 32 以太幣,以添加一個驗證者到他們的共識用戶端。 驗者者用戶端與共識用戶端捆綁在一起,可以隨時添加進節點。 驗證者處理證明及區塊提議。 它也使節點能夠累積獎勵,或因懲罰或罰沒而失去以太幣。 -[更多關於質押的資訊](/staking/)。 +[更多關於質押](/staking/)。 ## 節點組成比較 {#node-comparison} -| 執行用戶端 | 共識用戶端 | 驗證者 | -| -------------------------- | ------------------ | ----------- | -| 透過其點對點網路廣播交易 | 透過其點對點網路廣播區塊及證明 | 提議區塊 | -| 執行/重新執行交易 | 運行分叉選擇演算法 | 積累獎勵/懲罰 | -| 驗證傳入狀態的變更 | 追蹤鏈頭 | 做出證明 | -| 管理狀態及收據樹 | 管理信標狀態(包括共識和執行資訊) | 需要質押 32 以太幣 | -| 建立執行有效負載 | 追蹤在 RANDAO 中累積的隨機性 | 可被罰沒 | -| 公開 JSON-RPC 應用程式介面以便與以太坊互動 | 追蹤證明及最終確定 | | +| 執行用戶端 | 共識用戶端 | 驗證者 | +| -------------------------- | -------------------------------------------------------------------------- | ----------- | +| 透過其點對點網路廣播交易 | 透過其點對點網路廣播區塊及證明 | 提議區塊 | +| 執行/重新執行交易 | 運行分叉選擇演算法 | 積累獎勵/懲罰 | +| 驗證傳入狀態的變更 | 追蹤鏈頭 | 做出證明 | +| 管理狀態及收據樹 | 管理信標狀態(包括共識和執行資訊) | 需要質押 32 以太幣 | +| 建立執行有效負載 | 追蹤 RANDAO 中的累積隨機性 (RANDAO 是一種為驗證者選擇和其他共識操作提供可驗證隨機性的演算法) | 可被罰沒 | +| 公開 JSON-RPC 應用程式介面以便與以太坊互動 | 追蹤證明及最終確定 | | -## 了解更多 {#further-reading} +## 延伸閱讀 {#further-reading} - [權益證明](/developers/docs/consensus-mechanisms/pos) -- [區塊提出](/developers/docs/consensus-mechanisms/pos/block-proposal) -- [驗證者獎勵及懲罰](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) +- [區塊提案](/developers/docs/consensus-mechanisms/pos/block-proposal) +- [驗證者獎勵與懲罰](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index ee02f0398d0..00f4327f2be 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -1,23 +1,23 @@ --- -title: 節點做為一服務 -description: 節點服務、優缺點及熱門提供者入門級概覽 +title: "節點即服務" +description: "節點服務、優缺點及熱門提供者入門級概覽" lang: zh-tw sidebarDepth: 2 --- -## 簡介 {#Introduction} +## 介紹 {#Introduction} -運作自己的[以太坊節點](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)可能比較困難,特別是初始階段或快速擴容時。 有[許多服務](#popular-node-services)可以為你運行最佳化的節點基礎設施,因此你可以專注於開發應用程式或產品。 我們將解釋節點服務的工作原理、使用節點服務的優缺點,並列出提供者(如果你有興趣開始使用)。 +自行執行 [以太坊節點](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) 可能會充滿挑戰,尤其是在剛開始或快速擴展時。 有許多 [服務](#popular-node-services) 可以為你執行最佳化的節點基礎架構,讓你專注於開發應用程式或產品。 我們將解釋節點服務的工作原理、使用節點服務的優缺點,並列出提供者(如果你有興趣開始使用)。 -## 基本資訊 {#prerequisites} +## 先決條件 {#prerequisites} -如你還不太瞭解節點及用戶端,請查看[節點及用戶端](/developers/docs/nodes-and-clients/)。 +如果你還不了解什麼是節點和用戶端,請參閱 [節點和用戶端](/developers/docs/nodes-and-clients/)。 ## 質押者 {#stakoooooooooooooors} -單獨質押者必須運行自己的基礎設施,而非依賴第三方提供者。 這表示運行一個執行用戶端和一個關聯的共識用戶端。 在[合併](/roadmap/merge)前,只運行共識用戶端且使用中心化提供者以執行資料是可行的;但現在已不再可行 - 單獨質押者必須同時運行兩種用戶端。 然而,有些服務可以簡化這個流程。 +單獨質押者必須運行自己的基礎設施,而非依賴第三方提供者。 這表示運行一個執行用戶端和一個關聯的共識用戶端。 在 [合併](/roadmap/merge) 之前,只執行共識用戶端並使用中心化提供者來取得執行資料是可行的;但現在已不可行——單獨質押者必須同時執行兩種用戶端。 然而,有些服務可以簡化這個流程。 -[閱讀更多關於運行節點的相關資訊](/developers/docs/nodes-and-clients/run-a-node/)。 +[深入了解執行節點的相關資訊](/developers/docs/nodes-and-clients/run-a-node/)。 本頁說明的服務適用於非質押節點。 @@ -25,13 +25,13 @@ sidebarDepth: 2 節點服務提供者在幕後為你運行分散式節點用戶端,因此你無需再這麼做。 -這些服務通常提供一個應用程式介面金鑰,你可以使用該金鑰在區塊鏈中寫入和讀取。 除了包含存取以太坊主網的權限外,它們通常還包含存取[測試網](/developers/docs/networks/#ethereum-testnets)的權限。 +這些服務通常提供一個應用程式介面金鑰,你可以使用該金鑰在區塊鏈中寫入和讀取。 除了主網之外,它們通常還提供對 [以太坊測試網](/developers/docs/networks/#ethereum-testnets) 的存取權限。 一些服務為你提供屬於你的專用節點並為你管理這些節點,而其他服務使用負載平衡器於各節點間分配活動。 幾乎所有節點服務極易整合,只需變更一行程式碼就能更換自託管節點,甚至可以在服務本身之間進行切換。 -通常,節點服務運行多種[節點用戶端](/developers/docs/nodes-and-clients/#execution-clients)與[類型](/developers/docs/nodes-and-clients/#node-types),讓你能在一個應用程式介面中除了存取特定於用戶端的方法外,還能存取全節點和歸檔節點。 +節點服務通常會執行各種 [節點用戶端](/developers/docs/nodes-and-clients/#execution-clients) 和 [類型](/developers/docs/nodes-and-clients/#node-types),讓您除了用戶端專用方法之外,還能透過單一 API 存取完整節點和封存節點。 值得關注的是,節點服務不會也不應儲存你的私密金鑰或個人資訊。 @@ -45,14 +45,14 @@ sidebarDepth: 2 使用節點服務,意味著你在中心化產品的基礎設施。 因此,最重視去中心化的專案可能會傾向於自託管節點,而不是外包給第三方。 -閱讀更多關於[運行你自己的節點之優點](/developers/docs/nodes-and-clients/#benefits-to-you)。 +深入了解 [自行執行節點的好處](/developers/docs/nodes-and-clients/#benefits-to-you)。 ## 熱門節點服務 {#popular-node-services} 下方列出了最熱門的以太坊節點服務提供者,歡迎新增此處遺漏的提供者。 除了免費或付費方案,每個節點服務還提供不同的優點和功能,你應該在做出決定之前先調查哪些服務最符合你的需求。 - [**Alchemy**](https://alchemy.com/) - - [文件](https://docs.alchemyapi.io/) + - [文件](https://www.alchemy.com/docs/) - 功能 - 最大的免費方案每個月提供了 3 億運算單元 (約 3000 萬次 getLatestBlock 請求) - 支援多鏈,如 Polygon、Starknet、Optimism、Arbitrum @@ -64,9 +64,22 @@ sidebarDepth: 2 - 整合測試網水龍頭存取 - 超過 1.8 萬使用者的活躍 Discord 建構者社群 +- [**Allnodes**](https://www.allnodes.com/) + - [文件](https://docs.allnodes.com/) + - 功能 + - 在 Allnodes 作品集頁面建立的 PublicNode 代幣沒有速率限制。 + - [PublicNode](https://www.publicnode.com) 上注重隱私的免費 RPC 端點 (100+ 區塊鏈) + - 為超過 90 個區塊鏈提供無速率限制的專用節點 + - 為超過 30 個區塊鏈提供歸檔節點 + - 在 3 個地區可用(美國、歐盟、亞洲) + - [PublicNode](https://www.publicnode.com/snapshots) 上 100 多個區塊鏈的快照 + - 提供全天候技術支援,正常運行時間 SLA 為 99.90%-99.98%(取決於具體計劃)。 + - 按小時付費定價 + - 使用信用卡、PayPal 或加密貨幣支付 + - [**All That Node**](https://allthatnode.com/) - [文件](https://docs.allthatnode.com/) - - 特徵 + - 功能 - 免費方案每天 50,000 個請求 - 支援 40 多種協定 - 支援 JSON-RPC(以太坊虛擬機、Tendermint)、具象狀態傳輸和 Websocket 應用程式介面 @@ -89,7 +102,7 @@ sidebarDepth: 2 - [**Ankr**](https://www.ankr.com/) - [文件](https://docs.ankr.com/) - - 特徵 + - 功能 - Ankr 協定 - 開放對超過 8 個鏈的公共遠端程序呼叫應用程式介面端點的存取 - 負載平衡與節點健康監控,以取得連結到最近可用節點的更快更可靠的閘道 - 支援 WSS 端點與無上限速率限制的高級方案 @@ -118,14 +131,14 @@ sidebarDepth: 2 - [**BlockDaemon**](https://blockdaemon.com/) - [文件](https://ubiquity.docs.blockdaemon.com/) - 優點 - - 控制面板 + - 儀表板 - 基於節點 - 分析 - [**BlockPI**](https://blockpi.io/) - [文件](https://docs.blockpi.io/) - 功能 - - 分散式的穩健節點結構 + - 穩健的分散式節點結構 - 多達 40 多種超文字安全傳輸通訊協定與 WSS 端點 - 免費註冊方案及每月方案 - 追蹤 method + 歸檔資料支援 @@ -145,7 +158,7 @@ sidebarDepth: 2 - [**Chainstack**](https://chainstack.com/) - [文件](https://docs.chainstack.com/) - - 特徵 + - 功能 - 免費共享節點 - 共享歸檔節點 - GraphQL 支援 @@ -156,20 +169,20 @@ sidebarDepth: 2 - 按小時付費定價 - 全年無休直接支援 -- [**DRPC**](https://drpc.org/) - - [文件](https://docs.drpc.org/) - - 功能 - - 去中心化遠端程序呼叫節點 - - 超過 15 個節點提供者 - - 節點平衡 - - 免費方案每個月擁有無上限的運算單元 - - 資料驗證 - - 自訂端點 - - 超文字安全傳輸通訊協定與 WSS 端點 - - 不限數量的金鑰(免費和付費方案) - - 彈性的備援選項 - - [公共端點](https://eth.drpc.org) - - 免費共享歸檔節點 +- [**dRPC**](https://drpc.org/) + - [文件](https://drpc.org/docs) + - NodeCloud:隨插即用的 RPC 基礎架構,10 美元起——全速,無限制 + - NodeCloud 功能特色: + - 為 185 個網路提供 API 支援 + - 超過 40 家供應商的分散式池 + - 九 (9) 個地理叢集提供全球覆蓋 + - AI 驅動的負載平衡系統 + - 按用量付費的統一價格——不漲價、不過期、不鎖定 + - 無限金鑰、精細的金鑰調整、團隊角色、前端保護 + - 每個方法 20 個計算單元 (CU) 的統一費率 + - [公用端點鏈清單](https://drpc.org/chainlist) + - [價格計算機](https://drpc.org/pricing#calculator) + - NodeCore:為希望完全控制的組織提供的開源堆疊 - [**GetBlock**](https://getblock.io/) - [文件](https://getblock.io/docs/get-started/authentication-with-api-key/) @@ -184,7 +197,7 @@ sidebarDepth: 2 - 技術支援 - [**InfStones**](https://infstones.com/) - - 特色功能 + - 功能 - 免費方案選項 - 隨時擴容 - 分析 @@ -197,7 +210,7 @@ sidebarDepth: 2 - [**Infura**](https://infura.io/) - [文件](https://infura.io/docs) - - 特色功能 + - 功能 - 免費方案選項 - 隨時擴容 - 付費歸檔資料 @@ -206,28 +219,28 @@ sidebarDepth: 2 - [**Kaleido**](https://kaleido.io/) - [文件](https://docs.kaleido.io/) - - 特徵 + - 功能 - 免費新手方案 - 一鍵部署以太坊節點 - - 可自訂的用戶端與演算法(Geth、 Quorum 和 Besu || PoA、IBFT 和 Raft) + - 可自訂的用戶端和演算法 (Geth、Quorum 和 Besu / PoA、IBFT 和 Raft) - 超過 500 個管理與服務應用程式介面 - 用於以太坊交易提交的 RESTful 介面(Apache Kafka 支援) - 用於事件傳遞的出站串流(Apache Kafka 支援) - - 「鏈下」與輔助服務(例如雙層加密訊息傳輸)的深度集合 + - 「鏈下」和輔助服務的深度集合 (例如,雙向加密訊息傳輸) - 透過管理體系和基於角色的存取控制實現簡單的網路接入 - 面向管理員與終端使用者的精細使用者管理 - 高度可擴充、有彈性的企業級基礎設施 - 雲端 HSM 私密金鑰管理 - 以太坊主網繫連 - ISO 27k 與 SOC 2、Type 2 驗證 - - 動態執行階段配置(例如新增雲端整合、變更節點入口等等) + - 動態執行階段組態 (例如,新增雲端整合、變更節點入口等) - 支援多雲端、多區域和混合部署編排 - 單純按小時的基於 SaaS 的定價 - SLA 與全年無休支援 - [**Lava Network**](https://www.lavanet.xyz/) - [文件](https://docs.lavanet.xyz/) - - 特徵 + - 功能 - 免費使用測試網 - 支援高正常運行時間的去中心化冗餘 - 開源 @@ -274,11 +287,11 @@ sidebarDepth: 2 - 功能 - 去中央化遠端程序中呼叫協定與市場 - 免費方案每天 100 萬個請求(每個端點,最大為 2) - - [公共端點](https://docs.pokt.network/developers/public-endpoints) + - [公用端點](https://docs.pokt.network/developers/public-endpoints) - Pre-Stake+ 計畫(如果你每天需要超過 100 萬個請求) - 支援超過 15 條區塊鏈 - 6400+ 節點透過服務應用程式賺取 POKT 幣 - - 歸檔節點、具追蹤功能的歸檔節點和測試網節點支援 + - 封存節點、具追蹤功能的封存節點和測試網節點支援 - 以太坊主網節點用戶端多樣性 - 無單點故障 - 零停機時間 @@ -288,20 +301,20 @@ sidebarDepth: 2 - 隨時無限擴充每天的請求數和每小時的節點數 - 最私密、抗審查之選項 - 實際開發者支援 - - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) 儀表板和分析 + - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) 儀表板與分析 - [**QuickNode**](https://www.quicknode.com) - [文件](https://www.quicknode.com/docs/) - 功能 - - 全年無休技術支援和 Discord 開發者社群 + - 全年無休技術支援與開發者 Discord 社群 - 平衡地理分佈、多雲端/伺服器的環境、低延遲的網路 - 支援多鏈(Optimism、Arbitrum、Polygon 及另外 11 條鏈) - - 快速穩定的中間層(呼叫路由、快取、索引) + - 用於提升速度和穩定性的中介層 (呼叫路由、快取、索引) - 透過 Webhook 監控智慧型合約 - 直覺化的儀表板、分析套件、遠端程序呼叫編寫器 - 進階安全功能(JWT、遮罩、白名單) - 非同質化代幣資料及分析應用程式介面 - - [已獲得 SOC2 認證](https://www.quicknode.com/security) + - [SOC2 認證](https://www.quicknode.com/security) - 適合開發者和企業 - [**Rivet**](https://rivet.cloud/) @@ -350,7 +363,7 @@ sidebarDepth: 2 - [**Tokenview**](https://services.tokenview.io/) - [文件](https://services.tokenview.io/docs?type=nodeService) - 功能 - - 全年無休技術支援和 Telegram 開發者社群 + - 全年無休技術支援與開發者 Telegram 社群 - 支援多鏈(比特幣、以太坊、波場、BNB 智能鏈、以太坊經典) - 遠端程序呼叫和 WSS 端點均開放使用 - 無限制存取歸檔資料應用程式介面 @@ -384,14 +397,13 @@ sidebarDepth: 2 - [文件](https://www.zeeve.io/docs/) - 功能 - 企業級的無程式碼自動化平臺,提供了部署、監測和管理區塊鏈節點和網路的功能 - - 支援及整合超過 30 個以上協定,持續增加中 + - 支援並整合超過 30 種協定,且持續增加中 - 增值 Web3 基礎設施服務,如去中心化儲存、去中心化身份和用於現實世界的區塊鏈帳本資料應用程度介面 - 全年無休支援和主動監控以確保節點健康。 - 遠端程序呼叫端點提供了經驗證的應用程式介面存取,透過直覺式的儀表板和分析輕鬆愉快地進行管理。 - 提供託管雲端服務和使用自己的雲端服務兩種選項,支援所有主流的雲端提供商,如 AWS、Azure、Google Cloud、Digital Ocean 和本地部署雲端。 - 我們總是使用智慧路由以連接最靠近你的使用者的節點 - ## 延伸閱讀 {#further-reading} - [以太坊節點服務清單](https://ethereumnodes.com/) @@ -400,7 +412,7 @@ sidebarDepth: 2 - [節點和用戶端](/developers/docs/nodes-and-clients/) -## 相關教程 {#related-tutorials} +## 相關教學 {#related-tutorials} - [使用 Alchemy 開始以太坊開發](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/) -- [使用 web3 和 Alchemy 發送交易的指南](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) +- [使用 web3 和 Alchemy 傳送交易的指南](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) diff --git a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/run-a-node/index.md index 595e89f966a..63a173737b8 100644 --- a/public/content/translations/zh-tw/developers/docs/nodes-and-clients/run-a-node/index.md +++ b/public/content/translations/zh-tw/developers/docs/nodes-and-clients/run-a-node/index.md @@ -1,41 +1,42 @@ --- -title: 運行你自己的以太坊節點 -description: 運行你自己的以太坊用戶端實例的一般介紹。 +title: "運行你自己的以太坊節點" +description: "運行你自己的以太坊用戶端實例的一般介紹。" lang: zh-tw sidebarDepth: 2 --- 運行你自己的節點可以為你帶來各種好處,開闢新的可能性,並有助於支援生態系統。 本頁將引導你啟動自己的節點並參與驗證以太坊交易。 -注意,在[合併](/roadmap/merge)之後,需要兩個用戶端來運行一個以太坊節點:一個**執行層 (EL)** 用戶端,以及一個**共識層 (CL)** 用戶端。 本頁將展示如何安装、配置和連接這兩種用戶端以運行以太坊節點。 +請注意,在[合併](/roadmap/merge)之後,需要兩個用戶端才能執行一個以太坊節點:一個**執行層 (EL)** 用戶端以及一個**共識層 (CL)** 用戶端。 本頁將展示如何安裝、配置和連接這兩種用戶端以運行以太坊節點。 -## 前置要求 {#prerequisites} +## 先決條件 {#prerequisites} -你應該了解以太坊節點是什麼以及為什麼你可能想要運行用戶端。 [節點與用戶端](/developers/docs/nodes-and-clients/)中對此進行了介紹。 +你應該了解以太坊節點是什麼以及為什麼你可能想要運行用戶端。 [節點與用戶端](/developers/docs/nodes-and-clients/)中涵蓋了這個主題。 -如果你對運行節點這個主題還很陌生,或是尋找技術門檻較低的途徑,推薦你首先查看我們適合使用者的[運行以太坊節點](/run-a-node)簡介。 +如果您是執行節點的新手,或正在尋找技術性較低的途徑,我們建議您先查看我們為使用者準備的[執行以太坊節點](/run-a-node)簡介。 -## 挑選方法 {#choosing-approach} +## 選擇方法 {#choosing-approach} 啟動節點的第一步是選擇方法。 根據要求及不同的可能性,你必須選擇(執行及共識用戶端)的用戶端實作、環境(硬體、系統),以及用戶端設定參數。 本頁將引導你做出這些決定,幫助你找到運行以太坊實例最適合的方式。 -若要從用戶端實作中進行選擇,請查看所有可用的主網就緒[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)、[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients),並瞭解[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity)。 +若要從用戶端實作中選擇,請參閱所有可用的主網就緒[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)、[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients),並了解[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity)。 -根據用戶端的[要求](#requirements),決定是否要在自己的[硬體或是雲端上](#local-vs-cloud)運行軟體。 +根據用戶端的[要求](#requirements),決定要在自己的[硬體或雲端](#local-vs-cloud)上執行軟體。 -準備好環境後,使用[初學者友好介面](#automatized-setup)或[手動](#manual-setup)使用具有進階選項的終端機安裝所選的用戶端。 +準備好環境後,使用適合新手的介面 ([自動設定](#automatized-setup)) 或[手動](#manual-setup)使用有進階選項的終端機安裝所選的用戶端。 -當節點在運行且同步時,你已經準備好[使用它](#using-the-node),但務必留意節點的[維護](#operating-the-node)。 +當節點執行和同步時,您就可以[使用它](#using-the-node)了,但請務必留意其[維護](#operating-the-node)。 ![用戶端設定](./diagram.png) ### 環境與硬體 {#environment-and-hardware} -#### 本機或雲端 {#local-vs-cloud} +#### 本地或雲端 {#local-vs-cloud} -以太坊用戶端可以在消費級電腦上運行,並且不需要任何如挖礦機的特殊硬體。 因此,根據你的需求,你有多種選項來部署節點。 為了簡單起見,我們考慮一下在本地實體機和雲端伺服器上都運行一個節點: +以太坊用戶端可以在消費級電腦上運行,並且不需要任何如挖礦機的特殊硬體。 因此,根據你的需求,你有多種選項來部署節點。 +為了簡單起見,我們考慮一下在本地實體機和雲端伺服器上都運行一個節點: - 雲端 - 提供者提供伺服器高正常運行時間和靜態公開 IP 位址 @@ -52,23 +53,23 @@ sidebarDepth: 2 #### 硬體 {#hardware} -然而,抗審查的去中心化網路不應依賴雲端提供者。 因而,在自己的本機硬體上運行自己的節點對生態系統來說更健全。 [預估](https://www.ethernodes.org/network-types)顯示大部分節點在雲端上運行,這可能造成單點故障。 +然而,抗審查的去中心化網路不應依賴雲端提供者。 因而,在自己的本機硬體上運行自己的節點對生態系統來說更健全。 [估計](https://www.ethernodes.org/networkType/cl/Hosting)顯示大部分節點在雲端執行,這可能成為單點故障。 以太坊用戶端可以在自己的電腦、筆記型電腦、伺服器,或甚至是單板電腦上運行。 當在你的個人電腦上運行用戶端成為可能時,弄台專門運行節點的機器可以大幅提高效能和安全性,同時將最大程度上減小對你主要電腦的影響。 使用你自己的硬體非常容易。 有許多簡易的選項,適合較技術性人士的進階設定。 那麼,我們來看看在你的裝置上運行以太坊節點的要求和方法吧。 -#### 要求 {#requirements} +#### 需求 {#requirements} 硬體要求因用戶端而異,但通常不會那麼高,因為節點只需要保持同步。 請別和挖礦搞混了,挖礦需要的算力遠高於此。 然而,使用更強大的硬體,同步時間和效能確實會提高。 在安裝任何用戶端之前,請確保你的電腦有足夠的資源來運行用戶端。 你可以在下方找到最低和推薦的硬體要求。 -硬體瓶頸主要是磁碟空間。 同步以太坊區塊鏈是輸入/輸出非常密集的操作,且需要大量空間。 最佳選擇是使用在同步完畢後仍有數百 GB 空間的**固態硬碟 (SSD)**。 +硬體瓶頸主要是磁碟空間。 同步以太坊區塊鏈是輸入/輸出非常密集的操作,且需要大量空間。 最好有一個**固態硬碟 (SSD)**,即使在同步後仍有數百 GB 的可用空間。 -資料庫的大小及初始同步速度視使用的用戶端、設定及[同步策略](/developers/docs/nodes-and-clients/#sync-modes)而定。 +資料庫的大小和初始同步的速度,取決於所選的用戶端、其設定和[同步策略](/developers/docs/nodes-and-clients/#sync-modes)。 -也請確保你的網路連線不受[帶寬上限](https://wikipedia.org/wiki/Data_cap)的限制。 建議使用不按流量計費的連線,因為初始同步和廣播到網路的資料可能會超出你的限制。 +另外,請確保您的網際網路連線沒有[頻寬上限](https://wikipedia.org/wiki/Data_cap)的限制。 建議使用不按流量計費的連線,因為初始同步和廣播到網路的資料可能會超出你的限制。 ##### 作業系統 @@ -90,17 +91,17 @@ sidebarDepth: 2 你選擇的同步模式及用戶端將影響所需磁碟空間,我們在下表估計了每個用戶端所需的磁碟空間。 -| 客戶 | 磁碟空間(快速同步) | 磁碟空間(完整歸檔) | -| ---------- | ---------- | ---------- | -| Besu | 800GB 以上 | 12TB 以上 | -| Erigon | 不適用 | 2.5TB 以上 | -| Geth | 500GB 以上 | 12TB 以上 | -| Nethermind | 500GB 以上 | 12TB 以上 | -| Reth | 不適用 | 2.2TB 以上 | +| 用戶端 | 磁碟空間(快速同步) | 磁碟空間(完整歸檔) | +| ---------- | ---------- | ------------------------ | +| Besu | 800GB 以上 | 12TB 以上 | +| Erigon | 不適用 | 2.5TB 以上 | +| Geth | 500GB 以上 | 12TB 以上 | +| Nethermind | 500GB 以上 | 12TB 以上 | +| Reth | 不適用 | 2.2TB 以上 | - 注意:Erigon 和 Reth 不提供快照同步,但支援完全修剪(Erigon 約 2TB,Reth 約 1.2TB) -至於共識用戶端,所需硬碟容量也視用戶端實作及啟用的功能而定 (如罰沒驗證者的功能),但通常還需要額外的 200G 以儲存信標資料。 由於龐大的驗證者數量,帶寬負載也隨之增長。 你可以[在此分析中找到有關共識用戶端要求的詳細資料](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc)。 +對於共識用戶端,空間需求也取決於用戶端實作和啟用的功能 (例如,驗證程式懲罰者),但通常需要額外 200GB 的空間來儲存信標資料。 由於龐大的驗證者數量,帶寬負載也隨之增長。 您可以在[此分析中找到關於共識用戶端需求的詳細資訊](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc)。 #### 隨插即用解決方案 {#plug-and-play} @@ -109,9 +110,9 @@ sidebarDepth: 2 - [DappNode](https://dappnode.io/) - [Avado](https://ava.do/) -#### 單板電腦上的以太坊 {#ethereum-on-a-single-board-computer} +#### 在單板電腦上執行以太坊 {#ethereum-on-a-single-board-computer} -使用單板電腦是其中一種能便利、便宜運行以太坊節點的方式,甚至可以使用 ARM 架構的開發板,如樹莓派。 [ARM 架構上的以太坊](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)為樹莓派及其他 ARM 開發板提供了多個執行用戶端和共識用戶端的簡單易用映像檔。 +使用單板電腦是其中一種能便利、便宜運行以太坊節點的方式,甚至可以使用 ARM 架構的開發板,如樹莓派。 [ARM 上的以太坊](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)為 Raspberry Pi 和其他 ARM 板提供了多個執行用戶端和共識用戶端的易於執行的映像檔。 這類小型、平價且高效的裝置對在家運行節點是非常理想的,不過要注意的是它們效能有限。 @@ -127,13 +128,14 @@ sidebarDepth: 2 以下是一些只要點按幾下就能幫助你安裝並控制用戶端的專案: -- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode 並非只能使用供應商提供的機器。 軟體、實際節點啟動器和擁有許多功能的控制中心可在任意硬體上使用。 -- [eth-docker](https://eth-docker.net/) - 使用 Docker 進行自動化設定,專注於打造輕鬆安全的質押體驗,需要對終端機和 Docker 有基本認識,適合較進階的使用者。 -- [Stereum](https://stereum.net/ethereum-node-setup/) - 該啟動器具有圖形化使用者介面設定指南、控制中心以及許多其他功能,可透過 SSH 連接在遠端伺服器上安裝用戶端。 -- [NiceNode](https://www.nicenode.xyz/) - 該啟動器提供直覺化使用者體驗,可在你的電腦上運行節點。 只要選擇用戶端並簡單點按幾下即可啟動。 仍在開發中。 -- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - 該節點設定工具使用 CLI 精靈自動產生 Docker 設定文件。 由 Nethermind 使用 Go 語言開發。 +- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode 不僅僅是來自供應商的機器。 軟體、實際節點啟動器和擁有許多功能的控制中心可在任意硬體上使用。 +- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - 設定完整節點最快、最簡單的方法。 單行設置工具和節點管理 TUI。 免費。 開源. 由單獨質押者提供的以太坊公共物品。 ARM64 和 AMD64 支援。 +- [eth-docker](https://eth-docker.net/) - 使用 Docker 的自動化設定,專注於簡單安全的質押,需要基本的終端機和 Docker 知識,建議給較進階的使用者。 +- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - 透過 SSH 連線在遠端伺服器上安裝用戶端的啟動器,附有 GUI 設定指南、控制中心和許多其他功能。 +- [NiceNode](https://www.nicenode.xyz/) - 一款啟動器,提供直觀的使用者體驗,可在您的電腦上執行節點。 只要選擇用戶端並簡單點按幾下即可啟動。 仍在開發中。 +- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - 節點設定工具,使用 CLI 精靈自動產生 Docker 設定。 由 Nethermind 使用 Go 語言開發。 -### 手動用戶端設定 {#manual-setup} +### 手動設定用戶端 {#manual-setup} 另一個選擇是手動下載、驗證並設定用戶端軟體。 即使一些用戶端提供圖形介面,手動設定仍需要對終端機有基本認識,不過也提供了更多功能。 @@ -141,7 +143,7 @@ sidebarDepth: 2 #### 取得用戶端軟體 {#getting-the-client} -首先,你需要取得你偏好的[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)及[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)軟體。 +首先,您需要取得您偏好的[執行用戶端](/developers/docs/nodes-and-clients/#execution-clients)和[共識用戶端](/developers/docs/nodes-and-clients/#consensus-clients)軟體。 你只須下載符合你作業系統和架構的可執行應用程式或安裝包。 總是驗證下載的安裝包的簽名和校驗和。 有些用戶端也提供程式碼儲存庫或 Docker 映像檔,使安裝及更新更容易。 所有的用戶端都是開源的,所以你可以從原始碼開始建構。 這是較進階的方法,但在某些情況下可能是必要的。 @@ -149,7 +151,7 @@ sidebarDepth: 2 以下是一些用戶端的版本發佈頁面,你可以在此找到預先建置的二進位檔案或安裝說明: -##### 執行客戶 +##### 執行用戶端 - [Besu](https://github.com/hyperledger/besu/releases) - [Erigon](https://github.com/ledgerwatch/erigon/releases) @@ -159,23 +161,23 @@ sidebarDepth: 2 值得注意的是,用戶端多樣性是[執行層上的一個問題](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)。 建議讀者們考慮運行小眾執行用戶端。 -##### 共識客戶 +##### 共識用戶端 - [Lighthouse](https://github.com/sigp/lighthouse/releases/latest) -- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source/)(並未提供預先建置的二進位檔案,只有一個 Docker 映像檔,或者自行編譯原始碼) +- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source) (不提供預先建置的二進位檔,只有 Docker 映像檔或從原始碼建置) - [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest) - [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest) - [Teku](https://github.com/ConsenSys/teku/releases) -[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity/)對運行驗證者的共識節點來說非常重要。 如果大多驗證者都運行單一用戶端,網路安全將面臨風險。 因此,建議可以考慮選擇小眾用戶端。 +[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity/)對於執行驗證程式的共識節點至關重要。 如果大多驗證者都運行單一用戶端,網路安全將面臨風險。 因此,建議可以考慮選擇小眾用戶端。 -[查看最新的網路用戶端使用情況](https://clientdiversity.org/)並瞭解關於[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity)的更多資訊。 +[查看最新的網路用戶端使用情況](https://clientdiversity.org/)並深入了解[用戶端多樣性](/developers/docs/nodes-and-clients/client-diversity)。 ##### 驗證軟體 從網際網路上下載軟體時,建議驗證其完整性。 這個步驟是可選的,但對於諸如以太坊用戶端等重要基礎設施,了解並避免潛在的攻擊非常重要。 如果你下載了預先建置的二進位檔案,你需要信任它並承擔攻擊者將其替換成惡意檔案的風險。 -開發者使用他們的 PGP 金鑰簽署發佈的二進位檔案,如此一來你就可以使用密碼學方式驗證你運行的是他們建立的軟體。 你只需要獲得開發者使用的公鑰,這些公鑰可以在用戶端發佈頁面或文件中找到。 在下載用戶端版本及其簽名後,你可以使用 PGP 實作,如 [GnuPG](https://gnupg.org/download/index.html) 來輕鬆驗證用戶端。 查看在 [linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) 或 [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/) 上使用 `gpg` 驗證開源軟體的教學。 +開發者使用他們的 PGP 金鑰簽署發佈的二進位檔案,如此一來你就可以使用密碼學方式驗證你運行的是他們建立的軟體。 你只需要獲得開發者使用的公鑰,這些公鑰可以在用戶端發佈頁面或文件中找到。 下載用戶端發行版及其簽章後,您可以使用 PGP 實作 (例如 [GnuPG](https://gnupg.org/download/index.html)) 來輕鬆地驗證它們。 請查看在 [Linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) 或 [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/) 上使用 `gpg` 驗證開源軟體的教學。 另一種驗證方式是確定你下載軟體的雜湊(獨一無二的密碼學指紋)和開發者提供的雜湊相符。 這比使用 PGP 進行驗證更加容易,有些用戶端也只提供此選項。 只需對下載的軟體運行雜湊函數,並將其與軟體發佈頁面的雜湊比較即可。 例如: @@ -189,11 +191,11 @@ sha256sum teku-22.6.1.tar.gz 在安裝、下載或編譯用戶端軟體後,你就可以執行用戶端了。 這只表示需要用正確的設定執行用戶端。 用戶端提供了豐富的設定選項,可用於啟用各種功能。 -我們從會大幅影響用戶端效能和資料使用的選項開始。 [同步模式](/developers/docs/nodes-and-clients/#sync-modes)代表下載和驗證區塊鏈資料的不同方法。 在啟動節點之前,你應該決定要使用什麼網路和同步模式。 應考慮的最重要部分是用戶端所需的磁碟空間和同步時間。 留意用戶端的文件以確認預設的同步模式是哪種。 如果預設同步模式不適合你,可以視安全層級、可用資料及支出,以挑選其他同步模式。 除了同步演算法外,你還可以設定不同類型舊資料的修剪。 修剪可以刪除過時的資料,例如刪除最近區塊中無法存取的狀態樹節點。 +我們從會大幅影響用戶端效能和資料使用的選項開始。 [同步模式](/developers/docs/nodes-and-clients/#sync-modes)代表下載和驗證區塊鏈資料的不同方法。 在啟動節點之前,你應該決定要使用什麼網路和同步模式。 應考慮的最重要部分是用戶端所需的磁碟空間和同步時間。 留意用戶端的文件以確認預設的同步模式是哪種。 如果預設同步模式不適合你,可以視安全層級、可用資料及支出,以挑選其他同步模式。 除了同步演算法外,你還可以設定不同類型舊資料的修剪。 修剪可以刪除過時的資料,即移除最近區塊無法存取的狀態樹節點。 -其他基礎設定選項範例包括:選擇網路 - 主網或測試網、為遠端程序呼叫或 WebSocket 啟用超文字傳輸協定端點等等。 你可以在用戶端文件上找到所有功能和選項。 可以直接在命令列介面或設定檔中使用對應的標記,來設定各種用戶端設定。 每個用戶端略有差異,請務必參考官方文件或幫助頁面以獲得設定選項的細節。 +其他基本設定選項包括:選擇網路 (主網或測試網)、為 RPC 或 WebSocket 啟用 HTTP 端點等。 你可以在用戶端文件上找到所有功能和選項。 可以直接在命令列介面或設定檔中使用對應的標記,來設定各種用戶端設定。 每個用戶端略有差異,請務必參考官方文件或幫助頁面以獲得設定選項的細節。 -為了測試,你可能偏好在測試網上運行用戶端。 [參閱受支援網路的概覽](/developers/docs/nodes-and-clients/#execution-clients)。 +為了測試,你可能偏好在測試網上運行用戶端。 [查看支援的網路概覽](/developers/docs/nodes-and-clients/#execution-clients)。 在基礎設定下運行執行用戶端的範例請見下個章節。 @@ -211,34 +213,34 @@ sha256sum teku-22.6.1.tar.gz 你需要在開始時宣告所有非預設的用戶端設定。 你可以使用標記或設定檔來宣告你的偏好設定。 功能組和設定語法因用戶端而異。 請查看你的用戶端的文件,以了解細節。 -執行和共識用戶端透過[引擎應用程式介面](https://github.com/ethereum/execution-apis/tree/main/src/engine)中指定的經驗證端點通訊。 要連接至共識用戶端,執行用戶端必須在已知路徑上產生一個 [`jwtsecret`](https://jwt.io/)。 鑑於安全性及穩定性,用戶端應在同一個機器上運行,且兩個用戶端必須都知道此路徑,因為此路徑用於驗證它們之間的本地遠端程序呼叫連接。 執行用戶端也必須為經過驗證的應用程式介面定義一個偵聽連接埠。 +執行用戶端和共識用戶端透過 [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine) 中指定的已驗證端點進行通訊。 為了連接到共識用戶端,執行用戶端必須在已知路徑產生一個 [`jwtsecret`](https://jwt.io/)。 鑑於安全性及穩定性,用戶端應在同一個機器上運行,且兩個用戶端必須都知道此路徑,因為此路徑用於驗證它們之間的本地遠端程序呼叫連接。 執行用戶端也必須為經過驗證的應用程式介面定義一個偵聽連接埠。 -此驗證權杖由用戶端軟體自動產生,但某些情況下,你可能需要自行手動產生。 你可以透過 [OpenSSL](https://www.openssl.org/) 產生它: +此驗證權杖由用戶端軟體自動產生,但某些情況下,你可能需要自行手動產生。 您可以使用 [OpenSSL](https://www.openssl.org/) 來產生它: ```sh openssl rand -hex 32 > jwtsecret ``` -#### 運行執行用戶端 {#running-an-execution-client} +#### 執行執行用戶端 {#running-an-execution-client} 此章節將引導你啟動執行用戶端。 它僅做為基本設定的範例,此範例會以下列設定啟動用戶端: - 指定欲連線的網路,在此例子中為主網 - - 你可以選擇[任意一個測試網](/developers/docs/networks/),以初步測試你的設定 + - 您可以改為選擇[其中一個測試網](/developers/docs/networks/)來對您的設定進行初步測試。 - 定義資料目錄,用於儲存所有包含區塊鏈的資料 - - 請確保將預設路徑替換成真實路徑:如指向你外部硬碟的路徑 + - 請務必用真實路徑替換,例如指向您的外部硬碟。 - 啟用與用戶端通訊的介面 - 包括用於與共識用戶端通訊的 JSON-RPC 和引擎應用程式介面 -- 定義經過驗證的應用程式介面的 `jwtsecret` 路徑 - - 請確保將範例路徑替換成用戶端能夠存取的真實路徑,如:`/tmp/jwtsecret` +- 為已驗證的 API 定義 `jwtsecret` 的路徑。 + - 請務必將範例路徑替換為用戶端可以存取的真實路徑,例如 `/tmp/jwtsecret`。 請注意,這只是基本的範例,其餘的設定都會被設為預設值。 仔細閱讀各個用戶端的文件,以了解預設值、設定及功能。 關於更多其他功能,如運行驗證者、監控等等,請參考特定用戶端的文件。 -> 請注意,範例中的反斜線 `\` 僅用於設定格式;設定標記可以在單行內定義。 +> 請注意,範例中的反斜線 `` 僅用於格式化目的;設定旗標可以在單行中定義。 ##### 運行 Besu -此範例在主網上運行 Besu,將區塊鏈資料以預設格式儲存在 `/data/ethereum`,啟用 JSON-RPC 及引擎遠端程序呼叫以連線至共識用戶端。 引擎應用程式介面使用 `jwtsecret` 權杖驗證,且只允許來自 `localhost` 的呼叫。 +此範例在主網上啟動 Besu,將區塊鏈資料以預設格式儲存在 `/data/ethereum`,並為連接共識用戶端啟用 JSON-RPC 和 Engine RPC。 Engine API 使用 `jwtsecret` 權杖進行驗證,且只允許來自 `localhost` 的呼叫。 ```sh besu --network=mainnet \ @@ -256,11 +258,11 @@ Besu 還有個啟動器選項,會詢問一系列問題並產生設定檔案。 besu --Xlauncher ``` -[Besu 的文件](https://besu.hyperledger.org/public-networks/get-started/start-node/)包含了額外的選項及設定細節。 +[Besu 的文件](https://besu.hyperledger.org/public-networks/get-started/start-node/)包含額外的選項和設定細節。 ##### 運行 Erigon -此範例在主網上運行 Erigon,將區塊鏈資料儲存在 `/data/ethereum`,啟用 JSON-RPC,定義了哪些命名空間是允許的,並啟用連線由 `jwtsecret` 路徑定義的共識用戶端時的身份驗證。 +此範例在主網上啟動 Erigon,將區塊鏈資料儲存在 `/data/ethereum`,啟用 JSON-RPC,定義允許哪些命名空間,並為連接由 `jwtsecret` 路徑定義的共識用戶端啟用驗證。 ```sh erigon --chain mainnet \ @@ -269,11 +271,11 @@ erigon --chain mainnet \ --authrpc.jwtsecret=/path/to/jwtsecret ``` -Erigon 預設與 8GB 的硬碟執行完整同步,這會產生超過 2TB 的歸檔資料。 請確保 `datadir` 指向的磁碟有充足的剩餘空間,或者考慮使用可以修剪不同類型資料的 `--prune` 標記。 參考 Erigon 的 `--help` 指令以獲得更多資訊。 +Erigon 預設與 8GB 的硬碟執行完整同步,這會產生超過 2TB 的歸檔資料。 請確保 `datadir` 指向有足夠可用空間的磁碟,或研究可以修剪不同類型資料的 `--prune` 旗標。 查看 Erigon 的 `--help` 以了解更多資訊。 ##### 運行 Geth -此範例在主網上運行 Geth,將區塊鏈資料儲存在 `/data/ethereum`,啟用 JSON-RPC 並定義了哪些命名空間是允許的。 它也啟用了連接至共識用戶端的身份驗證,這需要 `jwtsecrest` 路徑並可以選擇定義哪些連接是允許的,在這個例子中,只允許 `localhost`。 +此範例在主網上啟動 Geth,將區塊鏈資料儲存在 `/data/ethereum`,啟用 JSON-RPC 並定義允許的命名空間。 它還為連接共識用戶端啟用驗證,這需要 `jwtsecret` 的路徑,以及定義允許哪些連線的選項,在我們的範例中僅允許來自 `localhost` 的連線。 ```sh geth --mainnet \ @@ -284,11 +286,11 @@ geth --mainnet \ --authrpc.jwtsecret=/path/to/jwtsecret ``` -查看[文檔以了解所有設定選項](https://geth.ethereum.org/docs/fundamentals/command-line-options)並了解更多與[與共識用戶端一起運行 Geth](https://geth.ethereum.org/docs/getting-started/consensus-clients) 相關的資訊。 +查看[所有設定選項的文件](https://geth.ethereum.org/docs/fundamentals/command-line-options),並深入了解[如何與共識用戶端一起執行 Geth](https://geth.ethereum.org/docs/getting-started/consensus-clients)。 ##### 運行 Nethermind -Nethermind 提供多種 [安裝選項](https://docs.nethermind.io/get-started/installing-nethermind)。 此套件包含許多二進位檔案,包括有引導式設定的啟動器,可以互動式幫助你建立設定。 或者,你可以找到可執行執行器,並使用設定標記執行它。 JSON-RPC 是預設啟用的。 +Nethermind 提供多種[安裝選項](https://docs.nethermind.io/get-started/installing-nethermind)。 此套件包含許多二進位檔案,包括有引導式設定的啟動器,可以互動式幫助你建立設定。 或者,你可以找到可執行執行器,並使用設定標記執行它。 JSON-RPC 是預設啟用的。 ```sh Nethermind.Runner --config mainnet \ @@ -296,13 +298,13 @@ Nethermind.Runner --config mainnet \ --JsonRpc.JwtSecretFile=/path/to/jwtsecret ``` -Nethermind 文檔提供了與共識用戶端一起運行 Nethermind 的 [完整指南](https://docs.nethermind.io/get-started/running-node/)。 +Nethermind 文件提供了一份關於如何與共識用戶端一起執行 Nethermind 的[完整指南](https://docs.nethermind.io/get-started/running-node/)。 執行用戶端會啟用它的核心功能、選擇端點並開始尋找對等用戶端。 成功發現對等用戶端後,用戶端開始同步。 執行用戶端會等待來自共識用戶端的連接。 在用戶端成功與目前狀態同步以後,目前的區塊鏈資料就可以使用。 ##### 運行 Reth -此範例在主網上運行 Reth,使用預設的資料儲存路徑。 啟用 JSON-RPC 和引擎遠端程序呼叫驗證,以連線由 `jwtsecret` 路徑定義的共識用戶端,並且僅允許來自 `localhost` 的調用。 +此範例在主網上運行 Reth,使用預設的資料儲存路徑。 為連接由 `jwtsecret` 路徑定義的共識用戶端啟用 JSON-RPC 和 Engine RPC 驗證,僅允許來自 `localhost` 的呼叫。 ```sh reth node \ @@ -311,23 +313,23 @@ reth node \ --authrpc.port 8551 ``` -查看[設定 Reth](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth) 以了解更多有關預設資料目錄的資訊。 [Besu 文件](https://reth.rs/run/mainnet.html)包含了額外的選項及設定細節。 +請參閱 [設定 Reth](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth) 以了解更多關於預設資料目錄的資訊。 [Reth 的文件](https://reth.rs/run/mainnet.html)包含額外的選項和設定細節。 #### 啟動共識用戶端 {#starting-the-consensus-client} 共識用戶端必須在正確的連接埠設定下啟動,以建立與執行用戶端的本地遠端程序呼叫連接。 共識用戶端在執行時需要使用公開的執行用戶端通訊埠作為設定參數。 -共識用戶端還需要執行用戶端 `jwt-secret` 的路徑,以驗證它們之間的遠端程序呼叫連接。 與上述執行用戶端例子相似,每個共識用戶端都有一個設定標記,將 jwt 權杖檔案路徑做為參數。 此路徑需與提供執行用戶端的 `jwtsecret` 路徑保持一致。 +共識用戶端也需要執行用戶端的 `jwt-secret` 路徑,以便對它們之間的 RPC 連線進行驗證。 與上述執行用戶端例子相似,每個共識用戶端都有一個設定標記,將 jwt 權杖檔案路徑做為參數。 此路徑必須與提供給執行用戶端的 `jwtsecret` 路徑一致。 -如果你打算運行驗證者,請確保新增一個用作以太坊費用接收地址的設定標記。 這是你的驗證者累積以太幣獎勵的地方。 每個共識用戶端都有一個接受一個以太坊地址作為參數的選項,如:`--suggested-fee-recipient=0xabcd1`。 +如果你打算運行驗證者,請確保新增一個用作以太坊費用接收地址的設定標記。 這是你的驗證者累積以太幣獎勵的地方。 每個共識用戶端都有一個選項,例如 `--suggested-fee-recipient=0xabcd1`,它接受一個以太坊地址作為引數。 -當在測試網上開始運行信標節點時,藉由[檢查點同步](https://notes.ethereum.org/@launchpad/checkpoint-sync)的公共端點,可以大幅縮短同步時間。 +在測試網上啟動信標節點時,您可以使用[檢查點同步](https://notes.ethereum.org/@launchpad/checkpoint-sync)的公共端點來大幅節省同步時間。 -#### 運行共識用戶端 {#running-a-consensus-client} +#### 執行共識用戶端 {#running-a-consensus-client} ##### 運行 Lighthouse -在運行 Lighthouse 前,請在 [Lighthouse 手冊](https://lighthouse-book.sigmaprime.io/installation.html)中了解如何安裝並設定。 +在執行 Lighthouse 之前,請在 [Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html) 中了解如何安裝和設定它。 ```sh lighthouse beacon_node \ @@ -340,11 +342,11 @@ lighthouse beacon_node \ ##### 運行 Lodestar -透過編譯 Lodestar 軟體或下載 Docker 映像檔來安裝 Lodestar 軟體。 在[文檔](https://chainsafe.github.io/lodestar/)中了解更多,在[設定指南](https://hackmd.io/@philknows/rk5cDvKmK)中獲得更完整的資訊。 +透過編譯 Lodestar 軟體或下載 Docker 映像檔來安裝 Lodestar 軟體。 在[文件](https://chainsafe.github.io/lodestar/)和更全面的[設定指南](https://hackmd.io/@philknows/rk5cDvKmK)中了解更多。 ```sh lodestar beacon \ - --rootDir="/data/ethereum" \ + --dataDir="/data/ethereum" \ --network=mainnet \ --eth1.enabled=true \ --execution.urls="http://127.0.0.1:8551" \ @@ -353,7 +355,8 @@ lodestar beacon \ ##### 運行 Nimbus -Nimbus 包括共識用戶端與執行用戶端。 它可在各種裝置上運行,即使是性能不高的裝置。 在[安裝依賴項和 Nimbus 本體](https://nimbus.guide/quick-start.html)後,你可以透過以下指令運行共識用戶端: +Nimbus 包括共識用戶端與執行用戶端。 它可在各種裝置上運行,即使是性能不高的裝置。 +[安裝完相依套件和 Nimbus 本身](https://nimbus.guide/quick-start.html)後,您就可以執行其共識用戶端: ```sh nimbus_beacon_node \ @@ -365,7 +368,7 @@ nimbus_beacon_node \ ##### 運行 Prysm -Prysm 有可以輕鬆自動安裝的腳本。 詳情請見 [Prysm 文檔](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)。 +Prysm 有可以輕鬆自動安裝的腳本。 詳細資訊可以在 [Prysm 文件](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)中找到。 ```sh ./prysm.sh beacon-chain \ @@ -384,51 +387,51 @@ teku --network mainnet \ --ee-jwt-secret-file "/path/to/jwtsecret" ``` -當共識用戶端連接至執行用戶端,並讀取存款合約以及識別驗證者時,它同時也會連接至其他對等信標節點,並從創世塊開始同步共識時隙。 當信標節點到達目前時期時,信標應用程式介面就可以供你的驗證者使用。 了解關於[信標節點應用程式介面](https://eth2docs.vercel.app/)的更多資訊。 +當共識用戶端連接至執行用戶端,並讀取存款合約以及識別驗證者時,它同時也會連接至其他對等信標節點,並從創世塊開始同步共識時隙。 當信標節點到達目前時期時,信標應用程式介面就可以供你的驗證者使用。 深入了解[信標節點 API](https://eth2docs.vercel.app/)。 -### 新增驗證者 {#adding-validators} +### 新增驗證程式 {#adding-validators} 共識用戶端作為供驗證者連接的信標節點。 每個共識用戶端都有自己的驗證者軟體,可以在各自的文檔中找到詳細描述。 -運行自己的驗證者允許[單獨質押](/staking/solo/),單獨質押是支援以太坊的最具影響且最去信任的方法。 然而,單獨質押要求存入 32 以太幣。 若要以較少的以太幣在你自己的節點上運行驗證者,你可能會對擁有無需許可的節點營運者的去中心化質押池 (如 [Rocket Pool](https://rocketpool.net/node-operators))感興趣。 +執行您自己的驗證程式可實現[個人質押](/staking/solo/),這是支援以太坊網路最具影響力且無需信任的方法。 然而,單獨質押要求存入 32 以太幣。 若要用較少的金額在您自己的節點上執行驗證程式,您可能會對擁有無需許可的節點操作員的去中心化池感興趣,例如 [Rocket Pool](https://rocketpool.net/node-operators)。 -開始質押和產生驗證者金鑰最簡單的方法就是使用 [Holesky 測試網質押啟動面板](https://holesky.launchpad.ethereum.org/),這可讓你透過[在 Holesky 上運行節點](https://notes.ethereum.org/@launchpad/holesky)來測試你的設定。 當你準備好部署到主網時,即可使用[主網質押啟動面板](https://launchpad.ethereum.org/)重複這些步驟。 +開始進行質押和驗證程式金鑰產生的最簡單方法是使用 [Hoodi 測試網質押啟動台](https://hoodi.launchpad.ethereum.org/),它讓您可透過[在 Hoodi 上執行節點](https://notes.ethereum.org/@launchpad/hoodi)來測試您的設定。 當您準備好在主網上進行時,您可以使用[主網質押啟動台](https://launchpad.ethereum.org/)重複這些步驟。 -請見[質押頁面](/staking)以查看質押選項概覽。 +查看[質押頁面](/staking)以取得質押選項的概覽。 ### 使用節點 {#using-the-node} -執行用戶端提供了[遠端程序呼叫應用程式介面端點](/developers/docs/apis/json-rpc/),可透過多種方式提交交易、在以太坊上部署智慧型合約或與以太坊上的智慧型合約互動: +執行用戶端提供 [RPC API 端點](/developers/docs/apis/json-rpc/),您可以用多種方式使用它們在以太坊網路上提交交易、與智能合約互動或部署智能合約: -- 使用合適的協定手動呼叫它們(例如使用 `curl`) -- 附加提供的控制台(例如 `geth attach`) -- 透過 wbe3 函式庫在應用程式中實作它們,如 [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview) 及 [ethers](https://github.com/ethers-io/ethers.js/) +- 使用合適的協定手動呼叫它們 (例如使用 `curl`) +- 附加提供的控制台 (例如 `geth attach`) +- 在應用程式中使用 web3 程式庫來實作它們,例如 [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview)、[ethers](https://github.com/ethers-io/ethers.js/) -不同的用戶端有不同的遠端程序呼叫端點實作。 但是有一個標準的 JSON-RPC,可以用於每個用戶端。 有關概述,[請閱讀 JSON-RPC 文件](/developers/docs/apis/json-rpc/)。 需要從以太坊網路取得資訊的應用程式可以使用這個遠端程序呼叫。 舉例來說,熱門錢包 MetaMask 可讓你[連接至你自己的遠端程序呼叫端點](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node),提供了強大的隱私及安全優勢。 +不同的用戶端有不同的遠端程序呼叫端點實作。 但是有一個標準的 JSON-RPC,可以用於每個用戶端。 如需概覽,請[閱讀 JSON-RPC 文件](/developers/docs/apis/json-rpc/)。 需要從以太坊網路取得資訊的應用程式可以使用這個遠端程序呼叫。 例如,熱門錢包 MetaMask 讓您[連接到您自己的 RPC 端點](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node),這具有強大的隱私和安全優勢。 -共識用戶端皆會公開[信標應用程式介面](https://ethereum.github.io/beacon-APIs),可用於確認共識用戶端的狀態,或者透過工具(如 [Curl](https://curl.se))發送請求以下載區塊和共識資料。 更多資訊可在每個共識用戶端的文檔上找到。 +所有共識用戶端都會公開一個 [Beacon API](https://ethereum.github.io/beacon-APIs),可用於檢查共識用戶端的狀態,或使用 [Curl](https://curl.se) 等工具發送請求來下載區塊和共識資料。 更多資訊可在每個共識用戶端的文檔上找到。 -#### 存取遠端程序呼叫 {#reaching-rpc} +#### 存取 RPC {#reaching-rpc} -執行用戶端 JSON-RPC 的預設通訊埠是 `8545`,但你可以在設定中修改本地端點的通訊埠。 遠端程序呼叫介面預設只能透過你電腦的 localhost 存取。 為了要在遠端也能存取遠端程序呼叫介面,你可將位址變更為 `0.0.0.0` 將其公開。 這樣一來,就可透過本地網路以及公網 IP 位址存取遠端程序呼叫介面了。 在多數情況下,你也需要在路由器上設定通訊埠轉發。 +執行用戶端 JSON-RPC 的預設連接埠為 `8545`,但您可以在設定中修改本機端點的連接埠。 遠端程序呼叫介面預設只能透過你電腦的 localhost 存取。 為了讓它能夠遠端存取,您可能會想透過將地址變更為 `0.0.0.0` 來將其公開。 這樣一來,就可透過本地網路以及公網 IP 位址存取遠端程序呼叫介面了。 在多數情況下,你也需要在路由器上設定通訊埠轉發。 公開通訊埠至網際網路時應謹慎,因為這會使網際網路上的任何人都能控制你的節點。 如果你將用戶端作為錢包使用,惡意人士可能存取你的節點以癱瘓你的系統,或者竊取其中的資產。 -解決上述問題的辦法是,避免讓潛在的高危遠端程序呼叫方法可被修改。 舉例來說,使用 Geth 時,你可以透過標記 `--http.api web3,eth,txpool` 宣告可修改的方法。 +解決上述問題的辦法是,避免讓潛在的高危遠端程序呼叫方法可被修改。 例如,使用 Geth 時,您可以使用旗標宣告可修改的方法:`--http.api web3,eth,txpool`。 -開發邊緣層應用程式介面或網頁伺服器應用程式(如 Nginx),並將它們連接至你用戶端的本機位址及通訊埠,這可以擴展對遠端程序呼叫介面的存取方式。 透過中間層也使開發者能夠為連接至遠端程序呼叫介面的 `https` 安全連線設置憑證。 +開發邊緣層應用程式介面或網頁伺服器應用程式(如 Nginx),並將它們連接至你用戶端的本機位址及通訊埠,這可以擴展對遠端程序呼叫介面的存取方式。 利用中介層也可讓開發者能夠為到 RPC 介面的安全 `https` 連線設定憑證。 -設置網頁伺服器、代理伺服器或外部的 Rest API 並非對你節點的遠端程序呼叫端點提供存取的唯一方式。 設定可公開存取的端點的另一種保護隱私的方法是,將節點託管在自己的 [Tor](https://www.torproject.org/) 洋蔥服務上。 這可讓你在沒有靜態公共 IP 位址或開放通訊埠的情況下,仍可存取本地網路外的遠端程序呼叫。 然而,使用此設定只會允許透過 Tor 網路存取遠端程序呼叫端點,但並非所有應用程式都支援此網路,且可能造成連線問題。 +設置網頁伺服器、代理伺服器或外部的 Rest API 並非對你節點的遠端程序呼叫端點提供存取的唯一方式。 設定可公開存取之端點的另一種保護隱私的方法是,將節點託管在您自己的 [Tor](https://www.torproject.org/) 洋蔥服務上。 這可讓你在沒有靜態公共 IP 位址或開放通訊埠的情況下,仍可存取本地網路外的遠端程序呼叫。 然而,使用此設定只會允許透過 Tor 網路存取遠端程序呼叫端點,但並非所有應用程式都支援此網路,且可能造成連線問題。 -要完成設定,你需要建立自己的[洋蔥服務](https://community.torproject.org/onion-services/)。 閱讀洋蔥服務設定的[文檔](https://community.torproject.org/onion-services/setup/)以託管你自己的洋蔥服務。 你可將其指向有代理伺服器的遠端程序呼叫通訊埠網頁伺服器,或者直接指向遠端程序呼叫。 +為此,您必須建立自己的[洋蔥服務](https://community.torproject.org/onion-services/)。 查看關於設定洋蔥服務以託管您自己的服務的[文件](https://community.torproject.org/onion-services/setup/)。 你可將其指向有代理伺服器的遠端程序呼叫通訊埠網頁伺服器,或者直接指向遠端程序呼叫。 -最後一種提供內部網路存取的方式是透過虛擬私人網路連線,這同時也是最受歡迎的一種方式。 依據你的用例,以及需要存取你的節點的使用者數量,安全的虛擬私人網路連線或許是個可選方案。 [OpenVPN](https://openvpn.net/) 是功能完備的 SSL VPN,使用業界標準的 SSL/TSL 協議實現了 OSI 第二、三層的安全網路插件,且支援基於證書、智慧卡和/或使用者名稱/密碼等彈性用戶端驗證方法,並可以使用基於使用者或群組的存取控制政策,該政策使用套用於虛擬私人網路虛擬介面的防火牆規則。 +最後一種提供內部網路存取的方式是透過虛擬私人網路連線,這同時也是最受歡迎的一種方式。 依據你的用例,以及需要存取你的節點的使用者數量,安全的虛擬私人網路連線或許是個可選方案。 [OpenVPN](https://openvpn.net/) 是一種功能齊全的 SSL VPN,它使用業界標準的 SSL/TLS 協定實作 OSI 第 2 層或第 3 層的安全網路延伸,支援基於憑證、智慧卡和/或使用者名稱/密碼憑證的彈性用戶端驗證方法,並允許使用套用到 VPN 虛擬介面的防火牆規則來制定使用者或群組特定的存取控制策略。 -### 運行節點 {#operating-the-node} +### 操作節點 {#operating-the-node} 你應該定期監控你的節點以確保其正常運行。 你可能需要偶爾進行維護。 -#### 維持節點上線 {#keeping-node-online} +#### 保持節點在線 {#keeping-node-online} 你的節點不需要一直保持上線,但應儘可能維持它的上線狀態,以持續與網路同步。 你可以關閉它並重啟,但請記得: @@ -436,45 +439,46 @@ teku --network mainnet \ - 強制關閉可能會損害資料庫,這樣可能必須重新同步整個節點。 - 你的用戶端將與網路不同步,並且在重新啟動時需要重新同步。 雖然節點可以從上次關閉時的地方開始同步,但此流程會依離線的時長而定。 -_這不適用於共識層驗證者節點。_節點離線將影響所有依賴節點的服務。 如果你是為了_質押_而運行節點,應該儘可能降低停機時間。 +_這不適用於共識層驗證程式節點。_ 讓您的節點離線會影響所有依賴它的服務。 如果您是為了_質押_而執行節點,您應該盡可能地減少停機時間。 #### 建立用戶端服務 {#creating-client-services} -考慮建立一個在啟動時自動運行你的用戶端的服務。 例如,在 Linux 伺服器上,最佳案例為建立一個服務(如透過 `systemmd`),它會在適當設定的情況下執行用戶端,可限制使用者權限並自動重啟。 +考慮建立一個在啟動時自動運行你的用戶端的服務。 例如,在 Linux 伺服器上,一個好的做法是建立一個服務 (例如使用 `systemd`),該服務以有限權限的使用者身分使用適當的設定檔執行用戶端,並會自動重新啟動。 #### 更新用戶端 {#updating-clients} -你需要確保透過安全補丁、功能與[以太坊改善提議](/eips/)讓你的用戶端軟體保持最新。 特別是[硬分叉](/ethereum-forks/)前,請確保你運行的是正確的用戶端版本。 +您需要讓您的用戶端軟體保持最新狀態,包含最新的安全性修補程式、功能和 [EIP](/eips/)。 特別是在[硬分叉](/ethereum-forks/)之前,請確保您執行的是正確的用戶端版本。 -> 在重大的網路更新前,以太坊基金會在它們的[部落格](https://blog.ethereum.org)上發布貼文。 你可以[訂閱這些公告](https://blog.ethereum.org/category/protocol#subscribe),在你的節點需要更新時,透過電子郵件接收通知。 +> 在重要的網路更新之前,EF 會在其[部落格](https://blog.ethereum.org)上發佈一篇文章。 您可以[訂閱這些公告](https://blog.ethereum.org/category/protocol#subscribe),以便在您的節點需要更新時收到郵件通知。 更新用戶端非常簡單。 在每個用戶端的文檔中都有具體的說明,但實際上只要下載最新版的用戶端並透過最新的可執行檔重新啟動用戶端即可。 用戶端應從上次同步中斷的地方繼續同步,且完成用戶端更新。 每個用戶端實作都有用於點對點協定的人類可讀版本的字串,但也可透過指令存取該字串。 這個版本的字串可讓使用者檢查是否正執行正確的版本,並支援區塊瀏覽器和有興趣量化網路上特定用戶端的分佈的其他分析工具。 請參閱個別的用戶端文件以取得版本字串的更多資訊。 -#### 運行額外服務 {#running-additional-services} +#### 執行額外服務 {#running-additional-services} -運行你自己的節點,可讓你使用需要直接存取以太坊用戶端遠端程序呼叫的服務。 這些是建立在以太坊之上的服務,如[二層網路解決方案 ](/developers/docs/scaling/#layer-2-scaling)、錢包的後端、區塊鏈瀏覽器、開發者工具以及其他以太坊基礎設施。 +運行你自己的節點,可讓你使用需要直接存取以太坊用戶端遠端程序呼叫的服務。 這些是建立在以太坊上的服務,例如[第 2 層解決方案](/developers/docs/scaling/#layer-2-scaling)、錢包後端、區塊瀏覽器、開發人員工具和其他以太坊基礎設施。 #### 監控節點 {#monitoring-the-node} -要正確監控你的節點,請考慮收集指標。 用戶端提供指標端點,因此你可以取得關於你節點的綜合資料。 使用諸如 [InfluxDB](https://www.influxdata.com/get-influxdb/) 或 [Prometheus](https://prometheus.io/) 等工具來建立資料庫,可讓你在像是 [Grafana](https://grafana.com/) 的軟體中將資料視覺化和圖表化。 使用此軟體有許多設定可以使用,還有不同的 Grafana 儀表板來將你的節點和整個網路視覺化。 詳細範例請見[監控 Geth 教學](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/)。 +要正確監控你的節點,請考慮收集指標。 用戶端提供指標端點,因此你可以取得關於你節點的綜合資料。 使用 [InfluxDB](https://www.influxdata.com/get-influxdb/) 或 [Prometheus](https://prometheus.io/) 等工具來建立資料庫,然後您可以在 [Grafana](https://grafana.com/) 等軟體中將其轉換為視覺化和圖表。 使用此軟體有許多設定可以使用,還有不同的 Grafana 儀表板來將你的節點和整個網路視覺化。 例如,查看[關於使用 InfluxDB 和 Grafana 監控 Geth 的教學](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/)。 -在監控時,請務必注意機器的效能。 在節點的初次同步期間,用戶端軟體可能會耗用大量的 CPU 和 RAM 資源。 除了 Grafana,你也可以使用其他作業系統提供的工具,像是 `htop` 或 `uptime` 來執行。 +在監控時,請務必注意機器的效能。 在節點的初次同步期間,用戶端軟體可能會耗用大量的 CPU 和 RAM 資源。 除了 Grafana,您還可以使用作業系統提供的工具 (例如 `htop` 或 `uptime`) 來執行此操作。 -## 衍生閱讀 {#further-reading} +## 延伸閱讀 {#further-reading} -- [以太坊質押指南](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat,時常更新_ -- [ 指南|如何設定用於以太坊主網上質押的驗證者](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew,經常更新_ -- [在測試網上運行驗證者的 ETHStaker 指南](https://github.com/remyroy/ethstaker#guides) – _ETHStaker,經常更新_ -- [面向節點營運者的合併常見問題](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022 年 7 月_ -- [分析以太坊完整驗證節點的硬體要求](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902)_ – Albert Palau,2018 年9 月24 日_ -- [運行以太坊全節點:針對幾乎沒有動力的人提供的指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31)_ – Justin Leroux,2019 年 11 月 7 日_ -- [在以太坊主網上運行 Hyperledger Besu 節點:優勢、要求和設定](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/)_ – Felipe Faraggi,2020 年 5 月 7 日_ -- [使用監控堆疊部署 Nethermind 以太坊用戶端](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _ – Nethermind.eth,2020 年 7 月 8 日_ +- [以太坊質押指南](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat,經常更新_ +- [指南 | 如何在主網上為以太坊質押設定驗證程式](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew,經常更新_ +- [ETHStaker 關於在測試網上執行驗證程式的指南](https://github.com/remyroy/ethstaker#guides) – _ETHStaker,定期更新_ +- [適用於以太坊節點的 AWS 區塊鏈節點執行器範例應用程式](https://aws-samples.github.io/aws-blockchain-node-runners/docs/Blueprints/Ethereum) - _AWS,經常更新_ +- [針對節點營運商的「合併」常見問答](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022 年 7 月_ +- [分析成為以太坊完整驗證節點的硬體需求](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau,2018 年 9 月 24 日_ +- [執行以太坊完整節點:一份寫給有點懶的人的指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux,2019 年 11 月 7 日_ +- [在以太坊主網上執行 Hyperledger Besu 節點:優點、需求和設定](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi,2020 年 5 月 7 日_ +- [部署帶有監控堆疊的 Nethermind 以太坊用戶端](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth,2020 年 7 月 8 日_ ## 相關主題 {#related-topics} - [節點和用戶端](/developers/docs/nodes-and-clients/) -- [分塊](/developers/docs/blocks/) +- [區塊](/developers/docs/blocks/) - [網路](/developers/docs/networks/) diff --git a/public/content/translations/zh-tw/developers/docs/oracles/index.md b/public/content/translations/zh-tw/developers/docs/oracles/index.md new file mode 100644 index 00000000000..92b47f99374 --- /dev/null +++ b/public/content/translations/zh-tw/developers/docs/oracles/index.md @@ -0,0 +1,433 @@ +--- +title: "預言機" +description: "預言機使以太坊智慧型合約得以取得現實世界的資料,替使用者增加更多使用情境以及價值。" +lang: zh-tw +--- + +預言機是產生數據來源的應用程式,使鏈下數據來源可供區塊鏈用於智能合約。 因為預設情況下,基於以太坊的智慧型合約無法存取儲存在區塊鏈網路外部的資訊,所以這是必要的。 + +賦予智能合約使用鏈下數據執行的能力,擴展了去中心化應用程式的效用和價值。 例如,鏈上預測市場依靠預言機提供有關結果的信息,用於驗證用戶的預測。 假設 Alice 押注 20 以太幣打賭誰會成為下任美國 總統。 在這種情況下,預測市場去中心化應用程式需要一個預言機來確認選舉結果並確定 Alice 是否有資格獲得付款。 + +## 先決條件 {#prerequisites} + +本頁假設讀者熟悉以太坊基礎知識,包括[節點](/developers/docs/nodes-and-clients/)、[共識機制](/developers/docs/consensus-mechanisms/) 和 [EVM](/developers/docs/evm/)。 您還應該對[智能合約](/developers/docs/smart-contracts/) 和[智能合約剖析](/developers/docs/smart-contracts/anatomy/) 有充分的了解,特別是[事件](/glossary/#events)。 + +## 什麼是區塊鏈預言機? {#what-is-a-blockchain-oracle} + +預言機是尋找、驗證外部資訊 (即儲存在鏈外的資訊) 並將其傳輸到區塊鏈上運行的智能合約的應用程式。 除了「拉取」鏈下數據並在以太坊上廣播之外,預言機還可以將訊息從區塊鏈「推送」到外部系統,例如,一旦用戶透過以太坊交易發送費用就會解鎖智慧鎖。 + +如果沒有預言機,智能合約將完全局限於鏈上資料。 + +預言機依數據來源(一個或多個)、信任模型(中心化或去中心化)和系統架構(立即讀取、發布-訂閱模式和請求-回應模式)而有所不同。 我們還可以根據預言機是否檢索外部數據以供鏈上合約使用(輸入預言機)、將資訊從區塊鏈發送到鏈下應用程式(輸出預言機)或執行鏈下計算任務(計算預言機)來區分預言機。 + +## 為什麼智慧型合約需要預言機? {#why-do-smart-contracts-need-oracles} + +許多開發者將智慧型合約視為在區塊鏈上特定地址運行的程式碼。 然而,對[智能合約](/smart-contracts/) 更普遍的看法是,它們是自動執行的軟體程式,一旦滿足特定條件,就能夠在各方之間執行協議,因此稱為「智能合約」。 + +但考慮到以太坊的確定性,使用智慧型合約來執行人與人之間的協議並不簡單。 [確定性系統](https://en.wikipedia.org/wiki/Deterministic_algorithm) 是一種在給定初始狀態和特定輸入的情況下始終產生相同結果的系統,這意味著從輸入計算輸出的過程中不存在隨機性或變化。 + +為了實現確定性執行,區塊鏈限制節點_僅_使用儲存在區塊鏈本身上的資料就簡單的二元 (true/false) 問題達成共識。 此類問題的範例包括: + +- 「帳戶所有者(由公鑰識別)是否使用配對的私鑰簽署了這筆交易?」 +- 「這個帳戶有足夠的資金來支付交易嗎?」 +- 「這筆交易在該智慧型合約的背景下有效嗎?」等等。 + +如果區塊鏈從外部來源 (即現實世界) 接收資訊,將無法實現確定性,從而阻止節點就區塊鏈狀態變更的有效性達成一致。 以一個智慧型合約為例,它根據從傳統價格應用程式介面取得的當前以太幣-美元匯率執行交易。 這個數字可能會經常變化(更不用說應用程式介面可能會被棄用或被駭客攻擊),這意味著執行相同合約程式碼的節點會得到不同結果。 + +對於像以太坊這樣在全球有數千個節點處理交易的公共區塊鏈來說,確定性至關重要。 由於沒有中央機構作為事實來源,節點需要在應用相同交易後達到相同狀態的機制。 如果節點 A 執行智慧型合約程式碼並得到 「3」,而節點 B 在運行同一交易後得到 「7」,則會導致共識崩潰,從而抹掉以太坊作為去中心化計算平台的價值。 + +這種情況也凸顯了設計區塊鏈從外部來源取得資訊的問題。 然而,預言機透過從鏈下來源獲取資訊,並將其儲存在區塊鏈上給智能合約使用來解決這個問題。 由於儲存在鏈上的信息是不可更改且公開的,以太坊節點可以安全地使用預言機導入的鏈下數據來計算狀態變化,而不會破壞共識。 + +為此,預言機通常由鏈上運行的智能合約和一些鏈下組件組成。 鏈上合約接收來自其他智能合約的數據請求,並將其傳遞給鏈下元件(稱為預言機節點)。 此預言機節點可以查詢數據來源,例如使用應用程式介面 (API),並發送交易以將請求的數據儲存在智慧型合約的儲存中。 + +本質上,區塊鏈預言機彌合了區塊鏈與外部環境之間的資訊鴻溝,創建了「混合智慧型合約」。 混合智能合約是一種基於鏈上合約程式碼和鏈下基礎設施組合的功能。 去中心化預測市場是混合智慧型合約的一個很好的例子。 其他例子可能包括農作物保險智慧型合約,當一組預言機確定某些天氣現象已發生,該合約就會作出賠付。 + +## 什麼是預言機問題? 預言機問題 {#the-oracle-problem} + +預言機解決了一個重要問題,但也帶來了一些複雜問題,例如: + +- 我們如何驗證注入的資訊是從正確的來源提取的或沒有被篡改? + +- 我們如何確保這些數據始終可用並定期更新? + +所謂的「預言機問題」展示了使用區塊鏈預言機向智慧型合約發送輸入所帶來的問題。 來自預言機的數據必須正確,智慧型合約才能正確執行。 此外,必須「信任」預言機運營商提供準確的資訊,會破壞智慧型合約的「去信任」方面。 + +不同的預言機為預言機問題提供了不同的解決方案,我們會稍後探討。 預言機通常會根據它們應對以下挑戰的能力被評估: + +1. **正確性**:預言機不應導致智能合約基於無效的鏈外資料觸發狀態變更。 預言機必須保證資料的_真實性_和_完整性_。 真實性是指資料取自正確的來源,而完整性是指資料在傳送到鏈上之前保持完好 (即未被竄改)。 + +2. **可用性**:預言機不應延遲或阻止智能合約執行操作並觸發狀態變更。 這意味著來自預言機的資料必須_請求時可用_,且沒有間斷。 + +3. **激勵相容性**:預言機應該激勵鏈外資料提供者向智能合約提交正確的資訊。 激勵相容性包括了_可歸因性_和_問責性_。 可歸因性讓一段外部資訊與其提供者連結,而問責性則將數據提供者與他們提供的資訊綁定起來,讓他們能根據提供的資訊品質得到獎勵或懲罰。 + +## 區塊鏈預言機服務如何運作? {#how-does-a-blockchain-oracle-service-work} + +### 使用者 {#users} + +使用者是指需要區塊鏈外部資訊來完成特定操作的實體(即智慧型合約)。 預言機服務的基本工作流程從用戶向預言機合約發起數據請求開始。 數據請求通常會回應以下問題的一部分或全部: + +1. 鏈下節點可以在哪些來源查詢需要的資訊? + +2. 報告者如何處理來自數據來源的資訊,並提取有用的數據點? + +3. 有多少預言機節點可以參與數據擷取? + +4. 如何處理預言機報告中的差異? + +5. 應使用甚麼方法來過濾提交的資訊並將報告聚合為單一數值? + +### 預言機合約 {#oracle-contract} + +預言機合約是預言機服務的鏈上組件。 它負責監聽來自其他合約的數據請求,將數據查詢傳遞給預言機節點,並將返回的數據廣播給用戶端合約。 這份合約也可以對返回的數據點進行計算,以產生一個聚合值並將其發送給請求合約。 + +預言機合約公開了一些函數,讓用戶端合約在發出資料請求時使用。 當收到新的查詢時,智能合約會發出一個包含資料請求詳細資訊的[日誌事件](/developers/docs/smart-contracts/anatomy/#events-and-logs)。 這會通知已訂閱日誌的鏈外節點 (通常使用類似 JSON-RPC `eth_subscribe` 的指令),這些節點會繼續擷取日誌事件中定義的資料。 + +以下是 Pedro Costa 撰寫的[預言機合約範例](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e)。 這是一個簡單的預言機服務,能依照其他智能合約的請求,查詢鏈下應用程式介面(API)並將請求的資訊儲存在區塊鏈上: + +```solidity +pragma solidity >=0.4.21 <0.6.0; + +contract Oracle { + Request[] requests; //向合約發出的請求清單 + uint currentId = 0; //遞增的請求 ID + uint minQuorum = 2; //在宣告最終結果前要收到的最少回應數 + uint totalOracleCount = 3; //寫死的預言機數量 + + //定義一般 API 請求 + struct Request { + uint id; //請求 ID + string urlToQuery; //API URL + string attributeToFetch; //要在回應中擷取的 json 屬性 (金鑰) + string agreedValue; //來自金鑰的值 + mapping(uint => string) answers; //預言機提供的答案 + mapping(address => uint) quorum; //將查詢答案的預言機 (1=預言機未投票,2=預言機已投票) + } + + //觸發區塊鏈外預言機的事件 + event NewRequest ( + uint id, + string urlToQuery, + string attributeToFetch + ); + + //對最終結果達成共識時觸發 + event UpdatedRequest ( + uint id, + string urlToQuery, + string attributeToFetch, + string agreedValue + ); + + function createRequest ( + string memory _urlToQuery, + string memory _attributeToFetch + ) + public + { + uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); + Request storage r = requests[length-1]; + + // 寫死的預言機地址 + r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1; + r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1; + r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1; + + // 啟動一個可被區塊鏈外預言機偵測到的事件 + emit NewRequest ( + currentId, + _urlToQuery, + _attributeToFetch + ); + + // 增加請求 ID + currentId++; + } + + //由預言機呼叫以記錄其答案 + function updateRequest ( + uint _id, + string memory _valueRetrieved + ) public { + + Request storage currRequest = requests[_id]; + + //檢查預言機是否在受信任的預言機清單中 + //以及預言機是否尚未投票 + if(currRequest.quorum[address(msg.sender)] == 1){ + + //標記此地址已投票 + currRequest.quorum[msg.sender] = 2; + + //迭代答案「陣列」,直到找到可用位置並儲存擷取的值 + uint tmpI = 0; + bool found = false; + while(!found) { + //尋找第一個空的時隙 + if(bytes(currRequest.answers[tmpI]).length == 0){ + found = true; + currRequest.answers[tmpI] = _valueRetrieved; + } + tmpI++; + } + + uint currentQuorum = 0; + + //迭代預言機清單並檢查是否有足夠的預言機 (最低法定人數) + //投票給與目前答案相同的答案 + for(uint i = 0; i < totalOracleCount; i++){ + bytes memory a = bytes(currRequest.answers[i]); + bytes memory b = bytes(_valueRetrieved); + + if(keccak256(a) == keccak256(b)){ + currentQuorum++; + if(currentQuorum >= minQuorum){ + currRequest.agreedValue = _valueRetrieved; + emit UpdatedRequest ( + currRequest.id, + currRequest.urlToQuery, + currRequest.attributeToFetch, + currRequest.agreedValue + ); + } + } + } + } + } +} +``` + +### 預言機節點 {#oracle-nodes} + +預言機節點是預言機服務的鏈下組件。 它從外部資料來源提取信息,例如由第三方伺服器託管的應用程式介面(API),並把資料放在鏈上供智能合約使用。 預言機節點監聽鏈上預言機合約的事件,並完成在日誌中描述的任務。 + +預言機節點的常見工作是向 API 服務傳送 [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) 請求、剖析回應以擷取相關資料、將資料格式化為區塊鏈可讀的輸出,並將其包含在傳送到預言機合約的交易中,以傳送到鏈上。 預言機節點有時也會被要求用「真實性證明」去證明提交資料的有效性和完整性,我們稍後會再深入探討。 + +計算型預言機也依賴於鏈下節點,來執行那些在鏈上由於 gas 費用和區塊大小限制而無法執行的計算任務。 例如,預言機節點可能會被要求生成可驗證隨機數字(例如:用在基於區塊鏈的遊戲)。 + +## 預言機設計模式 {#oracle-design-patterns} + +預言機有多種類型,包括_即時讀取_、_發布-訂閱_和_請求-回應_,後兩種在以太坊智能合約中最受歡迎。 這裏我們簡單介紹發佈-訂閱型和請求-回應型。 + +### 發布-訂閱預言機 {#publish-subscribe-oracles} + +這類預言機提供「數據餵送」,其他合約可以定期讀取以取得資訊。 在這種情況下,資料預計會頻繁變動,所以用戶端合約需要監聽在預言機中儲存的數據更新。 例如提供最新 ETH-USD 價格信息給使用者的預言機。 + +### 請求-回應預言機 {#request-response-oracles} + +請求-回應的設置允許用戶端合約請求發佈-訂閱型預言機未提供的任意數據。 當數據集太大,無法儲存在智慧型合約時,或者使用者在任何時刻只需要數據的一小部分時,請求-回應型預言機是理想的選擇。 + +雖然比發佈-訂閱型預言機複雜,但請求-回應型預言機基本上和我們在上一節所描述的一樣。 預言機會有一個鏈上組件來接收資料請求,並傳遞給鏈下節點進行處理。 + +發起資料查詢的使用者需要負擔從鏈下來源檢索資訊的費用。 此外,使用者合約還必須提供資金,用來支付預言機合約通過請求中指定的回呼函數返回回應時所產生的 Gas 費用。 + +## 中心化與去中心化預言機 {#types-of-oracles} + +### 中心化預言機 {#centralized-oracles} + +中心化預言機由單一實體控制,此實體負責把鏈下資訊聚合並根據請求更新預言機合約中的數據。 由於中心化預言機依賴單一真實性來源,所以效率比較高。 當專有數據集由擁有者直接發佈,且帶有被廣泛接受的簽名時,中心化預言機的表現可能會更好。 但是,它們也帶來了一些缺點: + +#### 低正確性保證 {#low-correctness-guarantees} + +使用中心化預言機時,不能確認提供的資訊準確與否。 即使是「聲譽良好」的提供者也可能會變得不可靠或被駭客攻擊。 如果預言機被破壞,智慧型合約將會基於錯誤資料來運行。 + +#### 可用性不佳 {#poor-availability} + +中心化預言機無法保證能持續向其他智能合約提供鏈下資料。 如果提供者決定把服務關閉,或者一個駭客劫持了預言機的鏈下組件,你的智能合約會面臨拒絕服務(DoS)攻擊的風險。 + +#### 激勵相容性不佳 {#poor-incentive-compatibility} + +中心化預言機通常缺乏良好設計,或根本不存在激勵機制來促使數據提供者提供準確或未經更改的資訊。 向預言機付錢以保證正確性並不等同於保證誠實。 隨著智慧型合約控制的價值數量增加,這一問題變得更加嚴重。 + +### 去中心化預言機 {#decentralized-oracles} + +去中心化預言機旨在克服中心化預言機的限制,通過消除單點故障來提高可靠性。 去中心化預言機服務由點對點網路中的多個參與者組成,這些參與者在將鏈下數據發送到智慧型合約之前,會先對數據達成共識。 + +理想狀態下,去中心化預言機應該是無許可,去信任而且不受中心化組織管理;而在現實中,預言機有著不同程度的去中心化。 有一些半去中心化的預言機網路允許任何人參與,但由一個「所有者」根據節點的過往表現來批准和移除節點。 完全去中心化的預言機網路也存在,他們通常以獨立區塊鏈運行,並設有明確的共識機制來協調節點並懲罰不當行為。 + +使用去中化預言機有著以下的優點: + +### 高正確性保證 {#high-correctness-guarantees} + +去中心化預言機嘗試用不同的方法來達到數據的準確性。 這包括了使用證明來證實返回資訊的真實性和完整性,以及要求多個實體共同同意鏈下數據的有效性。 + +#### 真實性證明 {#authenticity-proofs} + +真實性證明是一個密碼學機制,能夠讓人們獨立驗證從外部來源檢索到的資訊。 這些證明可以驗證資訊的來源,並在檢索後檢測可能的變動。 + +真實性證明的範例包括: + +**傳輸層安全性 (TLS) 證明**:預言機節點通常使用基於傳輸層安全性 (TLS) 協議的安全 HTTP 連線,從外部來源擷取資料。 部分去中心化預言機使用真實性證明來驗證 TLS 會話(即確認節點和特定伺服器之間的資訊交換)並確證會話內容未被修改。 + +**可信執行環境 (TEE) 證明**:[可信執行環境](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) 是一個沙箱化運算環境,與其主機系統的作業程序隔離。 TEEs 保證了在計算環境中儲存和使用的任何應用程式程式碼或數據都會保持完整性、機密性和不可竄改性。 使用者還可以生成一個證明來證明一個應用程式實例是在可信任執行環境中運行。 + +某些種類的去中心化預言機要求預言機節點的營運者提供 TEE 證明。 這能向使用者確保節點營運者是在可信任的執行環境中運行預言機用戶端的實例。 TEEs 防止外部進程修改或讀取應用程式的程式碼和數據,因此這些證明可以證實預言機節點有保持資訊的完整性和機密性。 + +#### 基於共識的資訊驗證 {#consensus-based-validation-of-information} + +向智慧型合約提供資料時,中心化預言機依賴於單一真實性來源,因此有可能發佈不準確的資訊。 去中心化預言機借由依靠多個預言機節點來查詢鏈下資訊,來解決這個問題。 通過比對不同來源的資料,去中心化預言機降低了向鏈上合約提供無效資訊的風險。 + +但是去中化預言機必需處理不同鏈下來源的資訊差異。 為了盡可能減少資訊差異並確保提供給預言機合約的數據反映了預言機節點的集體意見,去中心化預言機使用了以下的機制: + +##### 對資料的準確性投票或質押 + +有部分的去中心化預言機網路要求參與者使用網路的原生代幣對資料查詢答案的準確性進行投票或質押 (例如「誰贏了 2020 年的美國大選?」)。 一個匯總協議會匯總這些投票和質押,並把受到大多數支持的答案作為有效答案。 + +若節點提供的答案與大多數答案不一致將會受到懲罰,即把他們的代幣分發給其他提供了更正確數值的節點。 要求節點在提供數據前提供擔保可以激勵節點做出誠實的回應,因為這些節點都被認為是想得到最大回報的理性經濟參與者。 + +質押/投票還可以保護去中心化預言機免受[女巫攻擊](/glossary/#sybil-attack),惡意行為者會在這種攻擊中建立多個身分來操縱共識系統。 但是,質押無法防範「佔便宜」的行為(預言機節點直接複製其他節點的資訊)和「懶惰驗證」(預言機節點遵循大多數而不親自驗證資訊)。 + +##### 謝林點機制 + +[謝林點](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\)) 是一個賽局理論概念,假設在沒有任何通訊的情況下,多個實體總是會預設採用一個常見的問題解決方案。 謝林點機制常常被用在去中心化預言機網路,讓節點能就數據請求的答案達成共識。 + +這個概念的早期想法是 [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/),這是一個提議的資料饋送機制,參與者提交「純量」問題 (答案可以用量值描述的問題,例如「ETH 的價格是多少?」) 的回應以及一筆押金。 提供介於第 25 和第 75 [百分位數](https://en.wikipedia.org/wiki/Percentile) 之間數值的使用者會獲得獎勵,而數值與中位數相差甚遠的使用者則會受到懲罰。 + +雖然 SchellingCoin 現已不復存在,但許多去中心化預言機 (特別是 [Maker 協定預言機](https://docs.makerdao.com/smart-contract-modules/oracle-module)) 仍使用謝林點機制來提高預言機資料的準確性。 每個 Maker 預言機都由一個鏈下的 P2P 網路的節點(「中繼者」和「餵送者」)組成,這些節點提交抵押資產的市場價格,然後由鏈上的「Medianizer」合約計算所有提供值的中位數。 當指定的延遲期結束,這個中位數值就成為相關資產的新參考價格。 + +其他使用謝林點機制的預言機範例包括 [Chainlink 鏈外報告](https://docs.chain.link/architecture-overview/off-chain-reporting)和 [Witnet](https://witnet.io/)。 在這兩個系統中,P2P 網路中的預言機節點回應會聚合成一個單一的聚合值,例如平均值或中間值。 節點將根據其回應與聚合值的一致程度或偏差程度來獲得獎勵或受到懲罰。 + +謝林點機制會具有吸引力,是因為他們降低了鏈上足跡(只有一筆交易需要被發送)的同時又保證了去中心化。 後者之所以可行,是因為節點需要在提交的回應清單上簽署,才可以將其輸入到生成平均值或中位數的演算法中。 + +### 可用性 {#availability} + +去中心化預言機服務為智能合約確保了鏈下數據的高可用性。 這是通過把鏈下資訊來源以及負責將信息傳輸至鏈上的節點同時去中心化來實現。 + +這確保了容錯能力,因為預言機合約可以依賴多個節點(這些節點也依賴於多個數據來源)來執行其他合約的查詢。 在來源_和_節點營運者層級的去中心化至關重要 — 一個預言機節點網路若提供從相同來源擷取的資訊,將會遇到與中心化預言機相同的問題。 + +基於質押的預言機也可能對未能快速回應資料請求的節點運營者進行懲罰。 這大大激勵了預言機節點投資於容錯基礎設施,並及時提供數據。 + +### 良好的激勵相容性 {#good-incentive-compatibility} + +去中心化預言機採用了不同的激勵設計,來避免預言機節點出現[拜占庭](https://en.wikipedia.org/wiki/Byzantine_fault)行為。 具體來說,它們實現了_可歸因性_和_問責性_: + +1. 去中心化預言機節點通常需要為他們對數據請求的回應簽署。 這個資訊有助於評估預言機節點的過往表現,讓使用者可以在提出數據請求時過濾掉不可靠的預言機節點。 Witnet 的[演算法信譽系統](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)就是一個例子。 + +2. 正如同前面所說,去中心化預言機可能要求節點對他們提交數據的真實性進行質押。 如果該聲明經過驗證無誤,這筆質押可以連同誠實服務的獎勵一併返還。 但如果資訊不準確,節點也可以被懲罰,這為問責提供了一定的保障。 + +## 預言機在智能合約中的應用 {#applications-of-oracles-in-smart-contracts} + +以下是以太坊中預言機的常見用例: + +### 擷取財務資料 {#retrieving-financial-data} + +[去中心化金融](/defi/) (DeFi) 應用程式允許點對點借貸、借款和資產交易。 通常這會需要不同的金融資訊,包括匯率數據(用來計算加密貨幣的法幣價值或比較代幣價格)和資本市場數據(用來計算代幣化資產的價值,例如黃金或美元)。 + +例如,一個去中心化借貸協議需要查詢作為抵押品存入的資產(例如 ETH)的當前市場價格。 這令合約能確定扺押品的價值,以及確定它能從系統中借出多少。 + +DeFi 中常見的「價格預言機」(通常如此稱呼) 包括 Chainlink 價格資訊、Compound Protocol 的 [Open Price Feed](https://compound.finance/docs/prices)、Uniswap 的[時間加權平均價格 (TWAP)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) 和 [Maker Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module)。 + +開發者在將這些價格預言機整合到他們的項目中之前,應該了解相關的注意事項。 這篇[文章](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/)詳細分析了計劃使用任何上述價格預言機時需要考慮的事項。 + +以下是一個在你的智慧型合約中使用 Chainlink price feed 查詢最新 ETH 價格的範例: + +```solidity +pragma solidity ^0.6.7; + +import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol"; + +contract PriceConsumerV3 { + + AggregatorV3Interface internal priceFeed; + + /** + * Network: Kovan + * Aggregator: ETH/USD + * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331 + */ + constructor() public { + priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331); + } + + /** + * Returns the latest price + */ + function getLatestPrice() public view returns (int) { + ( + uint80 roundID, + int price, + uint startedAt, + uint timeStamp, + uint80 answeredInRound + ) = priceFeed.latestRoundData(); + return price; + } +} +``` + +### 產生可驗證的隨機性 {#generating-verifiable-randomness} + +某些區塊鏈應用程式,例如基於區塊鏈的遊戲或彩劵方案,需要高度不可預測性和隨機性才能有效運作。 但是,區塊鏈的確定性執行方式消除了任何隨機性。 + +最初的方法是使用偽隨機密碼編譯函式,例如 `blockhash`,但這些可能被[礦工操縱](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) 解決工作量證明演算法。 此外,以太坊[轉換為權益證明](/roadmap/merge/)意味著開發者不能再依賴 `blockhash` 來取得鏈上隨機性。 信標鏈的 [RANDAO 機制](https://eth2book.info/altair/part2/building_blocks/randomness)則提供了另一種隨機性來源。 + +從鏈下生成隨機值並發往鏈上是可行的,但這會需要對使用者有很高的信任要求。 他們必須相信這個值確實是通過無法預測的機制來生成,而且沒有在傳輸的過程中被修改。 + +專為鏈下計算而設計的預言機解決了這個問題,它們通過在鏈下安全地生成隨機結果,並將結果與證明過程的不可預測性密碼學證明一起廣播到鏈上。 其中一個範例是 [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (可驗證隨機函式),這是一種可證明公平且防竄改的隨機數產生器 (RNG),可用於為依賴不可預測結果的應用程式建置可靠的智能合約。 + +### 取得事件結果 {#getting-outcomes-for-events} + +有了預言機後,創建能對現實世界事件做出反應的智慧型合約變得簡單。 預言機服務通過允許合約通過鏈下組件連結到外部 APIs 並從這些數據來源中獲取資訊,來讓這變得可能。 例如,前面提到的預測 dApp 可能會請求預言機從可信的鏈下來源(例如美聯社)返回選舉結果。 + +使用預言機來檢索基於現實世界結果的數據,使其他創新的應用場景變為可能;例如一個去中心化的保險產品需要準確的天氣、災害等資訊才能有效運作。 + +### 自動化智能合約 {#automating-smart-contracts} + +智慧型合約不會自動運行;而是必須由一個外部帳戶 (EOA)或其他合約帳戶觸發相應的函數來執行合約程式碼。 在大多數情況下,合約的大部分函數都是公開且能被 EOA 和其他合約調用。 + +但合約中也有其他人無法存取的_私有函式_;但這些函式對 dApp 的整體功能至關重要。 例如,定期為使用者鑄造新 NFT 的 `mintERC721Token()` 函式、在預測市場中發放獎金的函式,或在 DEX 中解鎖已質押代幣的函式。 + +開發者會需要定期觸發這些函數來讓應用程式順暢運行。 但是,這可能會讓開發者浪費更多時間在這些日常任務,這便是為甚麼自動化執行智慧型合約如此具吸引力。 + +部分去中心化預言機網路提供自動化服務,允許鏈下預言機節點按照使用者定義的參數來觸發智慧型合約的函數。 通常來說,這會需要把目標合約「登記」在預言機服務上,提供資金以支付預言機營運者的費用,以及定義好合約的觸發條件或時間。 + +Chainlink 的 [Keeper Network](https://chain.link/keepers) 為智能合約提供選項,能以信任最小化和去中心化的方式,外包定期維護工作。 請閱讀官方 [Keeper 文件](https://docs.chain.link/docs/chainlink-keepers/introduction/),了解如何使您的合約與 Keeper 相容以及如何使用 Upkeep 服務。 + +## 如何使用區塊鏈預言機 {#use-blockchain-oracles} + +你可以將多個預言機應用程式整合到你的以太坊去中心化應用程式中: + +**[Chainlink](https://chain.link/)** - _Chainlink 去中心化預言機網路提供防竄改的輸入、輸出和運算,以支援任何區塊鏈上的進階智能合約。_ + +**[RedStone Oracles](https://redstone.finance/)** - _RedStone 是一個去中心化模組化預言機,提供對燃料費最佳化的資料饋送。 它專門為新興資產提供價格資訊,例如流動性質押代幣 (LST)、流動性再質押代幣 (LRT) 和比特幣質押衍生品。_ + +**[Chronicle](https://chroniclelabs.org/)** - _Chronicle 透過開發真正可擴展、具成本效益、去中心化且可驗證的預言機,克服了目前將資料傳輸到鏈上的限制。_ + +**[Witnet](https://witnet.io/)** - _Witnet 是一個無需許可、去中心化且抗審查的預言機,幫助智能合約以強大的加密經濟保證對現實世界事件做出反應。_ + +**[UMA Oracle](https://uma.xyz)** - _UMA 的樂觀預言機允許智能合約為不同的應用程式快速接收任何類型的資料,包括保險、金融衍生品和預測市場。_ + +**[Tellor](https://tellor.io/)** - _Tellor 是一個透明且無需許可的預言機協定,讓您的智能合約在需要時能夠輕鬆取得任何資料。_ + +**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol 是一個跨鏈資料預言機平台,可將現實世界的資料和 API 匯總並連接到智能合約。_ + +**[Pyth Network](https://pyth.network/)** - _Pyth Network 是一個第一方金融預言機網路,旨在在一個防竄改、去中心化且可自我維持的環境中,持續將真實世界的資料發布到鏈上。_ + +**[API3 DAO](https://www.api3.org/)** - _API3 DAO 正在提供第一方預言機解決方案,在為智能合約提供的去中心化解決方案中,提供更高的來源透明度、安全性和可擴展性_ + +**[Supra](https://supra.com/)** - 一個垂直整合的跨鏈解決方案工具包,將所有區塊鏈 (公共 L1 和 L2 或私有企業) 相互連接,提供可用於鏈上和鏈外用例的去中心化預言機價格饋送。 + +**[Gas Network](https://gas.network/)** - 一個分散式預言機平台,提供跨區塊鏈的即時燃料費價格資料。 透過將頂尖燃料費價格資料提供者的資料帶到鏈上,Gas Network 正在幫助推動互通性。 Gas Network 支援超過 35 條鏈的資料,包括以太坊主網和許多頂尖的 L2。 + +## 延伸閱讀 {#further-reading} + +**文章** + +- [什麼是區塊鏈預言機?](https://chain.link/education/blockchain-oracles) — _Chainlink_ +- [什麼是區塊鏈預言機?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_ +- [去中心化預言機:全面概述](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_ +- [在以太坊上實作區塊鏈預言機](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_ +- [為什麼智能合約不能進行 API 呼叫?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_ +- [所以你想使用價格預言機](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_ + +**影片** + +- [預言機與區塊鏈效用的擴展](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_ + +**教學** + +- [如何在 Solidity 中擷取以太坊的目前價格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_ +- [使用預言機資料](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_ + +**專案範例** + +- [適用於 Solidity 中以太坊的完整 Chainlink 入門專案](https://github.com/hackbg/chainlink-fullstack) — _HackBG_ diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/dart/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/dart/index.md index c53baaf3024..b452e039273 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/dart/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/dart/index.md @@ -1,28 +1,33 @@ --- -title: Dart 開發者適用的以太坊資源 -description: 學習如何使用 Dart 語言進行以太坊開發 +title: "Dart 開發者適用的以太坊資源" +description: "學習如何使用 Dart 語言進行以太坊開發" lang: zh-tw incomplete: true --- -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} -## 指導手冊 {#tutorials} +## 教學 {#tutorials} -- [Flutter 與區塊鏈 – Hello World 去中心化應用程式](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/)帶您完成入門的所有步驟: - 1. 使用 [Solidity](https://soliditylang.org/) 編寫智慧型合約 - 2. 使用 Dart 編寫使用者介面 -- 如果你已有基礎知識,[使用 Flutter 建立行動去中心化應用程式](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a)的篇幅要短很多, 可能是更好選擇 -- 如果你偏好透過觀看影片來學習,可以觀看[建立你的第一個區塊鏈 Flutter 應用程式](https://www.youtube.com/watch?v=3Eeh3pJ6PeA),片長約一小時 -- 如果你時間不足,可能更喜歡[在以太坊上使用 Flutter 和 Dart 建立區塊鏈去中心化應用程式](https://www.youtube.com/watch?v=jaMFEOCq_1s),只需大約二十分鐘 -- [透過 WalletConnect 的 Web3Modal 將 MetaMask 整合到 Flutter 應用程式](https://www.youtube.com/watch?v=v_M2buHCpc4) - 這段簡短影片會一步一步帶你使用 WalletConnect 的 [Web3Modal](https://pub.dev/packages/web3modal_flutter) 程式庫,將 MetaMask 整合到 Flutter 應用程式中 -- [Solidity 和 Flutter 行動區塊鏈開發者訓練營課程](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - 全端行動區塊鏈開發者課程播放列表 +- [Flutter 與區塊鏈 – Hello World 去中心化應用程式](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) 會帶你完成所有入門步驟: + 1. 以 [Solidity](https://soliditylang.org/) 編寫智能合約 + 2. 使用 Dart 編寫使用者介面 +- [用 Flutter 建立行動去中心化應用程式](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) 篇幅較短, + 如果你已了解基礎知識,這篇可能更適合你。 +- 如果你偏好透過觀看影片來學習,可以觀看 [建立你的第一個區塊鏈 Flutter 應用程式](https://www.youtube.com/watch?v=3Eeh3pJ6PeA),片長約一小時。 +- 如果你沒什麼耐心,可能比較喜歡 [在以太坊上使用 Flutter 與 Dart 建立區塊鏈去中心化應用程式](https://www.youtube.com/watch?v=jaMFEOCq_1s),影片長度只有約 20 分鐘。 +- [透過 WalletConnect 的 Web3Modal 將 MetaMask 整合到 Flutter 應用程式](https://www.youtube.com/watch?v=v_M2buHCpc4) - 這段簡短影片會一步一步帶你使用 WalletConnect 的 [Web3Modal](https://pub.dev/packages/web3modal_flutter) 程式庫,將 MetaMask 整合到你的 Flutter 應用程式中。 +- [使用 Solidity 與 Flutter 的行動區塊鏈開發者訓練營課程](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - 全端行動區塊鏈開發者課程播放清單 -## 與以太坊客戶合作工作 {#working-with-ethereum-clients} +## 使用以太坊用戶端 {#working-with-ethereum-clients} -你可以使用以太坊,來建立能夠利用加密貨幣與區塊鏈技術長處的去中心化應用程式(或稱「dapp」)。 目前至少有兩個維護的程式庫 可供 Dart 使用以太坊的 [JSON-RPC 應用程式介面](/developers/docs/apis/json-rpc/)。 +你可以使用以太坊,來建立能夠利用加密貨幣與區塊鏈技術長處的去中心化應用程式(或稱「dapp」)。 +目前 Dart 至少有兩個持續維護的程式庫,可用來存取以太坊的 +[JSON-RPC API](/developers/docs/apis/json-rpc/)。 -1. [simonbutler.eu 的 Web3dart](https://pub.dev/packages/web3dart) -1. [來自 darticulate.com 的以太坊 5.0.0](https://pub.dev/packages/ethereum) +1. [pwa.ir](https://pub.dev/packages/web3dart 的 Web3dart) +2. [來自 darticulate.com](https://pub.dev/packages/ethereum 的以太坊 5.0.0) -還有其他程式庫讓你能夠操作特定的以太坊地址, 或擷取各種加密貨幣的價格。 [你在這裡可以看到完整清單](https://pub.dev/dart/packages?q=ethereum)。 +還有其他程式庫讓你能夠操作特定的以太坊地址, +或擷取各種加密貨幣的價格。 +[你可以在此處查看完整清單](https://pub.dev/dart/packages?q=ethereum)。 diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/delphi/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/delphi/index.md index cb6f61cbfcb..586379db4c4 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/delphi/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/delphi/index.md @@ -1,6 +1,6 @@ --- -title: Delphi 開發者適用的以太坊資源 -description: 學習如何使用 Delphi 程式設計語言進行以太坊開發 +title: "Delphi 開發者適用的以太坊資源" +description: "學習如何使用 Delphi 程式設計語言進行以太坊開發" lang: zh-tw incomplete: true --- @@ -11,46 +11,46 @@ incomplete: true -使用 Ethereum 建立去中心化應用程式 (或稱「dapp」),發揮加密貨幣學和區塊鏈技術的優勢。 這些去中心化應用程式一旦部署到 Ethereum 後,就會持續地按照其設計的方式執行,進而成為非常可信的工具, 這些應用程序可以控制數字資產,以便創造新的金融應用; 這些應用程式是去中心化的,表示任何單一的實體或個人都不能加以控制,也幾乎不可能被審查。 +使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式可以控制數位資產,以便建立新型金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 在以太坊上構建去中心化應用程式,並使用 Delphi 程式設計語言與智慧型合約互動! -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-the-solidity-language} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-the-solidity-language} **邁出第一步,整合 Delphi 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## 初學者參考和連結 {#beginner-references-and-links} +## 初學者參考資料與連結 {#beginner-references-and-links} **Delphereum 程式庫簡介** -- [甚麼是 Delphereum?](https://github.com/svanas/delphereum/blob/master/README.md) -- [將 Delphi 連結到本地(記憶體內部)區塊鏈](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0) -- [將 Delphi 連結到以太坊主網](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83) -- [將 Delphi 連結到智慧型合約](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1) +- [什麼是 Delphereum?](https://github.com/svanas/delphereum/blob/master/README.md) +- [將 Delphi 連接到本機 (記憶體內) 區塊鏈](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0) +- [將 Delphi 連接到以太坊主網](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83) +- [將 Delphi 連接到智能合約](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1) -**想要跳過設定,並直接跳至範例?** +**想要立即略過設定,直接跳到範例嗎?** -- [三分鐘的智慧型合約和 Delphi - 第 1 部分](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d) -- [三分鐘的智慧型合約和 Delphi - 第 2 部分](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b) +- [3 分鐘智能合約與 Delphi - 第 1 部分](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d) +- [3 分鐘智能合約與 Delphi - 第 2 部分](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b) ## 中階文章 {#intermediate-articles} -- [使用 Delphi 產生以太坊簽名的訊息簽章](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) -- [使用 Delphi 傳送以太幣](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) -- [使用 Delphi 傳送 ERC-20 代幣](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d) +- [在 Delphi 中產生以太坊簽署的訊息簽章](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) +- [使用 Delphi 轉移以太幣](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) +- [使用 Delphi 轉移 ERC-20 代幣](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d) ## 進階使用模式 {#advanced-use-patterns} -- [Delphi 和以太坊名稱服務 (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) -- [QuikNode、以太坊 和 Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) -- [Delphi 和以太坊黑暗森林](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) -- [在 Delphi 中將一種代幣兌換成另一種代幣](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) +- [Delphi 與 Ethereum 名稱服務 (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) +- [QuikNode、以太坊與 Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) +- [Delphi 與以太坊的黑暗森林](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) +- [在 Delphi 中將一種代幣交換成另一種](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) -想取得更多資源? 請瀏覽[ethereum.org/developers](/developers/) +想取得更多資源? 請查看 [ethereum.org/developers](/developers/)。 diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/dot-net/index.md index 14f8a735568..e61867c4dcd 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/dot-net/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/dot-net/index.md @@ -1,86 +1,87 @@ --- -title: .NET 開發者適用的以太坊資源 -description: 學習如何使用 .NET 型專案和工具進行以太坊開發 +title: ".NET 開發者適用的以太坊資源" +description: "學習如何使用 .NET 型專案和工具進行以太坊開發" lang: zh-tw incomplete: true --- -學習如何使用 .NET 型專案和工具進行以太坊開發 +學習如何使用基於 .NET 的專案和工具進行以太坊開發 -使用 Ethereum 建立去中心化應用程式 (或稱「dapp」),發揮加密貨幣學和區塊鏈技術的優勢。 這些去中心化應用程式一旦部署到 Ethereum 後,就會持續地按照其設計的方式執行,進而成為非常可信的工具, 這些應用程序可以控制數字資產,以便創造新的金融應用; 這些應用程式是去中心化的,表示任何單一的實體或個人都不能加以控制,也幾乎不可能被審查。 +使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式可以控制數位資產,以便建立新型金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 -使用 Microsoft 技術堆疊中的工具和語言在以太坊上構建去中心化應用程式並與智慧型合約進行 互動 - 跨 .NET Framework/.NET Core/.NET Standard 在 VSCode 和 Visual Studio 等工具上支援 C#、# Visual Basic .NET 和 F#。 在幾分鐘內使用 Microsoft Azure 區塊鏈在 Azure上部署以太坊區塊鏈。 將對 .NET 的喜愛轉移至以太坊! +使用 Microsoft 技術堆疊中的工具和語言在以太坊上構建去中心化應用程式並與智慧型合約進行 +互動 - 跨 .NET Framework/.NET Core/.NET Standard 在 VSCode 和 Visual Studio 等工具上支援 C#、# Visual Basic .NET 和 F#。 在幾分鐘內使用 Microsoft Azure 區塊鏈在 Azure上部署以太坊區塊鏈。 將對 .NET 的喜愛轉移至以太坊! -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-the-solidity-language} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-the-solidity-language} **邁出第一步,整合 .NET 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## 初學者參考和連結 {#beginner-references-and-links} +## 初學者參考資料與連結 {#beginner-references-and-links} **Nethereum 程式庫和 VS Code Solidity 簡介** -- [Nethereum 入門](https://docs.nethereum.com/en/latest/getting-started/) +- [Nethereum,入門](https://docs.nethereum.com/en/latest/getting-started/) - [安裝 VS Code Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) -- [.NET 開發者建立和調用以太坊智慧型合約的工作流程](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2) -- [智慧型合約與 Nethereum 的整合](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm) -- [使用 Nethereum 連接 .NET 和以太坊區塊鏈智慧型合約](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933),也可參考此[中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1) -- [Nethereum - 區塊鏈的開放源始碼 .NET 整合程式庫](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/) +- [.NET 開發者建立和呼叫以太坊智能合約的工作流程](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2) +- [與 Nethereum 整合的智能合約](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm) +- [使用 Nethereum 連接 .NET 與以太坊區塊鏈智能合約](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933),另有[中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1) +- [Nethereum-一個用於區塊鏈的開源 .NET 整合庫](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/) - [使用 Nethereum 將以太坊交易寫入 SQL 資料庫](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36) -- [瞭解如何使用 C# 和 VisualStudio 輕鬆部署以太坊智慧型合約](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c) +- [了解如何使用 C# 和 VisualStudio 輕鬆部署以太坊智能合約](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c) -**想要跳過設定,直接了解範例?** +**想要立即略過設定,直接跳到範例嗎?** -- [訓練場](http://playground.nethereum.com/) - 與以太坊互動,並學習如何透過瀏覽器使用 Nethereum。 +- [訓練場](http://playground.nethereum.com/) - 透過瀏覽器與以太坊互動,並學習如何使用 Nethereum。 - 查詢帳戶餘額 [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001) - - 查詢 ERC20 智慧型合約餘額 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004) - - 將以太幣傳送至帳戶 [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003) + - 查詢 ERC20 智能合約餘額 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004) + - 將以太幣轉帳至帳戶 [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003) - ... 和更多相關內容! -## 中級文章 {#intermediate-articles} +## 中階文章 {#intermediate-articles} -- [Nethereum 活頁簿/範例清單](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/) -- [部署你自己的開發測試鏈](https://github.com/Nethereum/Testchains) -- [Solidity 的 VSCode 程式碼產生外掛程式](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/) -- [Unity 和以太坊:為何以及如何](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how) -- [為以太坊去中心化應用程式建立 ASP.NET 核心 Web 應用程式介面](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/) -- [使用 Nethereum Web3 實作供應鏈追踪系統](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4) -- [Nethereum 區塊處理](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/),包含 [C# 訓練場範例](http://playground.nethereum.com/csharp/id/1025) +- [Nethereum 工作手冊/範例清單](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/) +- [部署您自己的開發測試鏈](https://github.com/Nethereum/Testchains) +- [適用於 Solidity 的 VSCode Codegen 外掛程式](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/) +- [Unity 與以太坊:原因與方法](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how) +- [為以太坊去中心化應用程式建立 ASP.NET Core Web API](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/) +- [使用 Nethereum Web3 實作供應鏈追蹤系統](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4) +- [Nethereum 區塊處理](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/),附 [C# 訓練場範例](http://playground.nethereum.com/csharp/id/1025) - [Nethereum Websocket 串流](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/) - [Kaleido 和 Nethereum](https://kaleido.io/kaleido-and-nethereum/) - [Quorum 和 Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md) ## 進階使用模式 {#advanced-use-patterns} -- [Azure 金鑰保存庫和 Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum) +- [Azure Key Vault 和 Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum) - [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid) - [Ujo Nethereum 後端參考架構](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/) -## .NET 專案、工具及其他有趣內容 {#dot-net-projects-tools-and-other-fun-stuff} +## .NET 專案、工具和其他有趣的東西 {#dot-net-projects-tools-and-other-fun-stuff} -- [Nethereum 訓練場](http://playground.nethereum.com/) - _在瀏覽器中編譯、建立和執行 Nethereum 程式碼片段_ -- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazor 中的 Nethereum 程式碼產生使用者介面_ -- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _.NET Wasm 單頁應用程式輕量區塊鏈瀏覽器和簡易錢包_ -- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _本質上由中繼資料驅動的業務規則引擎(同時適用於. NET 平台和以太坊平台)_ -- [Nethermind](https://github.com/NethermindEth/nethermind) - _.NET Core 以太坊用戶端,適用於 Linux、Windows 和 MacOS_ -- [eth-utils](https://github.com/ethereum/eth-utils/) - _使用以太坊相關程式碼庫的公用程式函式_ -- [TestChains](https://github.com/Nethereum/TestChains) - _可實現快速回應的預先設定的 .NET 開發鏈 (PoA)_ +- [Nethereum 訓練場](http://playground.nethereum.com/) - _在瀏覽器中編譯、建立並執行 Nethereum 程式碼片段_ +- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _使用 Blazor UI 的 Nethereum codegen_ +- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _一個 .NET Wasm 單頁應用程式輕量區塊鏈瀏覽器和簡易錢包_ +- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _一個業務規則引擎 (同時適用於 .NET 平台和以太坊平台),本質上是由元資料驅動_ +- [Nethermind](https://github.com/NethermindEth/nethermind) - _一個適用於 Linux、Windows、MacOS 的 .NET Core 以太坊用戶端_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _用於處理以太坊相關程式碼庫的公用程式函式_ +- [TestChains](https://github.com/Nethereum/TestChains) - _可實現快速回應的預先設定 .NET 開發鏈 (PoA)_ -想取得更多資源? 請瀏覽[ethereum.org/developers](/developers/) +想取得更多資源? 請查看 [ethereum.org/developers](/developers/)。 ## .NET 社群貢獻者 {#dot-net-community-contributors} -在 Nethereum,我們主要活躍於 [Gitter](https://gitter.im/Nethereum/Nethereum) 上,任何人都可以前來提問/回答問題,獲得協助或者放鬆一下。 隨意在 [Nethereum GitHub 儲存庫](https://github.com/Nethereum)上提交拉取請求或開立一個議題,或僅瀏覽我們提供的許多小專案/範例專案。 你也可以在 [Discord](https://discord.gg/jQPrR58FxX) 上找到我們! +在 Nethereum,我們主要在 [Gitter](https://gitter.im/Nethereum/Nethereum) 上活動,歡迎大家來提問/回答問題、尋求協助或只是閒聊。 歡迎在 [Nethereum GitHub 儲存庫](https://github.com/Nethereum) 上提交拉取請求 (PR) 或開啟議題,也可以瀏覽我們許多的附屬/範例專案。 您也可以在 [Discord](https://discord.gg/jQPrR58FxX) 上找到我們! -如果你是 Nethermind 新手並需要入門幫助,請加入我們的 [Discord](http://discord.gg/PaCMRFdvWT)。 我們的開發者隨時準備回答你的問題。 隨時在 [Nethermind GitHub 存儲庫](https://github.com/NethermindEth/nethermind)上建立拉取請求或提出任何議題。 +如果您是 Nethermind 新手且需要入門協助,請加入我們的 [Discord](http://discord.gg/PaCMRFdvWT)。 我們的開發者隨時準備回答你的問題。 歡迎隨時在 [Nethermind GitHub 儲存庫](https://github.com/NethermindEth/nethermind) 上提交拉取請求 (PR) 或提出任何議題。 -## 其他彙總列表 {#other-aggregated-lists} +## 其他彙總清單 {#other-aggregated-lists} -[官方 Nethereum 網站](https://nethereum.com/) -[官方 Nethermind 網站](https://nethermind.io/) +[Nethereum 官方網站](https://nethereum.com/) +[Nethermind 官方網站](https://nethermind.io/) diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/elixir/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/elixir/index.md index cbc77daa67a..dd2196ec1cc 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/elixir/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/elixir/index.md @@ -1,6 +1,6 @@ --- -title: Elixir 開發者適用的以太坊資源 -description: 學習如何使用基於 Elixir 的專案和工具進行以太坊開發。 +title: "Elixir 開發者適用的以太坊資源" +description: "學習如何使用基於 Elixir 的專案和工具進行以太坊開發。" lang: zh-tw incomplete: false --- diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/golang/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/golang/index.md index 3d1e93821db..08344c1d4c2 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/golang/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/golang/index.md @@ -1,84 +1,84 @@ --- -title: Go 開發者適用的 Ethereum 資源 -description: 學習如何使用 Go 型專案和工具進行以太坊開發 +title: "Go 開發者適用的以太坊資源" +description: "學習如何使用 Go 型專案和工具進行以太坊開發" lang: zh-tw incomplete: true --- -學習如何使用 Go 型專案和工具進行以太坊開發 +學習如何使用基於 Go 的專案和工具進行以太坊開發 -使用以太坊建立去中心化應用程式(或稱「dapp」)。 這些去中心化應用程式一旦部署到 Ethereum 後,就會持續地按照其設計的方式執行,進而成為非常可信的工具, 這些應用程式是去中心化的,意味著它們在點對點網路上運行,並且不存在單點故障。 這些應用程式不會被單一實體或個人控制,並且幾乎不可能對其進行審查。 它們可以控制數位資產以建立新型應用程式。 +使用以太坊建立去中心化應用程式(或稱「dapp」)。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式是去中心化的,意味著它們在點對點網路上運行,並且不存在單點故障。 這些應用程式不會被單一實體或個人控制,並且幾乎不可能對其進行審查。 它們可以控制數位資產以建立新型應用程式。 -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} **邁出第一步,整合 Go 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) - [合約教學](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial) -## 初學者文章和書籍 {#beginner-articles-and-books} +## 初學者文章與書籍 {#beginner-articles-and-books} - [Geth 入門](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458) -- [使用 Golang 連結至以太坊](https://www.youtube.com/watch?v=-7uChuO_VzM) -- [使用 Golang 部署以太坊智慧型合約](https://www.youtube.com/watch?v=pytGqQmDslE) -- [使用 Go 測試和部署以太坊智慧型合約的逐步指南](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78) -- [電子書:使用 Go 開發以太坊](https://goethereumbook.org/) - _使用 Go 開發以太坊應用程式_ +- [使用 Golang 連接到以太坊](https://www.youtube.com/watch?v=-7uChuO_VzM) +- [使用 Golang 部署以太坊智能合約](https://www.youtube.com/watch?v=pytGqQmDslE) +- [在 Go 中測試和部署以太坊智能合約的逐步指南](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78) +- [電子書:用 Go 開發以太坊](https://goethereumbook.org/) - _用 Go 開發以太坊應用程式_ -## 中階文章和文件 {#intermediate-articles-and-docs} +## 中階文章與文件 {#intermediate-articles-and-docs} -- [Go 以太坊相關文件](https://geth.ethereum.org/docs/) - _官方以太坊 Golang 相關文件_ -- [Erigon 程式設計者指南](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _圖文指南包括狀態樹、多重證明和交易處理_ +- [Go 以太坊文件](https://geth.ethereum.org/docs/) - _官方以太坊 Golang 的文件_ +- [Erigon 程式設計師指南](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _包含狀態樹、多重證明和交易處理的圖解指南_ - [Erigon 和無狀態以太坊](https://youtu.be/3-Mn7OckSus?t=394) - _2020 年以太坊社群會議 (EthCC 3)_ -- [Erigon:最佳化以太坊用戶端](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 年開發者大會 4 _ -- [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) -- [在 Go 上使用 Geth 建立去中心化應用程式](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) -- [透過 Golang 和 Geth 使用以太坊專用網路](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) -- [使用 Go 對以太坊上的 Solidity 合約進行單元測試](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) -- [使用 Geth 作為程式庫的快速參考](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) +- [Erigon:最佳化以太坊用戶端](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_ +- [Go 以太坊 GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) +- [使用 Geth 在 Go 中建立去中心化應用程式](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) +- [使用 Golang 和 Geth 在以太坊私有網路上作業](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) +- [在 Go 中對以太坊上的 Solidity 合約進行單元測試](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) +- [將 Geth 當作函式庫使用的快速參考](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) ## 進階使用模式 {#advanced-use-patterns} - [GETH 模擬後端](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top) - [使用以太坊和 Quorum 的區塊鏈即服務應用程式](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) -- [以太坊區塊鏈應用程式中的分佈式存儲星際檔案系統和 Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) -- [行動用戶端:程式庫和 Inproc 以太坊節點](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) +- [以太坊區塊鏈應用程式中的分散式儲存 IPFS 和 Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) +- [行動用戶端:函式庫與 Inproc 以太坊節點](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) - [原生去中心化應用程式:以太坊合約的 Go 繫結](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) -## Go 專案和工具 {#go-projects-and-tools} +## Go 專案與工具 {#go-projects-and-tools} -- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _以太坊協定的官方 Go 實作_ -- [Go Ethereum 程式碼分析](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _審查和分析 Go Ethereum 原始程式碼_ -- [Erigon](https://github.com/ledgerwatch/erigon) - _Go 以太坊的更快衍生品,專注於歸檔節點_ -- [Golem](https://github.com/golemfactory/golem) - _Golem 正在建立一個算力全球市場_ +- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _以太坊協議的官方 Go 實作_ +- [Go 以太坊程式碼分析](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go 以太坊原始碼的審查與分析_ +- [Erigon](https://github.com/ledgerwatch/erigon) - _Go 以太坊的更快衍生版本,著重於歸檔節點_ +- [Golem](https://github.com/golemfactory/golem) - _Golem 正在建立一個全球算力市場_ - [Quorum](https://github.com/jpmorganchase/quorum) - _支援資料隱私的許可制以太坊實作_ - [Prysm](https://github.com/prysmaticlabs/prysm) - _以太坊「Serenity」2.0 Go 實作_ -- [Eth Tweet](https://github.com/kyokan/plasma) - _去中心化 Twitter:在以太坊區塊鏈上執行的微型部落格服務_ -- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _Golang 實作以及最小可行性 Plasma 規範的擴展_ -- [Open Ethereum Mining Pool](https://github.com/sammy007/open-ethereum-pool) - _以太坊開源礦池_ -- [Ethereum HD Wallet](https://github.com/miguelmota/go-ethereum-hdwallet) - _使用 Go 的 Ethereum 硬體錢包衍生品_ -- [Multi Geth](https://github.com/multi-geth/multi-geth) - _支援多種以太坊網路_ -- [Geth Light Client](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _輕量級以太坊子協定的 Geth 實作_ -- [以太坊 Golang 軟體開發套件](https://github.com/everFinance/goether) - _使用 Golang 的簡單以太坊錢包實作和公用程式_ -- [Covalent Golang 軟體開發套件](https://github.com/covalenthq/covalent-api-sdk-go) - _透過 Go 軟體開發套件高效率存取 200 多個區塊鏈的資料_ +- [Eth Tweet](https://github.com/yep/eth-tweet) - _去中心化 Twitter:在以太坊區塊鏈上執行的微部落格服務_ +- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _最小可行性 Plasma 規範的 Golang 實作和擴充_ +- [開源以太坊礦池](https://github.com/sammy007/open-ethereum-pool) - _一個開源的以太坊礦池_ +- [以太坊 HD 錢包](https://github.com/miguelmota/go-ethereum-hdwallet) - _Go 中的以太坊 HD 錢包派生_ +- [Multi Geth](https://github.com/multi-geth/multi-geth) - _支援多種類型的以太坊網路_ +- [Geth 輕用戶端](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _輕量以太坊子協定的 Geth 實作_ +- [以太坊 Golang SDK](https://github.com/everFinance/goether) - _使用 Golang 的簡易以太坊錢包實作與公用程式_ +- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _透過 Go SDK 高效率地存取 200 多個區塊鏈的資料_ -想取得更多資源? 請查看 [ethereum.org/developers](/developers/) +想取得更多資源? 查看 [ethereum.org/developers](/developers/) ## Go 社群貢獻者 {#go-community-contributors} - [Geth Discord](https://discordapp.com/invite/nthXNEv) -- [Geth Gist](https://gitter.im/ethereum/go-ethereum) -- [Gophers Slack](https://invite.slack.golangbridge.org/) - [#以太坊頻道](https://gophers.slack.com/messages/C9HP1S9V2) +- [Geth Gitter](https://gitter.im/ethereum/go-ethereum) +- [Gophers Slack](https://invite.slack.golangbridge.org/) - [#ethereum 頻道](https://gophers.slack.com/messages/C9HP1S9V2) - [StackExchange - 以太坊](https://ethereum.stackexchange.com/) - [Multi Geth Gitter](https://gitter.im/ethoxy/multi-geth) -- [Ethereum Gitter](https://gitter.im/ethereum/home) -- [Geth light Client Gitter](https://gitter.im/ethereum/light-client) +- [以太坊 Gitter](https://gitter.im/ethereum/home) +- [Geth 輕用戶端 Gitter](https://gitter.im/ethereum/light-client) -## 其他彙總列表 {#other-aggregated-lists} +## 其他彙總清單 {#other-aggregated-lists} -- [Awesome Ethereum](https://github.com/btomashvili/awesome-ethereum) -- [Consensys:以太坊開發者工具的最終清單](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub 來源](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [Awesome 以太坊](https://github.com/btomashvili/awesome-ethereum) +- [Consensys:以太坊開發者工具權威清單](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub 原始碼](https://github.com/ConsenSys/ethereum-developer-tools-list) diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/index.md index 7898868e490..cb65cd63414 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/index.md @@ -1,30 +1,33 @@ --- -title: 程式語言 -description: +title: "程式語言" +description: "探索適用於各種程式設計語言 (包括 JavaScript、Python、Go、Rust 等) 的以太坊開發資源。" lang: zh-tw --- -常見的誤解是,開發者必須編寫[智慧型合約](/developers/docs/smart-contracts/)才能在以太坊上構建。 這是錯誤的。 以太坊網路和社群的優點之一是幾乎可以使用任何程式設計語言[參與](/community/)其中。 +一個常見的誤解是,開發人員必須撰寫 [智慧型合約](/developers/docs/smart-contracts/) 才能在以太坊上建置。 這是錯誤的。 +以太坊網路和社群的美妙之處在於,您幾乎可以用任何程式設計語言 [參與](/community/) 其中。 以太坊及其社群推崇開放原始碼。 你能找到各種語言的社群專案:用戶端實作、應用程式介面、開發架構、測試工具。 -## 選擇你的語言 {#data} +## 選擇您的語言 {#data} 選擇你的程式設計語言以尋找專案、資源和虛擬社群: -- [Dart開發者適用的 Ethereum 資源](/developers/docs/programming-languages/dart/) -- [Delphi 開發者適用的Ethereum 資源](/developers/docs/programming-languages/delphi/) -- [.NET 開發者適用的 Ethereum 資源](/developers/docs/programming-languages/dot-net/) -- [Elixir 開發者適用的以太坊資源](/developers/docs/programming-languages/elixir/) -- [Go 開發者適用的以太坊資源](/developers/docs/programming-languages/golang/) -- [Java 開發者適用的 Ethereum 資源](/developers/docs/programming-languages/java/) -- [JavaScript 開發者適用的 Ethereum 資源](/developers/docs/programming-languages/javascript/) -- [Python 開發者適用的以太坊資源](/developers/docs/programming-languages/python/) -- [Ruby 開發者適用的以太坊資源](/developers/docs/programming-languages/ruby/) -- [Rust 開發者適用的 Ethereum 資源](/developers/docs/programming-languages/rust/) +- [給 Dart 開發人員的以太坊](/developers/docs/programming-languages/dart/) +- [給 Delphi 開發人員的以太坊](/developers/docs/programming-languages/delphi/) +- [給 .NET 開發人員的以太坊](/developers/docs/programming-languages/dot-net/) +- [給 Elixir 開發人員的以太坊](/developers/docs/programming-languages/elixir/) +- [給 Go 開發人員的以太坊](/developers/docs/programming-languages/golang/) +- [給 Java 開發人員的以太坊](/developers/docs/programming-languages/java/) +- [給 JavaScript 開發人員的以太坊](/developers/docs/programming-languages/javascript/) +- [給 Python 開發人員的以太坊](/developers/docs/programming-languages/python/) +- [給 Ruby 開發人員的以太坊](/developers/docs/programming-languages/ruby/) +- [給 Rust 開發人員的以太坊](/developers/docs/programming-languages/rust/) -### 如果我的語言不受支援,該怎麼辦 {#other-lang} +### 如果您的語言不受支援,該怎麼辦 {#other-lang} -如果想連結到資源或指向其他程式設計語言的虛擬社區,可以透過[建立一個議題](https://github.com/ethereum/ethereum-org-website/issues/new/choose)來請求新頁面。 +如果您想連結到資源或指向其他程式設計語言的虛擬社群,可以透過 [開設一個議題](https://github.com/ethereum/ethereum-org-website/issues/new/choose) 來請求新增頁面。 -如果只是想使用目前不支援的語言編寫程式碼來連結區塊鏈, 可以使用 [JSON-RPC 介面](/developers/docs/apis/json-rpc/)連結到以太坊網路。 任何可以 使用 TCP/IP 的程式設計語言都可以使用該介面。 +如果您只想用目前不支援的語言編寫程式碼來連接區塊鏈, +您可以使用 [JSON-RPC 介面](/developers/docs/apis/json-rpc/) 連接到以太坊網路。 任何可以 +使用 TCP/IP 的程式設計語言都可以使用該介面。 diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/java/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/java/index.md index ad26995e640..3bc2e2d1156 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/java/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/java/index.md @@ -1,61 +1,62 @@ --- -title: Java 開發者適用的以太坊資源 -description: 學習如何使用 Java 型專案和工具進行以太坊開發 +title: "Java 開發者適用的以太坊資源" +description: "學習如何使用 Java 型專案和工具進行以太坊開發" lang: zh-tw incomplete: true --- -學習如何使用 Java 型專案和工具進行以太坊開發 +學習如何使用基於 Java 的專案和工具進行以太坊開發 使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式可以控制數位資產,以便建立新型金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} **邁出第一步,整合 Java 與以太坊** -需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers.](/developers/) -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [瞭解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編譯和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## 使用以太坊用戶端 {#working-with-ethereum-clients} -學習如何使用兩種先進的 Java 以太坊用戶端 [Web3J](https://github.com/web3j/web3j) 和 Hyperledger Besu +學習如何使用 [Web3J](https://github.com/web3j/web3j) 和 Hyperledger Besu,這兩個領先的 Java 以太坊用戶端 -- [使用 Java 、Eclipse 和 Web3J 連線以太坊用戶端](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j) +- [使用 Java、Eclipse 和 Web3J 連接到以太坊用戶端](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j) - [使用 Java 和 Web3j 管理以太坊帳戶](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j) -- [從智慧型合約產生 Java 包裝函式](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract) -- [與以太坊智慧型合約互動](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java) -- [偵聽以太坊智慧型合約事件](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java) -- [使用 Linux 下的 Java 以太坊用戶端 Besu (Pantheon)](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux) -- [在 Java 整合測試中執行 Hyperledger Besu (Pantheon) 節點](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests) -- [Web3j 速查表](https://kauri.io/web3j-cheat-sheet-(java-ethereum)/5dfa1ea941ac3d0001ce1d90/c) - -學習如何使用非同步高效能 Kotlin 程式庫 [ethers-kt](https://github.com/Kr1ptal/ethers-kt),用來與基於以太坊虛擬機的區塊鏈互動。 針對 JVM 和 Android 平台。 -- [傳送 ERC20 代幣](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt) -- [通過偵聽事件實現 UniswapV2 兌換](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt) -- [以太幣 / ERC20 餘額追蹤器](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt) +- [從你的智能合約產生 Java 包裝函式](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract) +- [與以太坊智能合約互動](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java) +- [監聽以太坊智能合約事件](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java) +- [在 Linux 上使用 Besu (Pantheon),Java 以太坊用戶端](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux) +- [在 Java 整合測試中運行 Hyperledger Besu (Pantheon) 節點](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests) +- [Web3j 速查表](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c) + +學習如何使用 [ethers-kt](https://github.com/Kr1ptal/ethers-kt),一個用於與基於以太坊虛擬機的區塊鏈互動的非同步、高效能 Kotlin 程式庫。 針對 JVM 和 Android 平台。 + +- [轉移 ERC20 代幣](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt) +- [帶有事件監聽功能的 UniswapV2 交換](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt) +- [ETH / ERC20 餘額追蹤器](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt) ## 中階文章 {#intermediate-articles} -- [使用星際檔案系統在 Java 應用程式中管理存儲](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) +- [使用 IPFS 在 Java 應用程式中管理存儲](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) - [使用 Web3j 在 Java 中管理 ERC20 代幣](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j) -- [Web3j 交易管理程式](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers) +- [Web3j 交易管理器](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers) ## 進階使用模式 {#advanced-use-patterns} -- [使用 Eventeum 建置 Java 智慧型合約資料快取](使用 Eventeum 構建Java 智慧型合約數據緩存) +- [使用 Eventeum 建立 Java 智能合約資料快取](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache) ## Java 專案和工具 {#java-projects-and-tools} -- [Web3J(用來與以太坊用戶端互動的程式庫)](https://github.com/web3j/web3j) -- [ethers-kt(適用於基於以太坊虛擬機的區塊鏈的非同步、高效能 Kotlin/Java/Android 程式庫。)](https://github.com/Kr1ptal/ethers-kt) -- [Eventeum(事件偵聽程式)](https://github.com/ConsenSys/eventeum) -- [Mahuta(星際檔案系統開發者工具)](https://github.com/ConsenSys/mahuta) +- [Web3J (與以太坊用戶端互動的程式庫)](https://github.com/web3j/web3j) +- [ethers-kt (適用於基於以太坊虛擬機的區塊鏈的非同步、高效能 Kotlin/Java/Android 程式庫。)](https://github.com/Kr1ptal/ethers-kt) +- [Eventeum (事件監聽器)](https://github.com/ConsenSys/eventeum) +- [Mahuta (IPFS 開發工具)](https://github.com/ConsenSys/mahuta) -想取得更多資源? 請參考 [ethereum.org/developers。](/developers/) +想取得更多資源? 請參閱 [ethereum.org/developers.](/developers/) ## Java 社群貢獻者 {#java-community-contributors} diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/javascript/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/javascript/index.md index efaac18d40a..380957d4c07 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/javascript/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/javascript/index.md @@ -1,62 +1,61 @@ --- -title: JavaScript 開發者適用的以太坊資源 -description: 學習如何使用 JavaScript 型專案和工具進行以太坊開發。 +title: "JavaScript 開發者適用的以太坊資源" +description: "學習如何使用 JavaScript 型專案和工具進行以太坊開發。" lang: zh-tw --- -JavaScript 是以太坊生態系統中最常用的語言之一。 事實上,有[團隊](https://github.com/ethereumjs)致力於將盡可能多的以太坊內容引入 JavaScript。 +JavaScript 是以太坊生態系統中最常用的語言之一。 事實上,有個[團隊](https://github.com/ethereumjs)致力於將盡可能多的以太坊內容引入 JavaScript。 有機會在[堆疊的所有層級](/developers/docs/ethereum-stack/)編寫 JavaScript(或類似內容)。 ## 與以太坊互動 {#interact-with-ethereum} -### Javascript 應用程式介面程式庫 {#javascript-api-libraries} +### JavaScript API 函式庫 {#javascript-api-libraries} -如果想編寫 JavaScript 來查詢區塊鏈、傳送交易等,最方便的方法是使用 [JavaScript 應用程式介面程式庫](/developers/docs/apis/javascript/)。 這些應用程式介面讓開發者能夠輕鬆與[以太坊網路中的節點](/developers/docs/nodes-and-clients/)進行互動。 +如果您想編寫 JavaScript 來查詢區塊鏈、傳送交易等,最方便的方法是使用 [JavaScript API 函式庫](/developers/docs/apis/javascript/)。 這些 API 可讓開發人員輕鬆與[以太坊網路中的節點](/developers/docs/nodes-and-clients/)互動。 你可以使用這些程式庫與以太坊上的智慧型合約進行互動,因此可以構建一個去中心化應用程式,在此去中心化應用程式中,你只需使用 JavaScript 就能夠與預先存在的合約進行互動。 **查看** -- [Web3.js](https://web3js.readthedocs.io/) -- [Ethers.js](https://docs.ethers.io/) _– 包含 JavaScript 和 TypeScript 的以太坊錢包實作和公用程式。_ -- [viem](https://viem.sh) – 以太坊的 TypeScript 介面,提供用於與以太坊互動的低階無狀態基元。 +- [Web3.js](https://web3js.readthedocs.io) +- [Ethers.js](https://ethers.org) – _包含 JavaScript 和 TypeScript 的以太坊錢包實作和公用程式。_ +- [viem](https://viem.sh) – _一個適用於以太坊的 TypeScript 介面,提供用於與以太坊互動的低階無狀態基元。_ +- [Drift](https://ryangoree.github.io/drift/) – _一個 TypeScript 元函式庫,內建快取、掛鉤和測試模擬,可跨 web3 函式庫輕鬆進行以太坊開發。_ -### 智慧型合約 {#smart-contracts} +### 智能合約 {#smart-contracts} -如果你是 JavaScript 開發者,並打算編寫自己的智慧型合約,那你會想瞭解 [Solidity](https://solidity.readthedocs.io)。 這是最常用的智慧型合約語言,它在語法上與 JavaScript 類似,因而可能更容易學習。 +如果您是 JavaScript 開發人員,且想撰寫自己的智慧型合約,您可能會想熟悉 [Solidity](https://solidity.readthedocs.io)。 這是最常用的智慧型合約語言,它在語法上與 JavaScript 類似,因而可能更容易學習。 -更多[智慧型合約](/developers/docs/smart-contracts/)相關資訊。 +更多關於[智慧型合約](/developers/docs/smart-contracts/)的資訊。 -## 理解協定 {#understand-the-protocol} +## 了解協議 {#understand-the-protocol} ### 以太坊虛擬機 {#the-ethereum-virtual-machine} -[以太坊虛擬機](/developers/docs/evm/)有 JavaScript 實作。 該虛擬機支援最新的分叉規則。 分叉規則是指由於計劃的升級而對以太坊虛擬機所做的變更。 +已有 [以太坊虛擬機](/developers/docs/evm/) 的 JavaScript 實作。 該虛擬機支援最新的分叉規則。 分叉規則是指由於計劃的升級而對以太坊虛擬機所做的變更。 分叉規則分為各種 JavaScript 包,可以查看這些包取得更深入的理解: - 帳戶 - 區塊 - 區塊鏈本身 -- 交易紀錄 +- 交易 - 和更多相關內容... 這將幫助你理解「帳戶的資料結構是什麼?」等問題。 如果你喜歡閱讀程式碼,此 JavaScript 可能是閱讀我們文件的絕佳替代方案。 -**請查看 monorepo** -[`ethereumjs`](https://github.com/ethereumjs/ethereumjs-vm) +**查看 EVM** +[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm) -### 節點和客戶 {#nodes-and-clients} +### 節點與用戶端 {#nodes-and-clients} 目前正在開發的 Ethereum.js 讓你能夠深入瞭解以太坊用戶端如何用你理解的語言 JavaScript 運作! -它曾經托管於獨立的[`儲存庫`](https://github.com/ethereumjs/ethereumjs-client)中,但後來作為一個包被併入 EthereumVM monorepo 中。 - -**請查看用戶端** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) +**查看用戶端** +[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) ## 其他專案 {#other-projects} @@ -64,10 +63,10 @@ JavaScript 是以太坊生態系統中最常用的語言之一。 事實上, - 錢包公用程式程式庫。 - 用於產生匯入和匯出以太坊金鑰的工具。 -- `merkle-patricia-tree` 的實作 – 以太坊黃皮書中概述的資料結構。 +- `merkle-patricia-tree` 的實作 – 一種以太坊黃皮書中所概述的資料結構。 -在 [EthereumJS repo](https://github.com/ethereumjs) 深入瞭解你感興趣的任何內容 +前往 [EthereumJS repo](https://github.com/ethereumjs) 深入探索您最感興趣的內容。 -## 了解更多 {#further-reading} +## 延伸閱讀 {#further-reading} -_知道對你有幫助的社群資源嗎? 請編輯此頁面並新增資源!_ +_知道一個曾經幫助你學習更多社區或社團資源? 歡迎在本頁自由編輯或添加內容!_ diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/python/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/python/index.md index fc8b819c749..9a0347dfe7c 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/python/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/python/index.md @@ -1,72 +1,81 @@ --- -title: Python 開發者適用的以太坊資源 -description: 學習如何使用 Python 型專案和工具進行以太坊開發 +title: "Python 開發者適用的以太坊資源" +description: "學習如何使用 Python 型專案和工具進行以太坊開發" lang: zh-tw incomplete: true --- -學習如何使用 Python 型專案和工具進行以太坊開發 +學習如何使用基於 Python 的專案和工具進行以太坊開發 -使用 Ethereum 建立去中心化應用程式 (或稱「dapp」),發揮加密貨幣學和區塊鏈技術的優勢。 這些去中心化應用程式一旦部署到 Ethereum 後,就會持續地按照其設計的方式執行,進而成為非常可信的工具, 這些應用程序可以控制數字資產,以便創造新的金融應用; 這些應用程式是去中心化的,表示任何單一的實體或個人都不能加以控制,也幾乎不可能被審查。 +使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式可以控制數位資產,以便建立新型金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} **邁出第一步,整合 Python 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [2023 年 Python 在區塊鏈領域的現狀報告](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) ## 初學者文章 {#beginner-articles} +- [web3.py 概覽](https://web3py.readthedocs.io/en/latest/overview.html) +- [以太坊 Python 生態系統導覽](https://snakecharmers.ethereum.org/python-ecosystem/) - [以太坊 (Python) 開發者指南](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) -- [2023 年報告 Python 在區塊鏈中的狀態](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) -- [使用 Vyper 的智慧型合約簡介](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) -- [使用 Pyhthon 及 Brownie 來部署你自己的 ERC20 代幣](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) -- [如何使用 Python Flask 開發 Ethereum 合約?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) -- [Web3.py 簡介 · Python 開發者適用的 Ethereum 資源](https://www.dappuniversity.com/articles/web3-py-intro) -- [如何使用 Python 和 web3.py 叫用智慧型合約函數?](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) +- [值得獲獎:以太坊 Python 黑客松指南](https://snakecharmers.ethereum.org/prize-worthy/) +- [Vyper 智能合約簡介](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) +- [如何使用 Python Flask 開發以太坊合約?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) +- [Web3.py 簡介 · 獻給 Python 開發者的以太坊](https://www.dappuniversity.com/articles/web3-py-intro) +- [如何使用 Python 和 web3.py 呼叫智能合約函式](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) ## 中階文章 {#intermediate-articles} -- [適用 Python 程式設計者的去中心化應用程式開發](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) +- [web3.py 的夥伴們:Ape 簡介](https://snakecharmers.ethereum.org/intro-to-ape/) +- [獻給 Python 程式設計師的去中心化應用程式開發](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) - [建立 Python 以太坊介面:第 1 部分](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) -- [使用 Python 編寫的以太坊智慧型合約:完整(不確定)指南](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) -- [使用 Brownie 和 Python 部屬智慧型合約](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) -- [使用 Brownie 於 OpenSea 建立非同質化代幣](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) +- [Python 中的以太坊智能合約:一份(相當)全面的指南](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) ## 進階使用模式 {#advanced-use-patterns} -- [使用 Python 編譯、部署和呼叫以太坊智慧型合約](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) -- [使用 Slither 分析 Solidity 智慧型合約](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) -- [區塊鏈金融科技教學:使用 Python 實作借貸](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) +- [web3.py 模式:即時事件訂閱](https://snakecharmers.ethereum.org/subscriptions/) +- [web3.py 模式:WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/) +- [使用 Python 編譯、部署和呼叫以太坊智能合約](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) +- [使用 Slither 分析 Solidity 智能合約](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) +- [區塊鏈金融科技教學:使用 Python 進行借貸](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) + +## 封存的文章 + +- [使用 Python 和 Brownie 部署您自己的 ERC20 代幣](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) +- [使用 Brownie 和 Python 部署智能合約](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) +- [使用 Brownie 在 OpenSea 上建立 NFT](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) ## Python 專案和工具 {#python-projects-and-tools} ### 使用中: {#active} -- [Web3.py](https://github.com/ethereum/web3.py) - _用於與以太坊互動的 Python 程式庫_ -- [Vyper](https://github.com/ethereum/vyper/) - _用於以太坊虛擬機的 Python 智慧型合約語言_ -- [Ape](https://github.com/ApeWorX/ape) - _ Python 程式人員、資料科學家和安全性專業人員適用的智慧合約開發工具_ -- [py-evm](https://github.com/ethereum/py-evm) - _以太坊虛擬機實作_ -- [eth-tester](https://github.com/ethereum/eth-tester) - _基於以太坊的應用程式的測試工具_ -- [eth-utils](https://github.com/ethereum/eth-utils/) - _使用 Ethereum 相關程式碼庫的公用程式函數_ +- [Web3.py](https://github.com/ethereum/web3.py) - _與以太坊互動的 Python 程式庫_ +- [Vyper](https://github.com/ethereum/vyper/) - _EVM 的 Python 風格智能合約語言_ +- [Ape](https://github.com/ApeWorX/ape) - _專為 Python 愛好者、資料科學家和安全專家設計的智能合約開發工具_ +- [py-evm](https://github.com/ethereum/py-evm) - _以太坊虛擬機的實作_ +- [eth-tester](https://github.com/ethereum/eth-tester) - _用於測試基於以太坊的應用程式的工具_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _用於處理以太坊相關程式碼庫的公用程式函式_ - [py-solc-x](https://pypi.org/project/py-solc-x/) - _適用於 solc solidity 編譯器(支援 0.5.x)的 Python 包裝函式_ -- [pymaker](https://github.com/makerdao/pymaker) - _用於 Maker 合約的 Python 應用程式介面_ -- [siwe](https://github.com/signinwithethereum/siwe-py) - _用於 Python 的以太坊 (siwe) 登入_ -- [用於以太坊整合的 Web3 去中心化金融](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _一個預先整合 ERC-20、Uniswap 和其他受歡迎專案的 Python 包_ -- [Wake](https://getwake.io) - _用於合約測試、初略模糊、部署、漏洞掃描和程式碼導航的一體化 Python 框架(語言伺服器 - [Solidity 工具](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ +- [pymaker](https://github.com/makerdao/pymaker) - _Maker 合約的 Python API_ +- [siwe](https://github.com/signinwithethereum/siwe-py) - _適用於 Python 的使用以太坊登入 (siwe)_ +- [用於以太坊整合的 Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _一個預先整合 ERC-20、Uniswap 和其他熱門專案的 Python 套件_ +- [Wake](https://getwake.io) - _多合一 Python 框架,用於合約測試、模糊測試、部署、漏洞掃描和程式碼導覽(語言伺服器 - [Solidity 工具](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ -### 已歸檔/不再維護: {#archived--no-longer-maintained} +### 已封存 / 不再維護: {#archived--no-longer-maintained} - [Trinity](https://github.com/ethereum/trinity) - _以太坊 Python 用戶端_ -- [Mamba](https://github.com/arjunaskykok/mamba) - _用於編寫、編譯和部署使用 Vyper 語言編寫的智慧型合約的架構_ -- [Brownie](https://github.com/eth-brownie/brownie) - _用於部署、測試和與以太坊智慧型合約互動的 Python 框架_ -- [pydevp2p](https://github.com/ethereum/pydevp2p) - _以太坊點對點堆疊的實作_ -- [py-wasm](https://github.com/ethereum/py-wasm) - _網路組件解釋器 Python 實作_ +- [Mamba](https://github.com/arjunaskykok/mamba) - _用於編寫、編譯和部署以 Vyper 語言編寫的智能合約的框架_ +- [Brownie](https://github.com/eth-brownie/brownie) - _用於部署、測試和與以太坊智能合約互動的 Python 框架_ +- [pydevp2p](https://github.com/ethereum/pydevp2p) - _以太坊 P2P 堆疊的實作_ +- [py-wasm](https://github.com/ethereum/py-wasm) - _WebAssembly 解譯器的 Python 實作_ 想取得更多資源? 請查看 [ethereum.org/developers](/developers/)。 @@ -74,17 +83,17 @@ incomplete: true 以下基於以太坊的專案使用本頁提到的工具。 相關的開放原始碼儲存庫可以作為範例程式碼的良好參考和最佳做法。 -- [Yearn Finance](https://yearn.finance/) 及 [Yearn Vault 合約儲存庫](https://github.com/yearn/yearn-vaults) -- [Curve](https://curve.fi/) 及 [Curve 智慧型合約儲存庫](https://github.com/curvefi/curve-contract) -- [BadgerDAO](https://badger.com/) 及 [使用 Brownie 工具鏈的智慧型合約](https://github.com/Badger-Finance/badger-system) -- [Sushi](https://sushi.com/) 使用 [Python 管理和部署其歸屬合約](https://github.com/sushiswap/sushi-vesting-protocols) -- [ Alpha Finance](https://alphafinance.io/) 以 Alpha Homora 聞名,使用 [Brownie 測試和部署智慧型合約](https://github.com/AlphaFinanceLab/alpha-staking-contract) +- [Yearn Finance](https://yearn.finance/) 與 [Yearn Vault 合約儲存庫](https://github.com/yearn/yearn-vaults) +- [Curve](https://www.curve.finance/) 與 [Curve 智能合約儲存庫](https://github.com/curvefi/curve-contract) +- [BadgerDAO](https://badger.com/) 與 [使用 Brownie 工具鏈的智能合約](https://github.com/Badger-Finance/badger-system) +- [Sushi](https://sushi.com/) 使用 [Python 來管理和部署其歸屬合約](https://github.com/sushiswap/sushi-vesting-protocols) +- 以 Alpha Homora 聞名的 [Alpha Finance](https://alphafinance.io/) 使用 [Brownie 來測試和部署智能合約](https://github.com/AlphaFinanceLab/alpha-staking-contract) ## Python 社群討論 {#python-community-contributors} -- [以太坊 Python 社群 Discord](https://discord.gg/9zk7snTfWe),可討論 Web3.py 與其他 Python 架構 -- [Vyper Discord](https://discord.gg/SdvKC79cJk) ,可討論 Vyper 智慧型合約程式設計語言 +- [以太坊 Python 社群 Discord](https://discord.gg/9zk7snTfWe),可討論 Web3.py 和其他 Python 框架 +- [Vyper Discord](https://discord.gg/SdvKC79cJk),可討論 Vyper 智能合約程式設計 ## 其他彙總清單 {#other-aggregated-lists} -Vyper 維基百科提供[完善的 Vyper 資源清單](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file +Vyper wiki 有一份 [Vyper 的絕佳資源清單](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/ruby/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/ruby/index.md index 76702f11a09..92d1ae4fc1a 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/ruby/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/ruby/index.md @@ -1,60 +1,60 @@ --- -title: Ruby 開發者適用的以太坊資源 -description: 學習使用 Ruby 型專案和工具進行以太坊開發。 +title: "Ruby 開發者適用的以太坊資源" +description: "學習使用 Ruby 型專案和工具進行以太坊開發。" lang: zh-tw incomplete: false --- -學習使用 Ruby 型專案和工具進行以太坊開發。 +學習如何使用基於 Ruby 的專案和工具進行以太坊開發。 -使用 Ethereum 建立去中心化應用程式 (或稱「dapp」),發揮加密貨幣學和區塊鏈技術的優勢。 這些去中心化應用程式是無需信任的,這意味著一旦部署到以太坊後,就會始終按程式執行。 它們可以控制數位資產來建立新型的金融應用程式。 這些應用程式是去中心化的,表示任何單一的實體或個人都不能加以控制,也幾乎不可能被審查。 +使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是無需信任的,這意味著一旦部署到以太坊後,就會始終按程式執行。 它們可以控制數位資產來建立新型的金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 -## 來開始學習智慧型合約及Solidity語言 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} **邁出第一步,整合 Ruby 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## 初學者文章 {#beginner-articles} -- [終於理解以太坊帳戶](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) -- [使用 MetaMask 最終驗證 Rails 使用者](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj) +- [徹底理解以太坊帳戶](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) +- [總算能使用 MetaMask 驗證 Rails 使用者](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj) - [如何使用 Ruby 連接到以太坊網路](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby) -- [如何使用 Ruby 產生新的以太坊地址](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) +- [如何在 Ruby 中生成新的以太坊地址](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) ## 中階文章 {#intermediate-articles} -- [使用 Ruby 編寫的區塊鏈應用程式](https://www.nopio.com/blog/blockchain-app-ruby/) -- [使用 Ruby 連接到以太坊來執行智慧型合約](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9) +- [使用 Ruby 的區塊鏈應用程式](https://www.nopio.com/blog/blockchain-app-ruby/) +- [使用連接到以太坊的 Ruby 來執行智能合約](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9) -## Rust 專案和工具 {#ruby-projects-and-tools} +## Ruby 專案和工具 {#ruby-projects-and-tools} ### 使用中 {#active} - [eth.rb](https://github.com/q9f/eth.rb) - _Ruby 程式庫與遠端程序呼叫用戶端,用於處理以太坊帳戶、訊息以及交易_ -- [keccak.rb](https://github.com/q9f/keccak.rb) - _以太坊使用的 Keccak (SHA3) 雜湊值_ -- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _Sign-In with Ethereum的 Ruby 實作_ -- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _添加 SIWE 本地登入路由的 Rails gem_ -- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _使用 Ruby on Rails 的 SIWE 範例(含自訂控製器)_ -- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _面向 Sign In With Ethereum (SIWE) 的 OmniAuth 策略_ -- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _面向通過非同質化代幣所有權進行身份驗證的 OmniAuth 策略_ +- [keccak.rb](https://github.com/q9f/keccak.rb) - _以太坊使用的 Keccak (SHA3) 哈希_ +- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _Sign-In with Ethereum 的 Ruby 實作_ +- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _新增 SIWE 本地登入路由的 Rails 套件_ +- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _使用 Ruby on Rails 和自訂控制器的 SIWE 範例_ +- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _適用於 Sign In With Ethereum (SIWE) 的 OmniAuth 策略_ +- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _適用於透過 NFT 所有權進行驗證的 OmniAuth 策略_ - [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _Ethereum on Rails 範本,允許將 MetaMask 連結到 Ruby on Rails_ -### 已歸檔/不再維護 {#archived--no-longer-maintained} +### 已封存/不再維護 {#archived--no-longer-maintained} -- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _使用 Ruby 呼叫以太坊節點的遠端程序遠呼叫方法_ -- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _用於根據 BIP32 標準從分層確定性錢包產生以太幣地址的 Ruby 程式庫_ -- [etherlite](https://github.com/budacom/etherlite) - _Ruby on Rails 的以太坊整合_ -- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _使用 JSON-RPC 介面傳送交易、建立合約並與之互動的 Ruby 以太坊用戶端以及可使用以太坊節點的有用工具組_ -- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _實作面向 OmniAuth 的以太坊提供者策略_ +- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _使用 Ruby 呼叫以太坊節點的 RPC 方法_ +- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _用於根據 BIP32 標準從分層確定性錢包產生 ETH 地址的 Ruby 程式庫_ +- [etherlite](https://github.com/budacom/etherlite) - _適用於 Ruby on Rails 的以太坊整合_ +- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _使用 JSON-RPC 介面傳送交易、建立合約並與之互動的 Ruby 以太坊用戶端,以及可使用以太坊節點的有用工具組_ +- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _為 OmniAuth 實作以太坊提供者策略_ 想取得更多資源? 請查看[開發者首頁](/developers/)。 ## Ruby 社群貢獻者 {#ruby-community-contributors} -[以太坊 Ruby Telegram 群組](https://t.me/ruby_eth)是一個快速發展的社群,是討論上述任何專案和相關主題的專用資源。 +[Ethereum Ruby Telegram 群組](https://t.me/ruby_eth) 是一個快速成長的社群,也是專門討論上述任何專案與相關主題的資源。 diff --git a/public/content/translations/zh-tw/developers/docs/programming-languages/rust/index.md b/public/content/translations/zh-tw/developers/docs/programming-languages/rust/index.md index 46073a16dd6..36e4635ed21 100644 --- a/public/content/translations/zh-tw/developers/docs/programming-languages/rust/index.md +++ b/public/content/translations/zh-tw/developers/docs/programming-languages/rust/index.md @@ -1,59 +1,61 @@ --- -title: Rust 開發者適用的以太坊資源 -description: 學習如何使用 Rust 型專案和工具進行以太坊開發 +title: "Rust 開發者適用的以太坊資源" +description: "學習如何使用 Rust 型專案和工具進行以太坊開發" lang: zh-tw incomplete: true --- -學習如何使用 Rust 型專案和工具進行以太坊開發 +學習如何使用 Rust 專案與工具進行以太坊開發 -使用 Ethereum 建立去中心化應用程式 (或稱「dapp」),發揮加密貨幣學和區塊鏈技術的優勢。 這些去中心化應用程式一旦部署到 Ethereum 後,就會持續地按照其設計的方式執行,進而成為非常可信的工具, 這些應用程序可以控制數字資產,以便創造新的金融應用; 這些應用程式是去中心化的,表示任何單一的實體或個人都不能加以控制,也幾乎不可能被審查。 +使用以太坊建立去中心化應用程式(或稱「dapp」),發揮加密貨幣和區塊鏈技術的優勢。 這些去中心化應用程式是可信的,這意味著一旦部署到以太坊後,它們就會始終按照設定執行。 這些應用程式可以控制數位資產,以便建立新型金融應用程式。 這些應用程式是去中心化的,這意味著任何單一實體或個人都無法控制它們,並且應用程式幾乎不可能被審查。 -## 智慧型合約及 Solidity 語言入門 {#getting-started-with-smart-contracts-and-solidity} +## 智慧型合約及 Solidity 程式語言入門 {#getting-started-with-smart-contracts-and-solidity} **邁出第一步,整合 Rust 與以太坊** -需要基礎的入門指南嗎? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +需要先看看更基礎的入門指南? 請查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [區塊鏈詳解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [詳解區塊鏈](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智慧型合約](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) -- [編寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [學習如何編寫和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [撰寫你的第一個智慧型合約](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [學習如何編譯及部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## 初學者文章 {#beginner-articles} -- [Rust 以太坊用戶端](https://openethereum.github.io/) \* **請注意 OpenEthereum [已棄用](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)且不再維護。**如欲使用此用戶端,請小心謹慎,最好改用其他用戶端實作。 -- [使用 Rust 向以太坊傳送交易](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) -- [使用 Rust 為 Kovan 編寫 Wasm 合約的逐步教學](https://github.com/paritytech/pwasm-tutorial) +- [Rust 以太坊用戶端](https://openethereum.github.io/) \* **請注意,OpenEthereum [已被棄用](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) 且不再維護。** 請謹慎使用,最好改用其他用戶端實作。 +- [使用 Rust 將交易傳送到以太坊](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) +- [在 Kovan 上使用 Rust Wasm 編寫合約的逐步教學](https://github.com/paritytech/pwasm-tutorial) ## 中階文章 {#intermediate-articles} ## 進階使用模式 {#advanced-use-patterns} -- [與類 Ethereum 網路互動的 pwasm_ethereum 外部程式庫](https://github.com/openethereum/pwasm-ethereum) -- [使用 JavaScript 和 Rust 建置去中心化聊天室](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) -- [使用 Vue.js 和 Rust 建置去中心化待辦事項應用程式](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) +- [pwasm_ethereum 外部函式庫,用於與類以太坊網路互動](https://github.com/openethereum/pwasm-ethereum) -- [使用 Rust 構建區塊鏈](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) +- [使用 JavaScript 和 Rust 建立去中心化聊天室](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) -## Rust 專案和工具 {#rust-projects-and-tools} +- [使用 Vue.js 和 Rust 建立去中心化待辦事項應用程式](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) -- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _與類以太坊網路互動的外部程式庫集合_ -- [Lighthouse](https://github.com/sigp/lighthouse) - _快速以太坊共識層用戶端_ -- [ Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _對以太坊智慧型合約執行層提議的重新設計,使用了 WebAssembly 的確定性子集_ -- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS 應用程式介面參考_ -- [Solaris](https://github.com/paritytech/sol-rs) - _使用原生 Parity 用戶端以太坊虛擬機的 Solidity 智慧型合約單元測試框架。_ +- [使用 Rust 建立區塊鏈](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) + +## Rust 專案與工具 {#rust-projects-and-tools} + +- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _用於與類以太坊網路互動的外部函式集合_ +- [Lighthouse](https://github.com/sigp/lighthouse) - _快速的以太坊共識層用戶端_ +- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _對以太坊智能合約執行層提議的重新設計,使用了 WebAssembly 的確定性子集_ +- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS API 參考_ +- [Solaris](https://github.com/paritytech/sol-rs) - _使用原生 Parity 用戶端以太坊虛擬機的 Solidity 智能合約單元測試框架。_ - [SputnikVM](https://github.com/rust-blockchain/evm) - _Rust 以太坊虛擬機實作_ -- [rust-web3](https://github.com/tomusdrw/rust-web3) - _ 使用 Rust 語言的 Wavelet 智慧型合約_ +- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _使用 Rust 編寫的 Wavelet 智能合約_ - [Foundry](https://github.com/foundry-rs/foundry) - _以太坊應用程式開發工具組_ -- [Alloy](https://alloy.rs) - _高效能、經過充分測試和有記載的程式庫,用於與以太坊及其他基於以太坊虛擬機的鏈進行互動。_ -- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _以太坊程式庫和錢包實作_ -- [SewUp](https://github.com/second-state/SewUp) - _程式庫,正如普通後端開發一樣,能夠協助使用 Rust 語言構建以太坊 Webassembly 合約_ +- [Alloy](https://alloy.rs) - _用於與以太坊及其他基於 EVM 的鏈互動的高效能、經過充分測試且文件齊全的程式庫。_ +- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _以太坊程式庫與錢包實作_ +- [SewUp](https://github.com/second-state/SewUp) - _一個程式庫,可協助您使用 Rust 建構以太坊 WebAssembly 合約,就像開發一般後端一樣_ - [Substreams](https://github.com/streamingfast/substreams) - _平行化區塊鏈資料索引技術_ -- [Reth](https://github.com/paradigmxyz/reth) - Reth(Rust 以太坊的簡稱)是新的以太坊全節點實作 -- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _在以太坊生態系統中用 Rust 編寫的專案精選集合_ +- [Reth](https://github.com/paradigmxyz/reth) Reth(Rust Ethereum 的縮寫)是新的以太坊全節點實作 +- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _在以太坊生態系中以 Rust 編寫的專案精選集合_ -想取得更多資源? 請查看 [ethereum.org/developers](/developers/)。 +想取得更多資源? 請參閱 [ethereum.org/developers.](/developers/) ## Rust 社群貢獻者 {#rust-community-contributors} diff --git a/public/content/translations/zh-tw/developers/docs/scaling/index.md b/public/content/translations/zh-tw/developers/docs/scaling/index.md index 3ae8b9f0d7d..d9cefedd4bc 100644 --- a/public/content/translations/zh-tw/developers/docs/scaling/index.md +++ b/public/content/translations/zh-tw/developers/docs/scaling/index.md @@ -1,39 +1,39 @@ --- -title: 擴張 -description: 介紹以太坊社群目前正在開發的多種擴張方案。 +title: "擴容" +description: "介紹以太坊社群目前正在開發的多種擴張方案。" lang: zh-tw sidebarDepth: 3 --- -## 擴張方案概覽 {#scaling-overview} +## 擴張總覽 {#scaling-overview} 隨著以太坊使用者數量暴增,該區塊鏈已抵達一定程度的處理能力極限。 這大幅提高了使用該網路所需的費用,引發了對「擴展解決方案」的需求。 目前正在研究、試驗和實作多種解決方案,採取不同的方法實現相似的目標。 -可擴展性的主要目標是在不犧牲去中心化或安全性的情況下,提高交易速度(更快的最終性)和交易吞吐量(更高的每秒交易數)(更多資訊,請參閱[以太坊願景](/roadmap/vision/))。 在一層網路以太坊區塊鏈上,高需求導致交易速度下降和難以維繫的[燃料價格](/developers/docs/gas/)。 從速度和吞吐量方面提高網路處理能力,將成為促進以太坊廣泛運用的重要基礎。 +可擴展性的主要目標是在不犧牲去中心化或安全性的情況下提高交易速度(更快達到最終性)和交易吞吐量(每秒更高的交易量)。 在第 1 層以太坊區塊鏈上,高需求會導致交易速度變慢,[gas 價格](/developers/docs/gas/) 也高到不可行。 從速度和吞吐量方面提高網路處理能力,將成為促進以太坊廣泛運用的重要基礎。 雖然速度及吞吐量極為重要,但擴張解決方案在實現這些目標的同時保持去中心化和安全也很重要。 降低節點營運者的進入門檻,對於防止算力的中心化和非安全化演進至關重要。 -概念上,我們首先將擴張歸為兩種類型:鏈上擴張和鏈外擴張. +概念上,我們首先將擴張歸為兩種類型:鏈上擴張和鏈下擴張。 -## 基本資訊 {#prerequisites} +## 先決條件 {#prerequisites} 你需要全面了解以太坊的所有基礎概念。 擴張解決方案的實作尚未被廣泛接受,因為該技術較少歷經實戰檢驗,並且仍在研究和開發中。 -## 鏈上擴張 {#on-chain-scaling} +## 鏈上擴張 {#onchain-scaling} -鏈上擴張需要更改以太坊協定(一層網路[主網](/glossary/#mainnet))。 長期以來,區塊鏈分片被寄望於擴張以太坊。 分片涉及將區塊鏈分割成單獨的片段(分片),並由部分驗證者進行驗證。 然而,透過二層網路卷軸進行擴張已經取而代之,成爲首要的擴張技術。 為了支援這一點,我們增加了一種新的較便宜的資料形式附加到以太坊區塊,該資料專門為了降低使用者使用卷軸的成本而設計。 +鏈上擴張需要變更以太坊協定(Layer 1 [主網](/glossary/#mainnet))。 長期以來,區塊鏈分片被寄望於擴張以太坊。 分片涉及將區塊鏈分割成單獨的片段(分片),並由部分驗證者進行驗證。 然而,透過二層網路卷軸進行擴張已經取而代之,成爲首要的擴張技術。 為了支援這一點,我們增加了一種新的較便宜的資料形式附加到以太坊區塊,該資料專門為了降低使用者使用卷軸的成本而設計。 ### 分片 {#sharding} -分片是分割資料庫的過程。 部分驗證者將負責單獨的分片,而無需追蹤整個以太坊。 分片曾長期居於以太坊[開發藍圖](/roadmap/)之上,並且在合併至權益證明之前一度計劃上線。 然而,[二層網路卷軸](#layer-2-scaling)的快速發展和 [Danksharding](/roadmap/danksharding) 的發明(將卷軸資料的二進位大型物件新增至可由驗證者非常高效地進行驗證的以太坊區塊),致使以太坊社群更傾向於采用以卷軸為中心的擴張,而不是透過分片擴張。 這也會有助於使以太坊的共識邏輯更為簡單。 +分片是分割資料庫的過程。 部分驗證者將負責單獨的分片,而無需追蹤整個以太坊。 分片長久以來都是以太坊[開發藍圖](/roadmap/) 的一部分,原先打算在「合併」轉換為權益證明之前推出。 然而,[第 2 層卷軸](#layer-2-scaling) 的快速發展與 [Danksharding](/roadmap/danksharding)(將卷軸資料的 blob 新增到以太坊區塊中,讓驗證者可以極有效率地驗證)的發明,已使以太坊社群傾向採用以卷軸為中心的擴張方案,而非透過分片來擴張。 這也會有助於使以太坊的共識邏輯更為簡單。 -## 鏈外擴張 {#off-chain-scaling} +## 鏈外擴張 {#offchain-scaling} -鏈外擴張與一層網路主網分開實作 - 它們不需要變更現有的以太坊協定。 一些被稱爲「二層網路」的解決方案,直接從一層網路以太坊共識獲得安全性,例如[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/)、[零知識證明卷軸](/developers/docs/scaling/zk-rollups/)或[狀態通道](/developers/docs/scaling/state-channels/)。 其他解決方案涉及建立獨立於主網獲取安全性的各種形式的新鏈,例如[側鏈](#sidechains)、[Validium](#validium) 或 [Plasma 鏈](#plasma)。 這些解決方案與主網通訊,但以不同方式獲取其安全性以實現不同的目標。 +鏈下擴張與一層網路主網分開實作 - 它們不需要變更現有的以太坊協定。 有些解決方案,稱為「Layer 2」解決方案,其安全性直接源自 Layer 1 以太坊的共識,例如[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/)、[零知識卷軸](/developers/docs/scaling/zk-rollups/)或[狀態通道](/developers/docs/scaling/state-channels/)。 其他解決方案涉及建立各種形式的新鏈,這些鏈的安全性獨立於主網,例如[側鏈](#sidechains)、[Validium](#validium) 或 [Plasma 鏈](#plasma)。 這些解決方案與主網通訊,但以不同方式獲取其安全性以實現不同的目標。 -### 二層網路擴張 {#layer-2-scaling} +### Layer 2 擴張 {#layer-2-scaling} -此類鏈外解決方案從以太坊主網獲取安全性。 +此類鏈下解決方案從以太坊主網獲取安全性。 二層網路是一種統稱,用於描述那些旨在透過在以太坊主網(一層網路)之外處理交易,同時利用主網强大的去中心化安全模型來幫助擴張應用程式的解決方案。 當網路堵塞時,交易速度會受到影響,這會使某些類型的去中心化應用程式的用戶體驗變差。 而且隨著網路更加堵塞,交易送發者需要用高價燃料費來標取處理優先權,導致燃料費漲價。 這會讓使用以太坊非常昂貴。 @@ -48,66 +48,66 @@ sidebarDepth: 3 - 任何可擴性更新不應以損害去中心化或安全性為代價 - 二層網路建置于以太坊之上。 - 一些二層網路有特定的應用領域,在大規模處理資產時有很高的效率。 -[瞭解更多關於二層網路的資訊](/layer-2/)。 +[更多關於 Layer 2 的資訊](/layer-2/)。 #### 卷軸 {#rollups} -卷軸在一層網路之外執行交易,接著將資料發佈到一層網路並在其上達成共識。 當交易資料被包含到一層網路區塊時,這讓卷軸能夠受到原生以太坊安全性的保障。 +卷軸在一層網路之外執行交易,接著將資料發佈到一層網路並在其上達成共識。 當交易資料被包含至Layer 1區塊中, 此使卷軸能夠被以太坊原生安全系統所保障. 依不同安全模式,有兩種類型的卷軸: -- **樂觀卷軸**:假設交易在預設條件下有效,並且僅在遇到挑戰時透過[**詐欺證明**](/glossary/#fraud-proof)執行計算。 [有關樂觀卷軸的更多資訊](/developers/docs/scaling/optimistic-rollups/)。 -- **零知識卷軸**:在鏈外執行計算並提交[**有效性證明**](/glossary/#validity-proof)至鏈上。 [有關零知識卷軸的更多資訊](/developers/docs/scaling/zk-rollups/)。 +- **樂觀卷軸**:預設假設交易有效,只在有人提出挑戰時,才會透過 [**詐欺證明**](/glossary/#fraud-proof) 執行運算。 [更多關於樂觀卷軸的資訊](/developers/docs/scaling/optimistic-rollups/)。 +- **零知識卷軸**:在鏈下執行運算,並向鏈上提交 [**有效性證明**](/glossary/#validity-proof)。 [更多關於零知識卷軸的資訊](/developers/docs/scaling/zk-rollups/)。 #### 狀態通道 {#channels} -狀態通道使用多簽合約,讓參與者能夠快速、自由地在鏈外交易,然後與主網達成最終性。 這會減少網路擁塞,降低費用並縮短處理延遲。 目前主要有兩種類型的通道:狀態通道和支付通道。 +狀態通道使用多簽合約,讓參與者能夠快速、自由地在鏈下交易,然後與主網達成最終性。 這會減少網路擁塞,降低費用並縮短處理延遲。 目前主要有兩種類型的通道:狀態通道和支付通道。 -瞭解更多關於[狀態通道](/developers/docs/scaling/state-channels/)的資訊。 +深入了解[狀態通道](/developers/docs/scaling/state-channels/)。 ### 側鏈 {#sidechains} 側鏈是一個與以太坊相容,並與以太坊主網平行運行的獨立區塊鏈。 側鏈透過雙向跨鏈橋與以太坊相容,並運行自己選定的共識規則及區塊參數。 -瞭解更多關於[側鏈](/developers/docs/scaling/sidechains/)的資訊。 +深入了解[側鏈](/developers/docs/scaling/sidechains/)。 ### Plasma {#plasma} -Plasma 是一條獨立的區塊鏈,與以太坊主鏈錨定,並使用詐欺證明(像[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/)一樣)來仲裁爭議。 +Plasma 鏈是一條獨立的區塊鏈,錨定於以太坊主鏈,並使用詐欺證明(類似[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/))來仲裁爭議。 -瞭解更多關於 [Plasma](/developers/docs/scaling/plasma/) 的資訊。 +深入了解 [Plasma](/developers/docs/scaling/plasma/)。 ### Validium {#validium} Validium 鏈使用零知識證明卷軸一類的有效性證明,但不是將資料儲存在以太坊一層網路主鏈上。 每個 Validium 鏈能有每秒 10,000 筆交易的處理速度,多個 Validium 鏈能平行運作。 -瞭解更多關於 [Validium](/developers/docs/scaling/validium/) 的資訊。 +深入了解 [Validium](/developers/docs/scaling/validium/)。 ## 為何我們需要那麼多擴張解決方案? {#why-do-we-need-these} - 多個解決方案有助於減少網路任一部分的整體擁塞,並防止出現單一故障點。 - 整體大於各部分的總和。 不同解決方案能共存並協調發揮效益,對未來的交易速度和吞吐量產生指數級影響。 - 並非所有解決方案都需要直接使用以太坊共識演算法,替代機制或許能提供其他共識機制無法達成之好處。 -- 沒有一種擴張解決方案能夠完全滿足[以太坊願景](/roadmap/vision/)。 ## 想透過視覺方式學習? {#visual-learner} -_請注意,此影片中的解釋使用「二層網路」指代所有鏈外擴張解決方案,而我們將其區分為透過一層網路主網共識機制獲取安全性的鏈外解決方案。_ +_請注意,影片中的解說將 "Layer 2" 一詞用於指稱所有鏈外擴張解決方案,但我們則將 "Layer 2" 區分為透過 Layer 1 主網共識取得安全性的鏈外解決方案。_ -## 衍生閱讀 {#further-reading} +## 延伸閱讀 {#further-reading} - [以卷軸為中心的以太坊開發藍圖](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_ -- [以太坊二層網路擴展解決方案最新分析](https://www.l2beat.com/) -- [評估以太坊二層網路擴張解決方案:比較框架](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955) -- [卷軸之不完整指南](https://vitalik.eth.limo/general/2021/01/05/rollup.html) -- [以太坊驅動的零知識證明卷軸:業界佼佼者](https://hackmd.io/@canti/rkUT0BD8K) -- [樂觀卷軸與零知識證明卷軸](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/) -- [爲什麽說卷軸 + 資料分片是提高可擴展性的唯一可持續解決方案](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48) -- [什麽類型的三層網路才有意義?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html) -- [資料可用性或:卷軸如何學會停止擔憂並熱愛以太坊](https://ethereum2077.substack.com/p/data-availability-in-ethereum-rollups) - -_知道對你有幫助的社群資源嗎? 請編輯此頁面並新增資源!_ +- [關於以太坊 Layer 2 擴張解決方案的最新分析](https://www.l2beat.com/) +- [評估以太坊 Layer 2 擴張解決方案:一個比較框架](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955) +- [卷軸不完全指南](https://vitalik.eth.limo/general/2021/01/05/rollup.html) +- [由以太坊驅動的 ZK 卷軸:世界頂尖](https://hackmd.io/@canti/rkUT0BD8K) +- [樂觀卷軸與 ZK 卷軸之比較](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/) +- [為何卷軸 + 資料分片是實現高可擴展性的唯一可持續解決方案](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48) +- [哪種 Layer 3 才有意義?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html) +- [資料可得性,或:卷軸如何學會停止擔憂並愛上以太坊](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum) +- [以太坊卷軸實用指南](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) + +_知道一個曾經幫助你學習更多社區或社團資源? 歡迎在本頁自由編輯或添加內容!_ diff --git a/public/content/translations/zh-tw/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/zh-tw/developers/docs/scaling/optimistic-rollups/index.md index c62d6c47457..e80eb239cc7 100644 --- a/public/content/translations/zh-tw/developers/docs/scaling/optimistic-rollups/index.md +++ b/public/content/translations/zh-tw/developers/docs/scaling/optimistic-rollups/index.md @@ -1,26 +1,26 @@ --- -title: 樂觀卷軸 -description: 介紹零知識卷軸 — 一種以太坊社群使用的擴張解決方案。 +title: "樂觀卷軸" +description: "介紹樂觀卷軸 — 一種以太坊社群使用的擴張解決方案。" lang: zh-tw --- -樂觀卷軸是二層網路 (L2) 協定,旨在擴展以太坊基礎層的吞吐量。 它們透過在鏈外處理交易來減少以太坊主鏈上的計算,從而顯著提高處理速度。 與其他擴張解決方案(如[側鏈](/developers/docs/scaling/sidechains/))不同,樂觀卷軸從主網(透過在鏈上發佈交易結果)或 [Plasma 鏈](/developers/docs/scaling/plasma/)(該鏈還使用詐欺證明驗證以太坊主網上的交易,但將資料儲存在其他地方)獲取安全性。 +樂觀卷軸是二層網路 (L2) 協定,旨在擴展以太坊基礎層的吞吐量。 它們透過在鏈下處理交易來減少以太坊主鏈上的計算,從而顯著提高處理速度。 與其他擴容解決方案 (例如 [側鏈](/developers/docs/scaling/sidechains/)) 不同,樂觀卷軸會透過在鏈上發布交易結果來從主網取得安全性。而 [Plasma 鏈](/developers/docs/scaling/plasma/) 雖然也會用詐欺證明在以太坊上驗證交易,但會把交易資料儲存在其他地方。 -由於計算是使用以太坊時緩慢且昂貴的部分,樂觀卷軸可以提供高達 10-100 倍的可擴展性提升。 樂觀卷軸還會將交易以 `calldata` 或[二進位大型物件](/roadmap/danksharding/)的形式寫入以太坊,從而降低使用者的燃料成本。 +由於計算是使用以太坊時緩慢且昂貴的部分,樂觀卷軸可以提供高達 10-100 倍的可擴展性提升。 樂觀卷軸也會將交易以 `calldata` 或 [blobs](/roadmap/danksharding/) 的形式寫入以太坊,為使用者降低 Gas 成本。 -## 先備知識 {#prerequisites} +## 先決條件 {#prerequisites} -你應該已經閲讀並理解我們關於[以太坊擴張](/developers/docs/scaling/)和[二層網路](/layer-2/)的頁面。 +你應該已經閱讀並理解我們的[以太坊擴張](/developers/docs/scaling/)和[二層網路](/layer-2/)頁面。 ## 什麽是樂觀卷軸? {#what-is-an-optimistic-rollup} -樂觀卷軸是一種擴張以太坊的方法,涉及將計算和狀態存儲遷移到鏈外。 樂觀卷軸在以太坊之外執行交易,但將交易資料作爲 `calldata` 或[二進位大型物件](/roadmap/danksharding/)發佈到主網。 +樂觀卷軸是一種擴張以太坊的方法,涉及將計算和狀態存儲遷移到鏈下。 樂觀卷軸在以太坊之外執行交易,但將交易資料以 `calldata` 或 [blobs](/roadmap/danksharding/) 的形式發佈到主網。 -樂觀卷軸營運者將多個鏈外交易捆綁到一個大批次中,然後將其提交到以太坊。 此方法可將固定成本分散到每一批次的多筆交易中,從而降低最終使用者的費用。 樂觀卷軸還使用壓縮技術來減少發佈在以太坊上的資料量。 +樂觀卷軸營運者將多個鏈下交易捆綁到一個大批次中,然後將其提交到以太坊。 此方法可將固定成本分散到每一批次的多筆交易中,從而降低最終使用者的費用。 樂觀卷軸還使用壓縮技術來減少發佈在以太坊上的資料量。 -樂觀卷軸之所以被認爲是「樂觀的」,是因爲其假設鏈外交易有效,並且不會針對發佈到鏈上的交易批次發佈有效性證明。 這區分了樂觀卷軸與[零知識卷軸](/developers/docs/scaling/zk-rollups),後者會發佈鏈外交易的加密[有效性證明](/glossary/#validity-proof)。 +樂觀卷軸之所以被認爲是「樂觀的」,是因爲其假設鏈下交易有效,並且不會針對發佈到鏈上的交易批次發佈有效性證明。 這點將樂觀卷軸與 [零知識卷軸](/developers/docs/scaling/zk-rollups) 區分開來,後者會為鏈下交易發佈加密的 [有效性證明](/glossary/#validity-proof)。 -相反,樂觀卷軸依賴詐欺證明方案來偵測交易計算不正確的情況。 在以太坊上提交卷軸批次后,會有一個時間窗口(稱爲挑戰期),在此期間任何人都可以透過計算[詐欺證明](/glossary/#fraud-proof)來挑戰卷軸交易的結果。 +相反,樂觀卷軸依賴詐欺證明方案來偵測交易計算不正確的情況。 在以太坊上提交卷軸批次後,會有一個時間窗口(稱為「挑戰期」),在此期間任何人都可以透過計算 [詐欺證明](/glossary/#fraud-proof) 來挑戰卷軸交易的結果。 如果詐欺證明成功,卷軸協定就會重新執行交易並相應地更新卷軸的狀態。 詐欺證明成功的另一個影響是,負責將錯誤執行的交易納入區塊的排序者會收到懲罰。 @@ -28,27 +28,27 @@ lang: zh-tw ## 樂觀卷軸如何與以太坊互動? {#optimistic-rollups-and-Ethereum} -樂觀卷軸是爲了在以太坊上運作而構建的[鏈外擴張解決方案](/developers/docs/scaling/#off-chain-scaling)。 每個樂觀卷軸都由部署在以太坊網路上的一組智慧型合約來管理。 樂觀卷軸在以太坊主鏈之外處理交易,但將鏈外交易(按批次)發佈到鏈上的卷軸合約。 像以太坊區塊鏈一樣,此交易記錄是不可變的,並形成「樂觀卷軸鏈」。 +樂觀卷軸是建構來在以太坊上運作的 [鏈下擴容解決方案](/developers/docs/scaling/#offchain-scaling)。 每個樂觀卷軸都由部署在以太坊網路上的一組智慧型合約來管理。 樂觀卷軸在以太坊主鏈之外處理交易,但將鏈下交易(按批次)發佈到鏈上的卷軸合約。 像以太坊區塊鏈一樣,此交易記錄是不可變的,並形成「樂觀卷軸鏈」。 樂觀卷軸的架構由以下部分組成: -**鏈上合約**:樂觀卷軸的運作由在以太坊上執行的智慧型合約控制。 這包括用於存儲卷軸區塊、監控卷軸狀態更新以及追蹤使用者存款的合約。 從這種意義上講,以太坊充當樂觀卷軸的基礎層或「一層網路」。 +**鏈上合約**:樂觀卷軸的運作由在以太坊上執行的智慧合約控制。 這包括用於存儲卷軸區塊、監控卷軸狀態更新以及追蹤使用者存款的合約。 從這種意義上講,以太坊充當樂觀卷軸的基礎層或「一層網路」。 -**鏈外虛擬機 (VM)**:雖然管理樂觀卷軸協定的合約在以太坊上執行,但卷軸協定在[以太坊虛擬機](/developers/docs/evm/)之外的另一個虛擬機上執行計算和狀態存儲。 鏈外虛擬機是應用程式活躍和執行狀態變更的地方;它是樂觀卷軸的上層或「二層網路」。 +**鏈下虛擬機 (VM)**:雖然管理樂觀卷軸協議的合約在以太坊上執行,但卷軸協議會在與 [以太坊虛擬機](/developers/docs/evm/) 不同的另一個虛擬機上執行計算和狀態儲存。 鏈下虛擬機是應用程式活躍和執行狀態變更的地方;它是樂觀卷軸的上層或「二層網路」。 -由於樂觀卷軸旨在執行為以太坊虛擬機編寫或編譯的程式,因此鏈外虛擬機包含許多以太坊虛擬機設計規範。 此外,鏈上計算的詐欺證明讓以太坊網路可以强制執行在鏈外虛擬機中計算的狀態變更的有效性。 +由於樂觀卷軸旨在執行為以太坊虛擬機編寫或編譯的程式,因此鏈下虛擬機包含許多以太坊虛擬機設計規範。 此外,在鏈上計算的詐欺證明,能讓以太坊網路強制執行在鏈下虛擬機中計算的狀態變更的有效性。 -樂觀卷軸被描述為「混合擴張解決方案」,因爲儘管它們作爲單獨的協定存在,但其安全屬性來自以太坊。 除此之外,以太坊還能保證卷軸鏈外計算的正確性和計算後台資料的可用性。 這使得樂觀卷軸比不依賴以太坊獲取安全性的純鏈外擴張協定(如[側鏈](/developers/docs/scaling/sidechains/))更安全。 +樂觀卷軸被描述為「混合擴張解決方案」,因爲儘管它們作爲單獨的協定存在,但其安全屬性來自以太坊。 除此之外,以太坊還能保證卷軸鏈下計算的正確性和計算後台資料的可用性。 這使得樂觀卷軸比不依賴以太坊來保障安全性的純鏈下擴容協議(例如 [側鏈](/developers/docs/scaling/sidechains/))更安全。 樂觀卷軸在以下方面依賴以太坊的主要協定: ### 資料可用性 {#data-availability} -如前所述,樂觀卷軸將交易資料以 `calldata` 或[二進位大型物件](/roadmap/danksharding/)的形式發佈到以太坊。 由於卷軸鏈的執行以提交的交易為基礎,任何人都可以使用在以太坊基礎層上錨定的此資訊,來執行卷軸的狀態並驗證狀態轉換的正確性。 +如前所述,樂觀卷軸將交易資料以 `calldata` 或 [blobs](/roadmap/danksharding/) 的形式發佈到以太坊。 由於卷軸鏈的執行以提交的交易為基礎,任何人都可以使用在以太坊基礎層上錨定的此資訊,來執行卷軸的狀態並驗證狀態轉換的正確性。 -[資料可用性](/developers/docs/data-availability/)至關重要,因爲如果不能存取狀態資料,挑戰者就無法構建詐欺證明來對無效的卷軸作業提出爭論。 透過以太坊提供資料可用性,卷軸營運者逃脫惡意行爲(如提交無效區塊)懲罰的風險就降低了。 +[資料可用性](/developers/docs/data-availability/) 至關重要,因為如果不能存取狀態資料,挑戰者就無法建構詐欺證明來對無效的卷軸操作提出異議。 透過以太坊提供資料可用性,卷軸營運者逃脫惡意行爲(如提交無效區塊)懲罰的風險就降低了。 -### 審查阻力 {#censorship-resistance} +### 抗審查性 {#censorship-resistance} 樂觀卷軸也依賴以太坊來提供抗審查性。 在樂觀卷軸中,中心化實體(營運者)負責處理交易並將卷軸區塊提交到以太坊。 這會產生一些影響: @@ -68,15 +68,15 @@ lang: zh-tw 以太坊在樂觀卷軸背景下扮演的另一個角色是結算層。 結算層錨定整個區塊鏈生態系統,建立安全性,並在另一條鏈(在該實例中為樂觀卷軸)上發生需要仲裁的爭議時提供客觀的最終性. -以太坊主網為樂觀卷軸提供了一個中樞,以驗證詐欺證明並解決爭議。 此外,在卷軸上進行的交易只有當區塊在以太坊上被接受_之後_才是最終的。 一旦卷軸交易被提交到以太坊的基礎層,它就無法回滾(除非在極不可能的情況下發生鏈重組)。 +以太坊主網為樂觀卷軸提供了一個中樞,以驗證詐欺證明並解決爭議。 此外,只有在卷軸區塊被以太坊接受_之後_,在卷軸上進行的交易才是最終交易。 一旦卷軸交易被提交到以太坊的基礎層,它就無法回滾(除非在極不可能的情況下發生鏈重組)。 ## 樂觀卷軸如何運作? {#how-optimistic-rollups-work} -### 交易執行和彙總 {#transaction-execution-and-aggregation} +### 交易執行和匯總 {#transaction-execution-and-aggregation} 使用者向「營運者」提交交易,「營運者」則是樂觀卷軸上負責處理交易的節點。 營運者也稱爲「驗證者」或「彙總者」,負責彙總交易、壓縮底層資料,並在以太坊上發佈區塊。 -儘管任何人都可以成爲驗證者,但樂觀卷軸驗證者與[權益證明系統](/developers/docs/consensus-mechanisms/pos/)很像,必須在生成區塊之前提供保證金。 如果驗證者發佈了無效的區塊或構建了原有但無效的區塊(即使他們的區塊是有效的),該保證金可能會被罰沒。 透過這種方式,樂觀卷軸利用加密經濟激勵來確保驗證者誠實行事。 +雖然任何人都可以成為驗證者,但樂觀卷軸的驗證者必須在產出區塊前提供保證金,這與 [權益證明系統](/developers/docs/consensus-mechanisms/pos/) 非常相似。 如果驗證者發佈了無效的區塊或構建了原有但無效的區塊(即使他們的區塊是有效的),該保證金可能會被罰沒。 透過這種方式,樂觀卷軸利用加密經濟激勵來確保驗證者誠實行事。 樂觀卷軸鏈上的其他驗證者預期使用他們的卷軸狀態複本來執行提交的交易。 如果驗證者的最終狀態與營運者建議的狀態不同,他們可以發起挑戰並計算詐欺證明。 @@ -84,29 +84,29 @@ lang: zh-tw 排序者與常規卷軸營運者不同,因爲他們對交易的順序有更大的控制權。 此外,排序者具有卷軸鏈的優先存取權,並且是唯一被授權向鏈上合約提交交易的實體。 來自非排序者節點或常規使用者的交易只會在一個單獨的收件匣中排隊,直到排序者將其納入一個新批次。 -#### 提交卷軸區塊到以太坊 {#submitting-blocks-to-ethereum} +#### 向以太坊提交卷軸區塊 {#submitting-blocks-to-ethereum} -如前所述,樂觀卷軸的營運者將鏈外交易捆綁為一個批次,並將其發送到以太坊進行公證。 該程序涉及壓縮與交易相關的資料,並將其作爲 `calldata` 或二進位大型物件發佈到以太坊上。 +如前所述,樂觀卷軸的營運者將鏈下交易捆綁為一個批次,並將其發送到以太坊進行公證。 此流程涉及壓縮與交易相關的資料,並將其以 `calldata` 或 blobs 的形式發佈到以太坊上。 -`calldata` 是智慧型合約中不可修改、非持久的區域,其行爲與[記憶體](/developers/docs/smart-contracts/anatomy/#memory)極為相似。 儘管 `calldata` 作爲區塊鏈[歷史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)的一部分持續不變,但它不會儲存爲以太坊狀態的一部分。 由於 `calldata` 不觸及以太坊狀態的任何部分,因此它比在鏈上儲存資料的狀態更便宜。 +`calldata` 是智慧合約中一個不可修改、非持久性的區域,其行為與 [記憶體](/developers/docs/smart-contracts/anatomy/#memory) 極為相似。 雖然 `calldata` 會作為區塊鏈 [歷史紀錄](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) 的一部分永久保存在鏈上,但它並非作為以太坊狀態的一部分儲存。 由於 `calldata` 不會觸及以太坊狀態的任何部分,因此它比狀態更適合用作鏈上資料儲存,費用也更低。 -`calldata` 關鍵字也在 Solidity 中用於在執行時傳送參數到智慧型合約函式。 `calldata` 辨識在交易期間被調用的函式,並以任意位元組序列的形式保存函式的輸入。 +`calldata` 關鍵字也用於在 Solidity 中,於執行時將參數傳遞給智慧合約函式。 `calldata` 可識別交易期間呼叫的函式,並以任意位元組序列的形式保存函式的輸入。 -在樂觀卷軸的背景下,`calldata` 被用於將壓縮的交易資料發送到鏈上合約。 卷軸營運者透過呼叫卷軸合約中所需的函式,並將壓縮資料作爲函式引數傳送,來添加新批次。 使用 `calldata` 可以降低使用者費用,因爲卷軸產生的大部分成本來自鏈上储存資料。 +在樂觀卷軸的背景下,`calldata` 用於將壓縮的交易資料傳送到鏈上合約。 卷軸營運者透過呼叫卷軸合約中所需的函式,並將壓縮資料作爲函式引數傳送,來添加新批次。 使用 `calldata` 可以降低使用者費用,因為卷軸產生的大部分成本來自鏈上資料儲存。 -以下是卷軸批次提交的[一個示例](https://etherscan.io/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591),展示了此概念如何運作。 排序者叫用 `appendSequencerBatch()` 方法並使用 `calldata` 將壓縮的交易資料作爲輸入傳送。 +此處有提交卷軸批次的[範例](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591),可說明此概念的運作方式。 排序者呼叫了 `appendSequencerBatch()` 方法,並使用 `calldata` 將壓縮的交易資料作為輸入傳遞。 一些卷軸現在使用二進位大型物件將交易批次發佈到以太坊。 -二進位大型物件是不可修改且非持久的(就像 `calldata`),并會在約 18 天后從歷史记录中刪除。 有關二進位大型物件的更多資訊,請参阅 [Danksharding](/roadmap/danksharding)。 +Blob 是不可修改且非持久性的 (就像 `calldata` 一樣),但會在約 18 天後從歷史記錄中刪除。 有關 blob 的更多資訊,請參閱 [Danksharding](/roadmap/danksharding)。 ### 狀態承諾 {#state-commitments} -在任何時間,樂觀卷軸狀態(帳戶、餘額、合約程式碼等)都被組織為[默克爾樹](/whitepaper/#merkle-trees),也稱爲「狀態樹」。 該默克爾樹的根(狀態根)引用卷軸的最新狀態,經過雜湊並儲存在卷軸合約中。 鏈上的每個狀態轉換都會產生一個新的卷軸狀態,營運者透過計算新的狀態根來提交該狀態。 +在任何時間點,樂觀卷軸的狀態 (帳戶、餘額、合約程式碼等) 會被組織成一個稱為「狀態樹」的 [默克爾樹](/whitepaper/#merkle-trees)。 該默克爾樹的根(狀態根)引用卷軸的最新狀態,經過雜湊並儲存在卷軸合約中。 鏈上的每個狀態轉換都會產生一個新的卷軸狀態,營運者透過計算新的狀態根來提交該狀態。 營運者在發佈批次時需要同時提交舊狀態根和新狀態根。 如果舊狀態根與鏈上合約中現有的狀態根相符,則現有狀態根會被丟棄並替換爲新狀態根。 -卷軸營運者還需要為交易批次本身提交默克爾根。 這讓任何人都能透過提供[默克爾證明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/),證明交易已納入批次中(在一層網路上)。 +卷軸營運者還需要為交易批次本身提交默克爾根。 這讓任何人都能透過提供 [默克爾證明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/),來證明交易已納入批次中 (在 L1 上)。 狀態承諾,尤其是狀態根,對於證明樂觀卷軸中的狀態變更正確性非常必要。 卷軸合約在發佈後會立即接受來自營運者的新狀態根,但之後可以刪除無效的狀態根,將卷軸復原到其正確狀態。 @@ -120,11 +120,11 @@ lang: zh-tw 然而,在一層網路重新執行交易以偵測欺詐,需要發佈單獨交易的狀態承諾,並增加必須在鏈上發佈的資料卷軸。 回放交易還會產生巨大的燃料成本。 出於這些原因,樂觀卷軸正在轉換到多輪互動式證明,以更高的效率實現相同的目標(即偵測無效卷軸作業)。 -#### 多輪互動式證明 {#multi-round-interactive-proving} +#### 多回合互動式證明 {#multi-round-interactive-proving} 多輪互動式證明涉及斷言者與挑戰者之間的往返協定,該協定由一層網路驗證者合約監督,最終確定説謊方。 二層網路節點對斷言提出挑戰后,斷言者需要將有爭議的斷言分成相等的兩半。 在這種情況下,每個單獨的斷言都會包含與另一個斷言一樣多的計算步驟。 -然後挑戰者會選擇其想要挑戰的斷言。 劃分過程(稱爲「二等分協定」)一直持續到雙方就_單個_執行步驟的斷言發生爭議。 此時,一層網路合約會透過評估指示(及其結果)來解決爭議,以抓住欺詐方。 +然後挑戰者會選擇其想要挑戰的斷言。 這個劃分過程 (稱為「二分協議」) 會一直持續,直到雙方對於_單一_執行步驟的斷言產生爭議為止。 此時,一層網路合約會透過評估指示(及其結果)來解決爭議,以抓住欺詐方。 斷言者需要提供「一步證明」來驗證有爭議的單步計算的有效性。 如果斷言者未能提供一步證明,或者一層網路驗證者認爲證明無效,他們便會輸掉挑戰。 @@ -134,45 +134,45 @@ lang: zh-tw 2. 二等分協定減少了發佈在鏈上的資料量(無需為每筆交易發佈狀態承諾)。 此外,樂觀卷軸交易不受以太坊燃料限制的約束。 相反,樂觀卷軸重新執行交易時必須確保二層網路交易具有較低的燃料限制,以模擬其在單筆以太坊交易中的執行。 -3. 惡意斷言者的保證金一部分被獎勵給挑戰者,而另一部分則會被銷毀。 銷毀可以防止驗證者之間串通;如果兩個驗證者串通起來發起虛假挑戰,他們仍然會損失其全部質押的很大一部分。 +3. 惡意斷言者的保證金一部分被獎勵給挑戰者,而另一部分則會被銷毀。 銷毀可以防止驗證者之間進行串通; 如果兩個驗證者串通來發起虛假挑戰,他們仍然會損失其全部質押的一大部分。 4. 多輪互動式證明需要雙方(斷言者和挑戰者)在指定的時間窗口内行動。 未能在最後期限前采取行動會導致違約方喪失挑戰機會。 -#### 爲什麽詐欺證明對於樂觀卷軸很重要 {#fraud-proof-benefits} +#### 為什麼詐欺證明對樂觀卷軸很重要 {#fraud-proof-benefits} -詐欺證明很重要,因爲它們促進了樂觀卷軸中的_去信任最終性_。 去信任最終性是樂觀卷軸的一項品質,它保證交易只要有效,最終將會被確認。 +詐欺證明很重要,因為它們促進了樂觀卷軸中的_去信任化最終性_。 去信任最終性是樂觀卷軸的一項品質,它保證交易只要有效,最終將會被確認。 惡意節點可以嘗試透過啓動虛假挑戰來延遲對有效卷軸區塊的確認。 然而,詐欺證明最終會證明卷軸區塊的有效性並使其得到確認。 這也與樂觀卷軸的另一個安全屬性有關:鏈的有效性依賴於_一個_誠實節點的存在。 誠實節點可以透過發佈有效斷言或對無效斷言提出異議來正確地推進鏈。 無論如何,與誠實節點發生爭議的惡意節點會在詐欺證明過程中失去其質押。 -### 一層網路/二層網路的互操作性 {#l1-l2-interoperability} +### L1/L2 互通性 {#l1-l2-interoperability} -樂觀卷軸旨在與以太坊主網的互操作性,並允許使用者在一層網路和二層網路之間傳輸訊息和任意資料。 它們還與以太坊虛擬機兼容,因此你可以將現有的[去中心化應用程式](/developers/docs/dapps/)移植到樂觀卷軸,或使用以太坊開發工具建立新的去中心化應用程式。 +樂觀卷軸旨在與以太坊主網的互操作性,並允許使用者在一層網路和二層網路之間傳輸訊息和任意資料。 它們還與 EVM 相容,因此你可以將現有的 [去中心化應用程式](/developers/docs/dapps/) 移植到樂觀卷軸,或使用以太坊開發工具建立新的去中心化應用程式。 #### 1. 資產轉移 {#asset-movement} ##### 進入卷軸 -爲了使用樂觀卷軸,使用者需要將以太幣、ERC-20 代幣和其他被接受的資產存入一層網路上卷軸的[跨鏈橋](/developers/docs/bridges/)合約中。 跨鏈橋合約會將交易轉送到二層網路,在那裏鑄造等量的資產並發送到使用者在樂觀卷軸上選擇的地址。 +若要使用樂觀卷軸,使用者需將 ETH、ERC-20 代幣和其他可接受的資產,存入 L1 上卷軸的 [跨鏈橋](/developers/docs/bridges/) 合約中。 跨鏈橋合約會將交易轉送到二層網路,在那裏鑄造等量的資產並發送到使用者在樂觀卷軸上選擇的地址。 -使用者生成的交易(如一層網路 > 二層網路存款)通常需要排隊,直到排序者將其重新提交到卷軸合約。 然而,爲了保持抗審查性,如果交易延遲超過允許的最大時間,樂觀卷軸將允許使用者直接向鏈上卷軸合約提交交易。 +使用者產生的交易 (例如 L1 > L2 存款) 通常會排入佇列,直到排序者將它們重新提交到卷軸合約。 然而,爲了保持抗審查性,如果交易延遲超過允許的最大時間,樂觀卷軸將允許使用者直接向鏈上卷軸合約提交交易。 一些樂觀卷軸采用更簡單的方法來防止排序者審查使用者。 這時,區塊由自前一個區塊以來提交給一層網路合約的所有交易(如存款)以及卷軸鏈上已處理的交易共同定義。 如果排序者忽略一層網路交易,它將發佈(可證明)錯誤的狀態根;因此,一旦使用者產生的訊息被發佈在一層網路上,排序者就不能將其延遲。 ##### 退出卷軸 -由於詐欺證明方案,從樂觀卷軸提款到以太坊更加困難。 如果使用者發起一個二層網路 > 一層網路的交易以提取在一層網路上托管的資金,他們就必須等到挑戰期(持續約 7 天)結束。 盡管如此,提款過程本身相當簡單。 +由於詐欺證明方案,從樂觀卷軸提款到以太坊更加困難。 如果使用者發起 L2 > L1 交易以提取 L1 上託管的資金,他們必須等待大約七天的挑戰期結束。 盡管如此,提款過程本身相當簡單。 在二層網路上發起提款請求後,該交易會被納入下一個批次,同時使用者在卷軸上的資產被銷毀。 一旦批次在以太坊上發佈,使用者就可以計算一個默克爾證明,來驗證其退出交易是否納入到區塊中。 然後只需要等待延遲期過後最終確定一層網路上的交易,並將資金提取到主網。 -爲了避免向以太坊提款之前等待一周的時間,樂觀卷軸使用者可以雇用一個**流動性提供者** (LP)。 流動性提供者承擔待處理的二層網路提款的所有權,並在一層網路上向使用者付款(以換取費用)。 +為避免將資金提取到以太坊前需要等待一周,樂觀卷軸使用者可以採用**流動性提供者** (LP)。 流動性提供者承擔待處理的二層網路提款的所有權,並在一層網路上向使用者付款(以換取費用)。 流動性提供者可以在釋放資金之前檢查使用者提款請求的有效性(透過自行執行鏈)。 這樣他們就可以保證交易最終會得到確認(即去信任最終性)。 -#### 2. 以太坊虛擬機 (EVM) 相容性 {#evm-compatibility} +#### 2. EVM 相容性 {#evm-compatibility} -對於開發者來講,樂觀卷軸的優勢在於,它們與[以太坊虛擬機 (EVM)](/developers/docs/evm/) 的相容性(或者更確切地說,等效性)。 與以太坊虛擬機相容的卷軸符合[以太坊黃皮書](https://ethereum.github.io/yellowpaper/paper.pdf)中的規範,並在位元組碼級別支援以太坊虛擬機。 +對於開發者而言,樂觀卷軸的優勢在於它們與 [以太坊虛擬機 (EVM)](/developers/docs/evm/) 的相容性,或更貼切地說,等效性。 與 EVM 相容的卷軸符合 [以太坊黃皮書](https://ethereum.github.io/yellowpaper/paper.pdf) 中的規範,並在位元組碼層級支援 EVM。 樂觀卷軸中的以太坊虛擬機相容性具有以下好處: @@ -182,7 +182,7 @@ ii. 使用樂觀卷軸的開發者和專案團隊可以利用以太坊的基礎 使用現有工具很重要,因爲這些工具多年來已經過廣泛的審核、除錯和改進。 它還讓以太坊開發者不需要學習如何使用全新的開發堆棧建置應用程式。 -#### 3. 跨鏈合約呼叫 {#cross-chain-contract-calls} +#### 3 跨鏈合約呼叫 {#cross-chain-contract-calls} 使用者(外部擁有的帳戶)透過向卷軸合約提交交易或者讓排序者或驗證者為其提交交易,來與二層網路合約進行互動。 樂觀卷軸還讓以太坊上的合約帳戶可以與二層網路互動,使用跨鏈橋合約來轉送訊息,並在一層網路和二層網路之間傳遞資料。 這意味著你可以在以太坊主網上編寫一層網路合約,來叫用屬於二層網路樂觀卷軸合約的函式。 @@ -190,50 +190,50 @@ ii. 使用樂觀卷軸的開發者和專案團隊可以利用以太坊的基礎 跨鏈合約的一個範例是先前描述的代幣存款。 一層網路上的合約托管使用者的代幣,並向配對的二層網路合約發送訊息,以在卷軸中鑄造等量的代幣。 -由於跨鏈訊息呼叫會導致合約執行,因此發送者通常需要支付用於計算的[燃料成本](/developers/docs/gas/)。 建議設定較高的燃料限制,以防止交易在目標鏈上失敗。 代幣跨鏈橋場景就是一個很好的範例:如果交易的一層網路端(存入代幣)有效,但二層網路端(鑄造新代幣)由於燃料不足而失敗,則存款將無法恢復。 +由於跨鏈訊息呼叫會導致合約執行,因此傳送方通常需要支付用於計算的 [Gas 成本](/developers/docs/gas/)。 建議設定較高的燃料限制,以防止交易在目標鏈上失敗。 代幣跨鏈橋場景就是一個很好的範例:如果交易的一層網路端(存入代幣)有效,但二層網路端(鑄造新代幣)由於燃料不足而失敗,則存款將無法恢復。 -最後,我們應該注意,合約之間的二層網路 > 一層網路訊息呼叫需要考慮延遲(一層網路 > 二層網路呼叫通常在幾分鐘後執行)。 這是因爲從樂觀卷軸發送到主網的訊息在挑戰窗口到期之前無法執行。 +最後,我們應該注意,合約之間的 L2 > L1 訊息呼叫需要考慮到延遲 (L1 > L2 呼叫通常在幾分鐘後執行)。 這是因爲從樂觀卷軸發送到主網的訊息在挑戰窗口到期之前無法執行。 ## 樂觀卷軸的費用如何計算? {#how-do-optimistic-rollup-fees-work} 樂觀卷軸使用與以太坊非常相似的燃料費方案來表示使用者為每筆交易支付的費用。 樂觀卷軸收取的費用取決於以下組成部分: -1. **狀態寫入**:樂觀卷軸將交易資料和區塊頭(由前一個區塊頭的雜湊、狀態根、批次根組成)作爲 `blob`,即「二進位大型物件」,發佈到以太坊。 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) 為鏈上納入資料引入了具成本效益的解決方案。 `blob` 是一個新交易欄位,讓卷軸可以將壓縮的狀態轉換資料發佈到以太坊一層網路。 與鏈上永久保留的 `calldata` 不同,二進位大型物件的生命周期很短,在 [4096 個時期](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147)(約 18 天)后即會被用戶端刪除。 透過使用二進位大型物件發佈壓縮的交易批次,樂觀卷軸可以顯著降低向一層網路寫入交易的成本。 +1. **狀態寫入**:樂觀卷軸將交易資料和區塊標頭 (包含前一個區塊標頭的哈希、狀態根、批次根) 發布到以太坊,作為一個 `blob` (或稱「二進位大型物件」)。 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) 為鏈上納入資料引入了具成本效益的解決方案。 `blob` 是一個新交易欄位,讓卷軸可以將壓縮的狀態轉換資料發佈到以太坊 L1。 不同於永久保留在鏈上的 `calldata`,blob 是短期的,並可在 [4096 個 epoch](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147) (約 18 天) 後從用戶端中刪除。 透過使用二進位大型物件發佈壓縮的交易批次,樂觀卷軸可以顯著降低向一層網路寫入交易的成本。 -2. **二進位大型物件燃料使用**:二進位大型物件攜帶的交易采用類似於 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 中引入的動態費用機制。 3 型交易的燃料費會考慮二進位大型物件的基本費用,該費用由網路根據二進位大型物件空間需求和所發送交易的二進位大型物件空間使用來決定。 +2. **Blob Gas 已使用**:攜帶 blob 的交易採用了類似於 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 中引入的動態費用機制。 3 型交易的燃料費會考慮二進位大型物件的基本費用,該費用由網路根據二進位大型物件空間需求和所發送交易的二進位大型物件空間使用來決定。 -3. **二層網路營運者費用**:這是支付給卷軸節點的金額,用於補償處理交易時產生的計算成本,與以太坊上的燃料費非常相似。 由於二層網路處理能力更强,並且不會出現網路擁塞迫使以太坊上的驗證者優先處理費用更高的交易,卷軸節點收取的交易費更低。 +3. **L2 營運商費用**:這是支付給卷軸節點的金額,用於補償處理交易時產生的計算成本,與以太坊上的 Gas 費非常相似。 由於二層網路處理能力更强,並且不會出現網路擁塞迫使以太坊上的驗證者優先處理費用更高的交易,卷軸節點收取的交易費更低。 -樂觀卷軸套用了多種機制來降低使用者的費用,包括批次交易和壓縮 `calldata` 來降低資料發佈成本。 你可以查看[二層網路費用追蹤器](https://l2fees.info/)來即時瞭解使用基於以太坊的樂觀卷軸的成本。 +樂觀卷軸採用多種機制來降低使用者費用,包括批次處理交易和壓縮 `calldata` 來降低資料發佈成本。 你可以查看 [L2 費用追蹤器](https://l2fees.info/) 來即時了解使用基於以太坊的樂觀卷軸的成本。 ## 樂觀卷軸如何擴張以太坊? {#scaling-ethereum-with-optimistic-rollups} 如前所述,樂觀卷軸在以太坊上發佈壓縮的交易資料,以保證資料可用性。 壓縮鏈上發佈的資料的能力,對於透過樂觀卷軸來擴張以太坊的吞吐量至關重要。 -以太坊主鏈限制了區塊可容納的資料量,以燃料單位計價([平均區塊大小](/developers/docs/blocks/#block-size)為 1500 萬燃料)。 雖然這限制了每筆交易可以使用的燃料數量,但也意味著我們可以透過減少與交易相關的資料來增加每個區塊處理的交易 — 直接改進了可擴展性。 +以太坊主鏈對區塊可容納的資料量設有上限,以 Gas 單位計價 ( [平均區塊大小](/developers/docs/blocks/#block-size) 為 1500 萬 Gas)。 雖然這限制了每筆交易可以使用的燃料數量,但也意味著我們可以透過減少與交易相關的資料來增加每個區塊處理的交易 — 直接改進了可擴展性。 -樂觀卷軸使用多種技術來實現交易資料壓縮並提高每秒交易數速率。 例如,這篇[文章](https://vitalik.eth.limo/general/2021/01/05/rollup.html)將基本使用者交易(發送以太幣)在主網上產生的資料量與相同交易在卷軸上產生的資料量進行了比較: +樂觀卷軸使用多種技術來實現交易資料壓縮並提高每秒交易數速率。 例如,這篇[文章](https://vitalik.eth.limo/general/2021/01/05/rollup.html)比較了基本使用者交易 (傳送以太幣) 在主網上產生的資料量,與相同交易在卷軸上產生的資料量: -| 參數 | 以太坊(一層網路) | 卷軸(二層網路) | -| ------ | ----------------- | ------------ | -| 隨機數 | ~3 | 0 | -| 燃料價格 | ~8 | 0-0.5 | -| 燃料 | 3 | 0-0.5 | -| 目標 | 21 | 4 | -| 數值 | 9 | ~3 | -| 簽名 | ~68 (2 + 33 + 33) | ~0.5 | -| 來源 | 0(從簽名恢復) | 4 | -| **總計** | **~112 個位元組** | **~12 個位元組** | +| 參數 | 以太坊(一層網路) | 卷軸(二層網路) | +| ------ | ---------------------------------------------------- | ------------------------------------ | +| 隨機數 | ~3 | 0 | +| 燃料價格 | ~8 | 0-0.5 | +| 燃料 | 3 | 0-0.5 | +| 目標 | 21 | 4 | +| 數值 | 9 | ~3 | +| 簽名 | ~68 (2 + 33 + 33) | ~0.5 | +| 來源 | 0(從簽名恢復) | 4 | +| **總計** | **~112 個位元組** | **~12 個位元組** | 對這些數字進行一些初略計算,有助於顯示樂觀卷軸提供的可擴展性改進: -1. 每個區塊的目標大小為 1500 萬燃料,驗證一個位元組的資料需要 16 燃料。 將平均區塊大小除以 16 燃料 (15,000,000/16),顯示了一般區塊可以容納 **937,500 個位元組的資料**。 -2. 如果一個基本卷軸交易使用 12 個位元組,則以太坊區塊平均可以處理 **78,125 筆卷軸交易** (937,5000/12) 或 **39 個卷軸批次**(如果每個批次平均包含 2,000 筆交易)。 -3. 如果每 15 秒在以太坊上產生一個新區塊,則卷軸的處理速度大約爲**每秒 5,208 筆交易**。 計算方法是,將以太坊區塊可以容納的基本卷軸交易數量 (**78,125**) 除以平均出塊時間(**15 秒**)。 +1. 每個區塊的目標大小為 1500 萬燃料,驗證一個位元組的資料需要 16 燃料。 將平均區塊大小除以 16 Gas (15,000,000/16),顯示了一般區塊可以容納 **937,500 位元組的資料**。 +2. 如果一個基本的卷軸交易使用 12 個位元組,那麼一個平均的以太坊區塊可以處理 **78,125 筆卷軸交易** (937,500/12) 或 **39 個卷軸批次** (如果每個批次平均包含 2,000 筆交易)。 +3. 如果每 15 秒在以太坊上產出一個新區塊,則卷軸的處理速度大約為**每秒 5,208 筆交易**。 計算方法是,將以太坊區塊可以容納的基本卷軸交易數量 (**78,125**) 除以平均出塊時間 (**15 秒**)。 鑒於樂觀卷軸交易不可能包含以太坊上的整個區塊,這是一個比較樂觀的預計。 但是,透過它可以大致瞭解樂觀卷軸可以為以太坊使用者提供多少可擴展性收益(當前實現可提供每秒高達 2,000 筆交易的速率)。 -在以太坊上引入[資料分片](/roadmap/danksharding/)有望增加樂觀卷軸的可擴展性。 由於卷軸交易必須與其他非卷軸交易共用區塊空間,因此其最大處理能力受制於以太坊主鏈上的資料吞吐量。 Danksharding 使用更便宜的非永久型「二進位大型物件」存儲,而不是昂貴的永久型 `CALLDATA`,這將增加二層網路鏈上用於按區塊發佈資料的空間。 +在以太坊上引入[資料分片](/roadmap/danksharding/)有望增加樂觀卷軸的可擴展性。 由於卷軸交易必須與其他非卷軸交易共用區塊空間,因此其最大處理能力受制於以太坊主鏈上的資料吞吐量。 Danksharding 將會增加 L2 鏈上可用於每個區塊發布資料的空間,它使用更便宜、非永久性的「blob」儲存,而非昂貴、永久性的 `CALLDATA`。 ### 樂觀卷軸的優點和缺點 {#optimistic-rollups-pros-and-cons} @@ -247,7 +247,7 @@ ii. 使用樂觀卷軸的開發者和專案團隊可以利用以太坊的基礎 | 樂觀卷軸依賴於精心設計的加密激勵機制來提升鏈上安全性。 | 卷軸必須在鏈上發佈所有交易資料,這可能會增加成本。 | | 與以太坊虛擬機和 Solidity 的相容性,讓開發者可以將以太坊原生智慧型合約移植到卷軸或使用現有工具來建立新的去中心化應用程式。 | | -### 樂觀卷軸之視覺範例 {#optimistic-video} +### 樂觀卷軸視覺化解釋 {#optimistic-video} 想透過視覺方式學習? 觀看 Finematics 解釋樂觀卷軸: @@ -255,9 +255,11 @@ ii. 使用樂觀卷軸的開發者和專案團隊可以利用以太坊的基礎 ## 有關樂觀卷軸的延伸閲讀 -- [樂觀卷軸如何運作(完整指引)](https://www.alchemy.com/overviews/optimistic-rollups) -- [什麽是區塊鏈卷軸? (技術介紹)](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction) -- [Arbitrum 之概要指引](https://www.bankless.com/the-essential-guide-to-arbitrum) -- [樂觀卷軸究竟如何運作?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work) -- [樂觀虛擬機深入探索](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) -- [什麽是樂觀虛擬機?](https://www.alchemy.com/overviews/optimistic-virtual-machine) +- [樂觀卷軸如何運作 (完整指南)](https://www.alchemy.com/overviews/optimistic-rollups) +- [什麼是區塊鏈卷軸? 技術簡介](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction) +- [Arbitrum 基礎指南](https://www.bankless.com/the-essential-guide-to-arbitrum) +- [以太坊卷軸實用指南](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) +- [以太坊 L2s 中詐欺證明的現況](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s) +- [Optimism 的 Rollup 是如何運作的?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work) +- [OVM 深入探討](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) +- [什麼是樂觀虛擬機?](https://www.alchemy.com/overviews/optimistic-virtual-machine) diff --git a/public/content/translations/zh-tw/developers/docs/scaling/plasma/index.md b/public/content/translations/zh-tw/developers/docs/scaling/plasma/index.md index 1f74e0ceff7..b61598772cb 100644 --- a/public/content/translations/zh-tw/developers/docs/scaling/plasma/index.md +++ b/public/content/translations/zh-tw/developers/docs/scaling/plasma/index.md @@ -1,60 +1,60 @@ --- -title: Plasma 鏈 -description: 介紹目前作為擴張解決方案供以太坊社群使用的 Plasma 鏈。 +title: "Plasma 鏈" +description: "介紹目前作為擴張解決方案供以太坊社群使用的 Plasma 鏈。" lang: zh-tw incomplete: true sidebarDepth: 3 --- -Plasma 鏈是錨定以太坊主網的獨立區塊鏈,其交易在鏈外執行並有自己的區塊驗證機制。 Plasma 鏈有時被稱為「子」鏈,本質上是以太坊主網的縮小複製版, 使用[詐欺證明](/glossary/#fraud-proof)(如[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/))來仲裁爭議。 +Plasma 鏈是錨定以太坊主網的獨立區塊鏈,其交易在鏈下執行並有自己的區塊驗證機制。 Plasma 鏈有時被稱為「子」鏈,本質上是以太坊主網的縮小複製版, Plasma 鏈使用[詐欺證明](/glossary/#fraud-proof)(類似[樂觀卷軸](/developers/docs/scaling/optimistic-rollups/))來仲裁爭議。 使用默克爾樹可以建立這些鏈的無限堆疊,將父母鏈(包括以太坊主網)的頻寬載荷轉移到 Plasma 鏈。 然而,雖然這些鏈會繼承以太坊的一些安全性(透過詐欺證明),但它們的安全性和效率受多項設計限制的影響。 -## 基本資訊 {#prerequisites} +## 先決條件 {#prerequisites} -推薦你先熟悉以太坊的所有基本概念,並大致了解[以太坊擴張](/developers/docs/scaling/)。 +您應該對所有基礎主題有良好的理解,並對[以太坊擴張](/developers/docs/scaling/)有高層次的了解。 ## 何謂 Plasma 鏈? -Plasma 是一個改善公共區塊鏈(如以太坊)可擴展性的框架。 如原始版 [Plasma 白皮書](http://plasma.io/plasma.pdf)中所述,Plasma 鏈建置在另一個區塊鏈(稱為「根鏈」)之上。 每個「子鏈」都是從根鏈延伸而來,通常由部署於父母鏈上的智慧型合約來管理。 +Plasma 是一個改善公共區塊鏈(如以太坊)可擴展性的框架。 如原始版 Plasma 白皮書中所述,Plasma 鏈建置在另一個區塊鏈(稱為「根鏈」)之上。 每個「子鏈」都是從根鏈延伸而來,通常由部署於父母鏈上的智慧型合約來管理。 -Plasma 合約的功能之一是作為[跨鏈橋](/developers/docs/bridges/),讓使用者可以在以太坊主網和 Plasma 鏈之間移動資產。 雖然這讓 Plasma 鏈看似很像[側鏈](/developers/docs/scaling/sidechains/),但不同的是,Plasma 鏈至少某種程度上受益於以太坊主網的安全性, 而側鏈則是完全為自身的安全性負責,與以太坊主網無關。 +Plasma 合約的功能之一是作為[跨鏈橋](/developers/docs/bridges/),讓使用者可以在以太坊主網和 plasma 鏈之間移動資產。 雖然這讓它們類似於[側鏈](/developers/docs/scaling/sidechains/),但 plasma 鏈至少在某種程度上受益於以太坊主網的安全性。 而側鏈則是完全為自身的安全性負責,與以太坊主網無關。 ## Plasma 鏈如何運作? Plasma 鏈的基本組成部分有: -### 鏈外計算 {#off-chain-computation} +### 鏈外運算 {#offchain-computation} -以太坊目前的處理速度限制約是每秒 15 到 20 筆交易,短期內無法有效地擴張以面對更多使用者。 存在這個問題的原因是,以太坊的[共識機制](/developers/docs/consensus-mechanisms/)需要大量點對點節點來驗證區塊鏈狀態的每次更新。 +以太坊目前的處理速度限制約是每秒 15 到 20 筆交易,短期內無法有效地擴張以面對更多使用者。 存在這個問題的主要原因是,以太坊的[共識機制](/developers/docs/consensus-mechanisms/)需要許多點對點節點來驗證區塊鏈狀態的每次更新。 雖然以太坊的共識機制對於安全性是必需的,但這並不適用於所有使用案例。 例如,Alice 不需要讓整個以太坊網路來驗證她每天付給 Bob 的咖啡錢,畢竟她跟 Bob 雙方之間已經有一定的信任關係了。 Plasma 鏈假設以太坊主網不需要驗證所有交易。 相反,我們可以在主網外處理交易,讓節點不必驗證每一筆交易。 -由於 Plasma 鏈可以最佳化速度和成本,鏈外運算是有必要的。 舉例來說,Plasma 鏈可能(實際上經常如此)使用單一的「營運者」來管理交易的排序與執行。 既然只有一個實體驗證交易,在 Plasma 鏈上處理交易的速度就比以太坊主網快得多。 +由於 Plasma 鏈可以最佳化速度和成本,鏈下運算是有必要的。 舉例來說,Plasma 鏈可能(實際上經常如此)使用單一的「營運者」來管理交易的排序與執行。 既然只有一個實體驗證交易,在 Plasma 鏈上處理交易的速度就比以太坊主網快得多。 ### 狀態承諾 {#state-commitments} -儘管 Plasma 鏈在鏈外執行交易,這些交易仍會在以太坊主網的執行層結算,否則 Plasma 鏈也無法受益於以太坊的安全保障。 但如果在最終確定鏈外交易時未能獲知 Plasma 鏈的狀態,那將打破前述安全性模型,並可能導致無效交易氾濫。 這就是為何在 Plasma 鏈上負責產生區塊的營運者,需要定期在以太坊主網上發布「狀態承諾」。 +儘管 Plasma 鏈在鏈下執行交易,這些交易仍會在以太坊主網的執行層結算,否則 Plasma 鏈也無法受益於以太坊的安全保障。 但如果在最終確定鏈下交易時未能獲知 Plasma 鏈的狀態,那將打破前述安全性模型,並可能導致無效交易氾濫。 這就是為何在 Plasma 鏈上負責產生區塊的營運者,需要定期在以太坊主網上發布「狀態承諾」。 -[承諾方案](https://en.wikipedia.org/wiki/Commitment_scheme)是一種密碼學技術,用以在不洩漏給另一方的情況下承諾某個價值或是主張。 承諾就其意義而言是一種約束,一旦做出承諾就無法變更承諾的價值或主張。 Plasma 鏈上的狀態承諾會採用「默克爾根」(源自[默克爾樹](/whitepaper/#merkle-trees))的形式,營運者會定期把狀態承諾傳送到以太坊鏈上的 Plasma 合約。 +承諾方案是一種密碼學技術,用以在不洩漏給另一方的情況下承諾某個價值或是主張。 承諾就其意義而言是一種約束,一旦做出承諾就無法變更承諾的價值或主張。 Plasma 中的狀態承諾採用「Merkle 根」的形式(源自 [Merkle 樹](/whitepaper/#merkle-trees)),營運者會定期將其傳送到以太坊鏈上的 Plasma 合約。 -默克爾根為密碼學基元,讓我們得以將大量資訊進行壓縮。 默克爾根(在這一情境下也稱「區塊根」)可以代表區塊內的所有交易。 默克爾根還讓我們可以很容易地驗證,一小份資料是否存在於較大資料集中。 舉例來說,使用者可以透過產生一個[默克爾證明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content),來證明一筆交易有被納入特定區塊中。 +默克爾根為密碼學基元,讓我們得以將大量資訊進行壓縮。 默克爾根(在這一情境下也稱「區塊根」)可以代表區塊內的所有交易。 默克爾根還讓我們可以很容易地驗證,一小份資料是否存在於較大資料集中。 例如,使用者可以產生[默克爾證明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content),以證明特定區塊中包含某筆交易。 -默克爾根非常重要,用於把鏈外狀態的相關資訊提供給以太坊。 我們可以把默克爾根想像成「暫存點」:營運者表示,「這是 Plasma 鏈在時間點 x 的狀態,以此默克爾根為證」。 營運者承諾 Plasma 鏈的_目前狀態_,並附上一個默克爾根,也就是所謂的「狀態承諾」。 +默克爾根非常重要,用於把鏈下狀態的相關資訊提供給以太坊。 我們可以把默克爾根想像成「暫存點」:營運者表示,「這是 Plasma 鏈在時間點 x 的狀態,以此默克爾根為證」。 營運者正使用一個 Merkle 根來承諾 plasma 鏈的_目前狀態_,這就是為什麼它被稱為「狀態承諾」。 -### 進入與退出 {#entries-and-exits} +### 進出 {#entries-and-exits} 以太坊的使用者如果想要享受到 Plasma 的好處,會需要一個機制來在以太坊主網與 Plasma 鏈之間轉移資金。 我們不能把以太幣隨意地傳送到 Plasma 鏈上的地址,不過由於兩個鏈並不相容,所以交易結果不是失敗就是資金消失。 Plasma 鏈使用一個在以太坊上執行的主合約來處理使用者的進入和退出。 這個主合約也負責追蹤狀態承諾(上文提到的),並依據詐欺證明來懲罰不誠實的行為(我們等等會詳談)。 -#### 進入 Plasma 鏈 {#entering-the-plasma-chain} +#### 進入 plasma 鏈 {#entering-the-plasma-chain} 若要進入 Plasma 鏈,Alice(使用者)會需要存入以太幣或是任意 ERC-20 代幣到 Plasma 合約。 Plasma 上負責監視合約存款的營運者,會建立一筆與 Alice 的首筆存款等額的資產並發放到她在 Plasma 鏈上的地址。 Alice 需要在子鏈上證明有收到這筆資金,接著就可以使用這些資金進行交易。 -#### 退出 Plasma 鏈 {#exiting-the-plasma-chain} +#### 退出 plasma 鏈 {#exiting-the-plasma-chain} 退出 Plasma 鏈則因為各種原因,比進入時複雜了許多。 最大的原因是,雖然以太坊有關於 Plasma 鏈狀態的資訊,但以太坊並無法驗證那些資訊是否真實。 惡意使用者可以不實地宣稱(如「我有 1000 枚以太幣」),透過提供虛假證明來支持其謊言並逍遙法外。 @@ -62,9 +62,9 @@ Plasma 鏈使用一個在以太坊上執行的主合約來處理使用者的進 不過,使用者通常都是誠實的,對其擁有資金的宣稱也是正確的。 延續 Alice 的情境,她會透過向 Plasma 合約提交一筆交易,在根鏈(以太坊)上發起提款請求。 -她還必須提供一個默克爾證明,驗證 Plamsa 鏈上有一筆建立 Alice 資金的交易已被納入到區塊中。 這對於 Plasma 的迭代實作來說很有必要,如 [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html),它採用的是[未花費交易輸出 (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) 模型。 +她還必須提供一個默克爾證明,驗證 Plamsa 鏈上有一筆建立 Alice 資金的交易已被納入到區塊中。 這對於 Plasma 的迭代是必要的,例如 [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html),它使用[未使用交易輸出 (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) 模型。 -其他的實作方案如 [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html),將資金視作[非同質化代幣](/developers/docs/standards/tokens/erc-721/),而非未花費交易輸出模型。 在這一實作方案中,提款時需要附上 Plasma 鏈上代幣的擁有權證明。 這可以透過提交兩筆包含代幣的最新交易,及一份默克爾證明,驗證這兩筆交易有被打包進區塊。 +其他像是 [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html) 的方案,將資金表示為[非同質化代幣](/developers/docs/standards/tokens/erc-721/),而不是 UTXO。 在這一實作方案中,提款時需要附上 Plasma 鏈上代幣的擁有權證明。 這可以透過提交兩筆包含代幣的最新交易,及一份默克爾證明,驗證這兩筆交易有被打包進區塊。 使用者也需要在提款請求中加入保證金,來擔保其行為誠實。 如果有挑戰者證明 Alice 的提款請求是無效的,她的保證金會被罰沒,其中一部分保證金會給挑戰者作為獎勵。 @@ -72,7 +72,7 @@ Plasma 鏈使用一個在以太坊上執行的主合約來處理使用者的進 ### 爭議仲裁 {#dispute-arbitration} -與任何區塊鏈一樣,Plasma 鏈需要一種機制來確保交易的完整性,防範參與者的惡意行爲(例如,雙重消費資金)。 爲此,Plasma 鏈使用詐欺證明來對有關狀態轉換有效性的爭議進行仲裁並懲罰不良行爲。 詐欺證明可作爲一種機制,Plasma 子鏈可以透過它向父母鏈或根鏈提出投訴。 +與任何區塊鏈一樣,Plasma 鏈需要一種機制來強制執行交易的完整性,以防參與者惡意行事(例如,雙花資金)。 爲此,Plasma 鏈使用詐欺證明來對有關狀態轉換有效性的爭議進行仲裁並懲罰不良行爲。 詐欺證明可作爲一種機制,Plasma 子鏈可以透過它向父母鏈或根鏈提出投訴。 詐欺證明只是聲明特定的狀態轉換無效。 例如,如果使用者 Alice 嘗試兩次消費同一資金。 也許她在與 Bob 的交易中消費了未花費交易輸出 (UTXO),並希望在另一筆交易中消費相同的未花費交易輸出(但現在是 Bob 的了)。 @@ -80,17 +80,17 @@ Plasma 鏈使用一個在以太坊上執行的主合約來處理使用者的進 如果 Bob 挑戰成功,Alice 的提款請求將被取消。 然而,這種方法依賴於 Bob 有能力監視鏈上的提款請求。 如果 Bob 離綫,一旦挑戰期結束,Alice 就可以處理這筆惡意提款。 -## Plasma 鏈中的大規模退出問題 {#the-mass-exit-problem-in-plasma} +## Plasma 中的大規模退出問題 {#the-mass-exit-problem-in-plasma} -當大量使用者試圖同時從 Plasma 鏈提款時,就會出現大規模退出問題。 出現該問題的原因與 Plasma 的最大問題之一有關:**資料不可用性**。 +當大量使用者試圖同時從 Plasma 鏈提款時,就會出現大規模退出問題。 這個問題之所以存在,與 Plasma 最大的問題之一有關:**資料不可用性**。 資料可用性是驗證所提議區塊的資訊是否已實際發佈在區塊鏈網路上的能力。 如果生產者自己發佈區塊但保留用於建立區塊的資料,則該區塊是「不可用的」。 如果節點要能夠下載區塊並驗證交易的有效性,區塊必須是可用的。 區塊鏈透過迫使區塊生產者在鏈上發佈所有交易資料來確保資料可用性。 -資料可用性還有助於保護建構於以太坊基礎層之上的鏈外擴張協議。 透過迫使這些鏈上營運者在以太坊上發佈交易資料,任何人都可以藉由構建引用正確鏈狀態的詐欺證明,來挑戰無效區塊。 +資料可用性還有助於保護建構於以太坊基礎層之上的鏈下擴張協議。 透過迫使這些鏈上營運者在以太坊上發佈交易資料,任何人都可以藉由構建引用正確鏈狀態的詐欺證明,來挑戰無效區塊。 -Plasma 鏈主要儲存與營運者的交易資料,並且**不在主網上發佈任何資料**(即除了定期狀態承諾之外)。 這意味著如果使用者需要建立詐欺證明來挑戰無效交易,他們就必須仰賴營運者提供交易資料。 如果該系統正常運作,則使用者始終可以使用詐欺證明來保護資金。 +Plasma 鏈主要將交易資料儲存在營運者處,且**不會在主網上發布任何資料**(即,除了定期的狀態承諾之外)。 這意味著如果使用者需要建立詐欺證明來挑戰無效交易,他們就必須仰賴營運者提供交易資料。 如果該系統正常運作,則使用者始終可以使用詐欺證明來保護資金。 當進行惡意行爲的是營運者而不僅僅是使用者時,問題就開始了。 由於營運者完全控制區塊鏈,他們更有動力更大規模地推進無效狀態轉換,例如竊取 Plasma 鏈上屬於使用者的資金。 @@ -98,37 +98,37 @@ Plasma 鏈主要儲存與營運者的交易資料,並且**不在主網上發 因此,最樂觀的解決方案是嘗試從 Plasma 鏈上「大規模退出」使用者。 大規模退出減慢了惡意營運者竊取資金的計劃,並為使用者提供了一定程度的保護。 提款請求根據每個未花費交易輸出 (UTXO)(或代幣)的建立時間排序,以防止惡意營運者搶先交易誠實的使用者。 -盡管如此,我們仍然需要一種方法來驗證大規模退出期間提款請求的有效性,以防止機會主義個人在處理無效退出的混亂中獲利。 解決方案很簡單:要求使用者發佈最後一個**有效的鏈狀態**來退出其資金。 +盡管如此,我們仍然需要一種方法來驗證大規模退出期間提款請求的有效性,以防止機會主義個人在處理無效退出的混亂中獲利。 解決方案很簡單:要求使用者發布最後一個**有效的鏈狀態**以退出其資金。 但這種方法仍然存在問題。 例如,如果 Plasma 鏈上的所有使用者都需要退出(在惡意營運者的情況下是可能的),Plasma 鏈的整個有效狀態就必須立即轉儲到以太坊的基礎層。 由於 Plasma 鏈可能為任意大小(高吞吐量 = 更多資料)和以太坊處理速度的限制,這不是一個理想的解決方案。 儘管退出游戲在理論上聽起來不錯,但現實中的大規模退出可能會引發以太坊本身的全網路擁塞。 除了損害以太坊的功能之外,協調不善的大規模退出意味著使用者可能無法在營運者耗盡 Plasma 鏈上的每個帳戶之前提取資金。 -## Plasma 的優勢和劣勢 {#pros-and-cons-of-plasma} +## Plasma 的優缺點 {#pros-and-cons-of-plasma} -| 優勢 | 劣勢 | -| ----------------------------------------------------------------------------- | --------------------------------------------------- | -| 提供高吞吐量和低單位交易成本。 | 不支援一般運算(無法執行智慧型合約)。 僅透過特定運用邏輯支援基本的代幣轉移、交換及其他幾種交易類型。 | -| 適合任意使用者之間的交易(若雙方使用者都處於 Plasma 鏈上,則不會產生任何開銷) | 需要本人定期監看網路(活躍性要求)或委託他人監看,以保障資金安全。 | -| Plasma 鏈可以適應與主鏈無關的特定使用案例。 包括企業在内的任何人,都可以自訂 Plasma 智慧型合約,以提供可在不同情境下運作的可擴展基礎設施。 | 仰賴一或多個營運者來儲存資料並根據要求提供此資料。 | -| 透過將計算和存儲遷移到鏈外來減少以太坊主網的載荷。 | 提款可被延遲數日以容許挑戰。 對於同質化資產,流動性提供者可以緩解這種情況,但存在相關的資本成本。 | -| | 如果太多使用者同時嘗試退出,以太坊主網可能會擁塞。 | +| 優勢 | 劣勢 | +| ----------------------------------------------------------------------------- | -------------------------------------------------- | +| 提供高吞吐量和低單位交易成本。 | 不支援一般運算(無法執行智能合約)。 僅透過特定運用邏輯支援基本的代幣轉移、交換及其他幾種交易類型。 | +| 適合任意使用者之間的交易(若雙方使用者都處於 Plasma 鏈上,則不會產生任何開銷) | 需要本人定期監看網路(活躍性要求)或委託他人監看,以保障資金安全。 | +| Plasma 鏈可以適應與主鏈無關的特定使用案例。 包括企業在内的任何人,都可以自訂 Plasma 智慧型合約,以提供可在不同情境下運作的可擴展基礎設施。 | 仰賴一或多個營運者來儲存資料並根據要求提供此資料。 | +| 透過將計算和存儲遷移到鏈下來減少以太坊主網的載荷。 | 提款可被延遲數日以容許挑戰。 對於同質化資產,流動性提供者可以緩解這種情況,但存在相關的資本成本。 | +| | 如果太多使用者同時嘗試退出,以太坊主網可能會擁塞。 | -## Plasma 與二層網路擴張協定 {#plasma-vs-layer-2} +## Plasma 與 Layer 2 擴張協定 {#plasma-vs-layer-2} -雖然 Plasma 曾被視爲對以太坊有用的擴張解決方案,但後來被棄用,由[二層網路 (L2) 擴張協定](/layer-2/)所取代。 二層網路擴張解決方案解決了 Plasma 的幾個問題: +雖然 Plasma 曾被視為對以太坊有用的擴張解決方案,但後來已被棄用,轉而採用 [Layer 2 (L2) 擴張協定](/layer-2/)。 二層網路擴張解決方案解決了 Plasma 的幾個問題: ### 效率 {#efficiency} -[零知識卷軸](/developers/docs/scaling/zk-rollups)為在鏈外處理的每批交易的有效性產生加密證明。 這可防止使用者(和營運者)推進無效的狀態轉換,因而不再需要挑戰期和退出游戲。 這也意味著使用者不必透過定期監視鏈來保護其資金安全。 +[零知識卷軸](/developers/docs/scaling/zk-rollups) 會為鏈外處理的每批交易的有效性產生加密證明。 這可防止使用者(和營運者)推進無效的狀態轉換,因而不再需要挑戰期和退出游戲。 這也意味著使用者不必透過定期監視鏈來保護其資金安全。 -### 支援智慧型合約 {#support-for-smart-contracts} +### 支援智能合約 {#support-for-smart-contracts} -Plasma 框架的另一個問題是[無法支援以太坊智慧型合約的執行](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)。 因此,Plasma 的大多數實作主要是用於簡單的支付或 ERC-20 代幣交換。 +Plasma 框架的另一個問題是[無法支援執行以太坊智能合約](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)。 因此,Plasma 的大多數實作主要是用於簡單的支付或 ERC-20 代幣交換。 -相反,樂觀卷軸與[以太坊虛擬機](/developers/docs/evm/)相容,並且可以執行以太坊原生[智慧型合約](/developers/docs/smart-contracts/),使其成爲擴張[去中心化應用程式](/developers/docs/dapps/)的實用且_安全_的解決方案。 類似地,[建立以太坊虛擬機的零知識實作 (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549) 正在計劃中,使零知識卷軸能夠處理任意邏輯並執行智慧型合約。 +相反地,樂觀卷軸與[以太坊虛擬機](/developers/docs/evm/)相容,可以執行以太坊原生的[智能合約](/developers/docs/smart-contracts/),使其成為擴張[去中心化應用程式](/developers/docs/dapps/)的實用且_安全_的解決方案。 同樣地,目前正在計劃[建立 EVM 的零知識實作 (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549),這將允許 ZK 卷軸處理任意邏輯並執行智能合約。 -### 資料不可用 {#data-unavailability} +### 資料不可用性 {#data-unavailability} 如前所述,Plasma 存在資料可用性問題。 如果惡意營運者在 Plasma 鏈上推進了無效轉換,使用者將無法挑戰它,因爲營運者可以扣留建立詐欺證明所需的資料。 卷軸迫使營運者在以太坊上發佈交易資料,允許任何人驗證鏈的狀態並在必要時建立詐欺證明,從而解決了該問題。 @@ -142,13 +142,14 @@ Plasma 框架的另一個問題是[無法支援以太坊智慧型合約的執行 Plasma、側鏈和分片技術有一定的相似,因爲它們都以某種方式連線到以太坊主網。 然而,連線到以太坊主網的級別和强度有所不同,影響這些擴張解決方案的安全屬性。 -### Plasma 與側鏈 {#plasma-vs-sidechains} +### Plasma vs 側鏈 {#plasma-vs-sidechains} -[側鏈](/developers/docs/scaling/sidechains/)是一種獨立運行的區塊鏈,透過雙向跨鏈橋連線到以太坊主網。 [跨鏈橋](/bridges/)讓使用者可以在兩條區塊鏈之間交換代幣,以便在側鏈進行交易,降低了以太坊主網上的擁塞並增加了可擴展性。 側鏈使用獨立的共識機制,並且它們通常比以太坊主網小得多。 因此,將資產橋接到這些區塊鏈會增加風險;由於側鏈模型中缺少從以太坊主網繼承的安全保證,在側鏈受到攻擊時,使用者會承擔資金損失的風險。 +[側鏈](/developers/docs/scaling/sidechains/)是一種獨立運行的區塊鏈,透過雙向跨鏈橋連接到以太坊主網。 [跨鏈橋](/bridges/)讓使用者可以在兩條區塊鏈之間交換代幣,以便在側鏈上進行交易,從而減少以太坊主網的擁塞並提高可擴展性。 +側鏈使用獨立的共識機制,並且它們通常比以太坊主網小得多。 因此,將資產橋接到這些區塊鏈會增加風險;由於側鏈模型中缺少從以太坊主網繼承的安全保證,在側鏈受到攻擊時,使用者會承擔資金損失的風險。 相反,Plasma 鏈的安全性來自主網。 這使其明顯比側鏈更安全。 側鏈和 Plasma 鏈都可以使用不同的共識協定。但區別是,Plasma 鏈在以太坊主網上發佈每個區塊的默克爾根。 區塊根是小段的資訊,可用於驗證在 Plasma 鏈上進行的相關交易的資訊。 如果 Plasma 鏈受到攻擊,使用者可以使用適當的證明來安全地將資金提取回主網。 -### Plasma 與分片 {#plasma-vs-sharding} +### Plasma vs 分片 {#plasma-vs-sharding} Plasma 鏈和分片鏈都會定期向以太坊主網發佈加密證明。 然而,它們的安全屬性有所不同。 @@ -156,20 +157,20 @@ Plasma 鏈和分片鏈都會定期向以太坊主網發佈加密證明。 然而 Plasma 有所不同,因爲主網只接收最少量的子鏈狀態資訊。 這意味著主網無法有效驗證子鏈上進行的交易,降低了交易的安全性。 -**請注意**,以太坊區塊鏈分片已經不再包含在開發藍圖中。 它已經被卷軸和 [Danksharding](/roadmap/danksharding) 擴張所取代。 +**注意**:以太坊區塊鏈分片已不在開發藍圖中。 它已被透過卷軸和 [Danksharding](/roadmap/danksharding) 進行的擴張所取代。 ### 使用 Plasma {#use-plasma} 有多項專案提供 Plasma 實作,歡迎整合到你的去中心化應用程式: -- [Polygon](https://polygon.technology/)(前身為 Matic 網路) +- [Polygon](https://polygon.technology/)(前身為 Matic Network) ## 延伸閱讀 {#further-reading} -- [瞭解 Plasma](https://www.learnplasma.org/en/) -- [「共用安全性」的含義及其重要性概覽](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/) -- [側鏈、Plasma 與分片](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html) -- [瞭解 Plasma,第一部分:基礎知識](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics) +- [學習 Plasma](https://www.learnplasma.org/en/) +- [快速提醒您「共享安全性」的含義及其重要性](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/) +- [側鏈 vs Plasma vs 分片](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html) +- [了解 Plasma,第 1 部分:基礎知識](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics) - [Plasma 的生與死](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#) -_知道對你有幫助的社群資源嗎? 請編輯此頁面並新增資源!_ +_知道一個曾經幫助你學習更多社區或社團資源? 歡迎在本頁自由編輯或添加內容!_