隨著 web3 典範轉移持續重塑網際網路,開發者必須不斷尋求新方法來提升使用者參與度、推動決策民主化,並從使用鏈上應用程式的用戶身上獲取寶貴見解。收集用戶回饋的方法之一,是在 dapp 中整合回饋或問卷表單。回饋表單能填補用戶與開發者之間的溝通落差,並大規模提供即時回饋以改善應用程式,同時也能營造積極參與與集體決策的環境。
從去中心化自治組織(DAO)利用回饋表單進行鏈上治理,到企業藉此衡量員工意見,回饋表單的應用場景可說是無窮無盡。
本篇文章提供逐步教學,說明如何將回饋表單整合至您的應用程式後端,並開始收集用戶回饋。為此,我們將使用一款由 MetaMask SDK 及其他 Consensys 工具自行開發的回饋表單,名為 Form xChange。
Form xChange
無論您是希望改善 dapp 的使用者體驗、收集活動後的回饋,還是身為 DAO 成員致力於推動決策民主化,本教學都將示範如何整合回饋表單,並在您的應用程式中開啟全新的溝通管道。
什麼是 Form xChange?它如何運作?
Form xChange 是一款開源工具,專為在區塊鏈上建立與使用回饋表單而開發。雖然 Form xChange 的智能合約目前部署於 Linea,但其靈活的架構允許部署至任何 EVM 相容網路。
此平台讓參與者能夠對表單中的提案進行匿名投票,並讓參與者與表單建立者皆可查看結果,充分體現 web3 的透明精神。
Form xChange 採用以 Next.js 建構的友善介面,並透過兩個以 Solidity 撰寫的智能合約運作:FeedbackForm 合約與 FeedbackFormFactory 合約。流程相當直觀——每次建立新表單時,都會部署一個新的 FeedbackForm 合約,而這項任務由 FeedbackFormFactory 合約高效處理。
使用 Form xChange 時,用戶必須先透過 MetaMask 錢包連線並登入應用程式。部分支援的角色與職責如下:
表單建立者
可建立包含多個問題的新表單,用於收集回饋。
可在回饋收集完成後,查看各區段用戶回應的平均分數。
參與者
可在保持匿名的情況下,提交對表單或提案的回應。
可在提交回應後查看結果。
將回饋表單整合至您的 dapp,大規模收集用戶回饋
使用情境較為簡單的用戶,可直接使用已部署的 Form xChange 實例;但若您有特殊需求,希望自行託管或掌控使用者介面的外觀,那麼這部分內容正是為您而寫。
我們將說明如何將儲存庫複製至本機並啟動後端,接著將新的 Form xChange 後端部署至 Linea,最後介紹 MetaMask SDK 如何讓您輕鬆從任何平台連接用戶的 MetaMask 錢包客戶端。
本教學不涵蓋使用者介面的建構,因為這超出了本教學的範疇,但歡迎參考此儲存庫,了解如何著手建構您自己的使用者介面。
如何複製 Form xChange 後端
本節假設您的電腦已安裝 node.js v16 或以上版本,以及 Truffle 開發環境。
複製儲存庫:git clone [email protected]:Consensys/Form-XChange.git
切換至合約目錄:cd Form-XChange/packages/form-XChange
編譯合約:truffle compile
執行測試:truffle test
如何將您自己的 Form xChange 後端實例部署至 Linea
什麼是 Linea?為何要部署在 Linea 上?Linea 是一種第二類零知識以太坊虛擬機(zkEVM),以 rollup 的形式複製以太坊環境,讓開發者能以以太坊的開發體驗與安全性進行建構,同時享有更低的交易成本。
Linea 提供多項優勢,包括更快的最終確定性、與所有開發工具的相容性、與 MetaMask 的預設整合,以及高吞吐量等,使其成為部署 Form xChange 後端的絕佳選擇。
了解 Linea 是什麼以及為何是理想選擇後,讓我們深入探討如何部署至 Linea。在進行本節操作前,請確保您已安裝 MetaMask 錢包擴充功能,並持有一些 Linea ETH。請參閱說明文件以了解如何取得 Linea ETH。
執行 Truffle dashboard:truffle dashboard。
在瀏覽器中前往 localhost:24012,連接您的 MetaMask 錢包,然後從網路下拉選單中選擇 Linea。
在另一個終端機視窗中執行 truffle migrate --network dashboard。
返回 localhost:24012,在詢問您確認部署的提示中點擊確認。
完成了!您應該可以在執行 truffle migrate --network dashboard 指令的終端機視窗中看到新部署的合約地址。您可以前往 Linea 區塊瀏覽器驗證部署是否成功。
使用 MetaMask SDK 將您的 dapp 無縫連接至用戶錢包
將 Form xChange 後端部署至 Linea 後,我們希望確保用戶在與 dapp 互動時不會遇到任何困難。換言之,我們希望讓用戶能夠毫不費力地將其錢包客戶端連接至我們的 dapp。
MetaMask 是連接任何部署於 Linea 的 dapp 最有效的方式,因為 MetaMask 錢包擴充功能現已預設包含 Linea 網路選項。此外,為了簡化開發者在 dapp 中新增 MetaMask 支援的流程,MetaMask 近期發布了 MetaMask SDK,可與 JavaScript、行動裝置及遊戲平台搭配使用。
若要在您的 React 前端程式碼庫中使用 MetaMask SDK,可依照以下步驟操作:
使用 Yarn 或 NPM 安裝 MetaMask SDK:yarn add @metamask/sdk or npm install @metamask sdk
將 MetaMask SDK 匯入您的 React 專案:import { MetaMaskSDK } from '@metamask/sdk';
使用以下選項實例化 MetaMask SDK
const sdk = new MetaMaskSDK(options);
sdk.getProvider();
在 React 程式碼庫的任何位置存取 MetaMask SDK:window.ethereum.request({ method: 'eth_requestAccounts', params: [] });
使用 ethereum.request() 呼叫 eth_requestAccounts 會觸發安裝或連線彈出視窗,因此建議一律優先呼叫此函式。
請參閱 MetaMask SDK 說明文件,了解更多關於如何在 Node.js、iOS、Unity 等平台使用 MetaMask SDK 的資訊。
Form xChange 透過促進寶貴的回饋收集、提升用戶參與度及推動參與式決策,為您的 dapp 增添價值。其可在任何 EVM 相容網路上運行的能力,以及友善的使用者介面,使整合過程輕而易舉。
本教學提供了將回饋表單整合至 dapp 的完整步驟——從準備後端並部署至 Linea,到使用 MetaMask SDK 建立與 MetaMask 的連線以提升使用者體驗,您已做好充分準備,能夠在 dapp 中打造一個充滿活力且民主的環境。請永遠記住,web3 的力量就掌握在您手中!
若想進一步了解 MetaMask SDK,請前往 metamask.com/developer/sdk。