Porto - 專為應用程式設計的新一代帳戶
原文連結: https://www.ithaca.xyz/updates/porto

我們宣布推出 Porto,一個以開發者為中心的 TypeScript 函式庫,讓您可以將身份驗證、加密貨幣支付和帳戶恢復無縫整合到您的應用程式或現有工具組(例如 Wagmi、Privy 等)中。我們對 Porto 的願景是成為驅動新一代應用的隱形基礎架構。
我們誠摯邀請應用程式和錢包開發者試用並提供回饋。立即試用:npm install porto,為函式庫加星號並貢獻程式碼,或查看智慧合約。
Porto 非常簡單且強大,具備帳戶抽象錢包的最新創新功能,例如 EIP-7702、RIP-7212、EIP-6963 和 EIP-5792。它已與該領域熱門的開發者工具(如 Wagmi 或 Privy)整合。
以下是如何使用 Porto 將帳戶連接到應用程式的簡單範例。
import { Porto } from 'porto'
const porto = Porto.create()
const account = await porto.provider.request({
method: 'experimental_connect',
params: [{ capabilities: { grantSession: true } }]
})
繼續閱讀以瞭解 Porto 的運作方式以及如何參與。
加密貨幣帳戶可以再升級
每個應用程式都需要一個帳戶,傳統上需要分別使用不同的服務進行身份驗證、支付和恢復。以賦予使用者控制其資金和數據的方式來做到這一點,是加密貨幣領域的核心挑戰。雖然加密貨幣錢包取得了長足的進展,但使用者仍然面臨著支離破碎的體驗——需要同時處理私鑰、管理跨網絡的帳戶餘額、必須安裝瀏覽器擴充程式等等。
我們相信,無阻的加密貨幣驅動帳戶應該在使用者的整個旅程中都表現出色:
- 新手引導(Onboarding): 無需管理金鑰,使用 WebAuthn 和 Passkeys。無需 KYC 的法幣入金。不需跳轉至第三方應用,透過無頭錢包提供完整的嵌入式體驗。
- 身份驗證(Verifying their identity): 使用 ZK Passport 或其他技術進行隱私保護的身份驗證。
- 安全交易(Transacting safely): 智能合約內建存取控制策略,並預設合理的安全規則。
- 隱私交易(Transacting privately): 內建隱私保護,採用隱匿地址與機密交易機制。
- 跨鏈無縫交易(Transacting seamlessly across chains): 使用單一地址並透過 ERC7683 自動處理跨鏈 Gas 費。
- 帳戶恢復(Recovering their account): 支援多種恢復方式,包括社交驗證、電子郵件、OAuth 或其他身份提供者。
- 無供應商綁定(No vendor lock-in): 無供應商鎖定,基於長期支撐以太坊的標準構建。
Porto 是我們的解決方案——一個新一代帳戶和 SDK,將這些功能整合到一個無縫的體驗中。
Porto 可跨網頁、行動和桌面平台運行,無需擴充程式或 QR 碼,將錢包直接帶到您的應用程式中。
請觀看下方由 Privy CEO Henri Stern 演示的 Privy 與 Porto 整合的實際範例。
技術概述
Porto 得益於多年來推動以太坊發展的強大標準(如 EIP-1193),以及令人興奮的即將到來的硬分叉功能,例如 EIP-7702:設定帳戶程式碼。它易於使用,並與現有工具(如 Wagmi)相容。
要親自試用 Porto,請查看 Porto GitHub 儲存庫或在 npm 上安裝 porto。繼續閱讀以瞭解有關 Porto 運作方式的更多詳細資訊。
EIP-1193 Provider
EIP-1193 通過標準化錢包與應用程式通訊的提供者介面,徹底改變了以太坊應用程式開發。這允許應用程式開發者請求帳戶、對區塊鏈更改做出反應等等,而無需自訂程式碼。
Porto 附帶一個與 EIP-1193 相容的提供者,讓您可以像使用瀏覽器擴充程式或基於應用程式的錢包(例如 provider.request({ method, params }))一樣輕鬆地使用 WebAuthn 帳戶。例如,您可以請求與目前內容中密鑰相關聯的帳戶。
import { Porto } from 'porto'
const porto = Porto.create()
const accounts = await porto.provider.request({
method: 'eth_requestAccounts'
})
實驗性 JSON-RPC 方法
為了支援基於帳戶的會話,Porto 實現了以下實驗性 JSON-RPC 方法:
- experimental_connect:連接終端使用者至應用程式。
- experimental_createAccount:建立並連接新帳戶。
- experimental_disconnect:斷開帳戶連線。
- experimental_grantSession:授予帳戶會話權限。(作為 ERC-7715 草案的極簡替代方案,期望未來能將概念上游至標準並使用 ERC-7715 或類似規範。)
- experimental_sessions:列出帳戶的活躍會話。
查看 JSON-RPC 參考以瞭解更多有關實驗性 JSON-RPC 方法和對應的 ERC 5792 功能的資訊,或試用 Porto Playground 以檢查這些方法的運作方式。
(注意:這些 JSON-RPC 方法旨在通過 ERC 上傳,或在不久的將來被棄用,以支持即將到來/現有的 ERC。它們故意簡潔,並旨在不斷迭代。)
WAGMI 支持
如今,大多數應用程式開發者不會直接使用 1193 提供者,而是使用更高級別的函式庫(如 Wagmi),這些函式庫通過將您选择的框架(例如 React、Vue)插入 EIP 1193 請求和事件來管理狀態和反應性。例如,當錢包提供者切換區塊鏈時,Wagmi 會監聽並追蹤更新。
除了內建的 1193 提供者之外,Porto 還通過 Wagmi 內建的 EIP-6963 支援與 Wagmi 相容。要開始使用,只需導入並配置 Porto 和 Wagmi 即可。
import { Porto } from 'porto'
import { http, createConfig, createStorage } from 'wagmi'
import { odysseyTestnet } from 'wagmi/chains'
Porto.create()
export const wagmiConfig = createConfig({
chains: [odysseyTestnet],
transports: {
[odysseyTestnet.id]: http(),
},
})
最後,Porto 導出一組 Wagmi 原生 JavaScript Action 和 React Hooks,使開發帳戶 session 體驗更簡單。查看 Wagmi 參考以了解更多資訊,或試用 Wagmi Porto Playground,或在 Privy 的「使用 EIP 7702 訂閱」中查看 Porto 的實際應用。
結論
Porto 代表了我們對帳戶應具備功能的願景——只需正常運作的隱形基礎架構。我們設計它時力求不帶任何主觀意見且模組化,作為希望訪問新型帳戶抽象功能的錢包的支柱。
對於開發者而言,無論您是想獲得完全嵌入式體驗還是與現有錢包流程整合,Porto 都提供了一個簡單的整合路徑。對於使用者而言,這意味著不再需要在應用程式和錢包之間切換內容,不再需要掃描 QR 碼,也不再需要考慮自己位於哪個區塊鏈上。
我們很興奮能與以下人士合作:
- 應用開發者(App Developers): 嘗試將 Porto 整合到您的應用程式中。
- 錢包團隊(Wallet Teams): 升級您的 EOA 錢包至智能合約帳戶,並盡快研究如何將 EIP-7702 整合至錢包。
- ZK 開發者(ZK Developers): 協助我們開發隱私保護帳戶功能,例如 ZK Passport 或其他技術。
- 研究人員(Researchers): 研究並提出新的跨鏈帳戶功能,例如 L1SLOAD 或 REMOTESTATICCALL。
- 智能合約開發者(Smart Contract Developers): Fork 並擴展帳戶實作。
- 基礎設施運營者(Infrastructure Operators): 協助我們進行互操作性測試。
帳戶的未來就在這裡——全球化、隱私化且無縫整合。加入我們一起開發。如果您是一位優秀的 TypeScript 開發者,我們非常樂意邀請您加入團隊,如有興趣,請聯繫我們。