## ICP 與其他區塊鏈比較 [toc] ### 優勢 1. 無伺服器架構 • Internet Computer 將傳統的應用程式架設從雲端伺服器轉移到區塊鏈上,開發者無需依賴 Amazon AWS、Google Cloud 等伺服器供應商。 • 使用者直接在區塊鏈上運行應用程式和服務,實現真正的去中心化。 2. 無限擴展性 • Internet Computer 採用了獨特的技術(例如 Chain Key Technology),可以水平擴展網絡容量,支援大規模的 dApps 和服務。 • 解決了許多傳統區塊鏈網絡(如 Ethereum)的性能瓶頸問題。 3. 低成本運行 • 相比其他區塊鏈,Internet Computer 提供了更低的存儲和計算成本,使去中心化應用的開發和運行更加經濟。 4. 快速交易 • Internet Computer 的交易速度接近即時(約 1-2 秒),比傳統區塊鏈的處理速度更快。 • 同時保證了高安全性和一致性。 5. 去中心化治理 • Internet Computer 使用 NNS(Network Nervous System)來實現自動化治理。持幣者可以參與網絡的升級和決策,確保區塊鏈的發展方向由社群共同決定。 6. 智能合約進化 • 它引入了「Canisters」這種進階的智能合約架構,支援更多的功能並能持久存儲大量數據。 • 可以直接使用標準化的 Web 技術(如 HTTP)訪問,方便開發者設計前端和後端。 7. 完整的 Web 支援 • Internet Computer 可以直接支持 Web 應用,使用者無需下載區塊鏈錢包或安裝插件即可訪問基於區塊鏈的應用程式。 8. 環境友好 • 相較於比特幣等高耗能的工作量證明(PoW)區塊鏈,Internet Computer 使用更節能的共識機制,減少了對能源的需求。 9. 抗審查性 • Internet Computer 的應用和服務完全運行在區塊鏈上,避免了傳統網絡服務提供商的審查或干預。 --- ### Canister 是什麼 - Canisters 是一種進階的智能合約單元,類似於傳統區塊鏈中的智能合約,但功能更強大且設計更加高效。 - 主要特點: 1. 智能合約的升級版 • Canisters 是運行在 Internet Computer 上的軟體容器。 • 它不僅能執行智能合約的邏輯,還能儲存數據,形成完整的應用程式後端。 2. 組件化設計 • 每個 Canister 是一個獨立的計算單元,包含程式碼(邏輯)和數據(狀態),讓應用可以模組化地構建。 3. 高效性能 • 它們經過優化,支援大規模高效能應用,處理數千筆交易的同時保有一致性和安全性。 • 能夠高效處理用戶請求,並且以接近即時的速度執行。 4. 支持 Web 技術 • Canisters 可以直接使用 HTTP 介面,允許用戶通過瀏覽器直接訪問。 • 這使開發者能夠用現有的 Web 技術來構建基於區塊鏈的應用。 5. 自動化的資源管理 • Canisters 自動管理其內部的計算和存儲資源,減少了開發者的負擔。 • 用戶通過支付 Cycles(Internet Computer 的資源代幣)來為 Canisters 提供計算資源。 6. 持久性數據存儲 • 與傳統智能合約不同,Canisters 支持長期存儲大規模數據,避免了使用外部存儲(如 IPFS)的需要。 7. 可升級 • Canisters 的代碼和數據是分離的,因此開發者可以更新代碼而不影響數據。 • 這解決了傳統智能合約一旦部署就難以修改的問題。 Canisters 的工作原理: • 程式碼邏輯:處理外部的請求(例如用戶的 API 調用)並執行操作。 • 存儲狀態:保存應用的持久性數據,例如用戶的交易記錄或遊戲數據。 • 與其他 Canisters 的互動:Canisters 可以彼此通信,形成一個去中心化的網絡應用。 #### Canister vs 以太坊智能合約 | 特性 | Canister(Internet Computer) | Ethereum 智能合約 | | -------- | -------- | -------- | | 功能範圍 | 可執行邏輯、持久化存儲、提供 Web 接口,支持完整應用程序 | 主要執行合約邏輯,數據存儲有限 | | 語言支持 | Motoko、Rust(生成 WebAssembly) | Solidity、Vyper | | 執行效率 | 高效(WebAssembly 執行,接近原生效能) | 中等(基於 EVM 的執行效率) | | 存儲能力 | 內建持久性存儲,可存儲大量數據 | 存儲受限,需依賴外部解決方案(如 IPFS) | | 用戶體驗 | 可直接提供 HTTP 接口,支持前端和用戶直接交互 | 需要透過 DApp 和 Web3 提供交互 | | 可升級性 | 可升級邏輯,升級不影響數據 | 無法原生升級,需通過代理合約實現 | | 擴展性 | 高,支持水平擴展,適合大規模應用 | 限制於 Ethereum 區塊鏈的吞吐量 | | 存儲成本 | 相對較低 高昂的 Gas 費用 | 高昂的 Gas 費用 | | 開發工具 | 提供 DFINITY SDK 和 Motoko 語言 | 依賴 Truffle、Hardhat 等開發工具 --- ### Internet Identity - Internet Computer 區塊鏈上的一種身份驗證系統,旨在提供安全、隱私保護且去中心化的身份管理方案。 - 它不依賴於傳統的用戶名和密碼,而是使用硬體安全模組(例如生物辨識、FIDO 安全金鑰)或其他加密設備進行驗證 #### 工作原理 1. 匿名性:每個用戶在 Internet Identity 中會分配一個匿名的身份標識符(Identity Anchor) 2. 基於設備的驗證: - 用戶使用已註冊的設備(如手機、指紋感應器或 FIDO2 金鑰)來進行身份驗證。 - 驗證後,系統生成唯一的數字簽名,確保只有該用戶能操作。 3. 去中心化:Internet Identity 完全運行在區塊鏈上,無需信任第三方服務器或中央管理機構。 4. 應用範圍: - 每個應用程式(dApp)會收到基於用戶身份的不同標識符,這些標識符在不同應用之間無法互相鏈接,保護用戶的隱私。 #### 優勢 1. 隱私保護 - 每個應用獲得的身份標識符是唯一的且不可互相追蹤,防止用戶行為被跨平台分析。 2. 高安全性 - 支持硬體安全模組(如 YubiKey)或生物辨識(如指紋或面部辨識),減少被盜風險。 #### Principal - 這是由 Internet Identity 為該用戶生成的唯一標識符 - 同一用戶對同一個應用的 Principal 是固定的 1. 同一個應用的定義 1. 應用的域名 • Internet Identity 使用應用的域名(如 https://example.com)來區分不同的應用。 • 域名是應用的主要標識,確保相同域名的應用使用一致的 Principal。 2. Canister ID • 如果應用直接運行在 Internet Computer 上,則以 Canister 的 ID 作為應用的標識。 • 每個 Canister 都有唯一的 Canister ID,例如:ryjl3-tyaaa-aaaaa-aaaba-cai。 • 如果應用中涉及多個 Canisters,則 Principal 是針對每個 Canister 唯一的。 3. Internet Identity 的作用 • Internet Identity 會基於用戶的身份和應用的域名或 Canister ID,生成該用戶對應於該應用的 匿名標識符(Principal)。 • 這樣,即使同一用戶對不同的應用使用 Internet Identity,這些應用無法共享或交叉識別用戶。 - Principal 的生成邏輯 - Internet Identity 使用用戶的身份憑證(如 WebAuthn 鍵)和應用域名作為輸入,生成唯一的 Principal。 - 公式化表示: > Principal = Hash(UserKey + AppDomain) #### 結論 - **我們不需要去碰到 user 的私鑰,都交給 Internet Identity 去驗證** - **要注意 Internet Identity 在不同的 canister 驗證,會拿到不同的 Principal** ### Boundary Nodes - Boundary Nodes 和其他區塊鏈的 RPC 節點 都扮演了類似的角色:為外部用戶(如 DApp 和瀏覽器)提供訪問區塊鏈的接口。 - 它們都負責: 1. 接收外部請求(如讀取區塊數據或發送交易)。 2. 將請求轉發到內部節點進行處理。 3. 將執行結果返回給用戶。 | 特性 | Boundary Nodes(Internet Computer) | RPC 節點(其他區塊鏈) | |----------------|-----------------------------------------------------------|---------------------------------------------| | **運營方** | 由 **DFINITY 和社區運營**,去中心化協議下管理 | 通常由 **第三方公司或個人** 維護 | | **架構設計** | 去中心化、分佈式的節點網絡,具有高冗餘和多雲部署 | 通常由中心化的服務提供商(如 Infura 或 Alchemy)運營 | | **功能範圍** | 處理 HTTP 請求,並與 Internet Computer 的子網進行路由交互 | 提供 JSON-RPC 接口,用於與區塊鏈節點交互 | | **角色定位** | 負責處理用戶 HTTP 請求,作為 Internet Computer 的外部接口 | 作為外部應用與區塊鏈節點之間的橋樑 | | **數據存儲** | 不存儲用戶數據或區塊數據,只路由和轉發請求 | 存儲區塊數據,並提供讀取功能 | | **安全性** | 基於 Internet Computer 的去中心化協議和 Chain Key 保護安全 | 由運營者自行保障安全,可能存在單點故障或攻擊風險 | | **服務對象** | 主要服務 HTTP 客戶端(如瀏覽器、DApp),支持直接返回 Web 資源 | 服務 DApp 後端,提供鏈上數據和交易執行的接口 | #### Boundary Nodes 的特點 1. 去中心化運營 - Boundary Nodes 由 DFINITY 基金會 和社區合作運營,並且是分佈式部署在全球多個基礎設施提供商上的節點。 - 不依賴單一運營者,增強了可靠性和抗審查能力。 2. 高級功能 - 除了處理傳統的區塊鏈交互(如調用 Canister 函數),Boundary Nodes 還能直接處理 Web 請求,支持返回靜態資源(如 HTML、CSS)。 - 這與傳統的 RPC 節點(僅限數據交互)不同。 3. 協議保障 - Boundary Nodes 僅作為入口網關,數據處理和執行結果均由 Internet Computer 的內部節點和共識機制保障。 - 即使某些 Boundary Nodes 出現故障或攻擊,也不會影響 Internet Computer 的運行。 #### RPC 節點的特點 - 第三方運營 - 在其他區塊鏈(如以太坊、Polygon)中,RPC 節點通常由第三方提供商(如 Infura、Alchemy)或社區運營。 - 這些提供商會運營完整節點或輕節點,為開發者提供 API 接口。 - 功能限制 - RPC 節點主要提供 JSON-RPC 接口,支持: - 查詢區塊數據(如區塊高度、交易記錄)。 - 發送交易。 - 調用智能合約。 - 它們不會處理 Web 資源,也無法直接支持用戶端(如瀏覽器)的 HTTP 請求。 - 中心化風險 - 如果大多數 RPC 節點由少數提供商控制,可能導致中心化風險(例如 Infura 的服務中斷可能影響大部分以太坊 DApp)。 #### 小結 - Boundary Nodes 是 Internet Computer 的入口網關,類似於其他區塊鏈的 RPC 節點,但它們的功能更廣泛,且完全整合在去中心化協議中。 - 運營模式的差異: - Boundary Nodes 是由 DFINITY 和社區去中心化運營。 - RPC 節點 通常是由 第三方公司運營,而非區塊鏈協議本身。 >這使得 Boundary Nodes 的安全性和可靠性更高,且更符合去中心化的區塊鏈理念。