跳至內容

如何在您的 Web3 dApp 中建立使用者回饋循環

在您的 Web3 dapp 中建立使用者回饋表單。

閱讀時間 8 分鐘
如何在您的 Web3 dApp 中建立使用者回饋循環

收集用戶反饋是實現產品市場契合度、打造成功應用程式最關鍵的步驟之一。在 web3 領域,這一點尤為重要,因為 UX 設計標準仍在發展與定義中。

對於 web3 開發者而言,收集 dapp 用戶反饋最常見的方式,仍是使用 Google 和 Mailchimp 等公司提供的中心化解決方案。然而,鏈上反饋表單現已問世。讓我們來了解這些 web3 原生反饋表單、它們對 dapp 成功的重要性,以及如何使用它們。

在先前的文章中,我們介紹了 Form-xChange:一款由 Consensys 打造的全新開源去中心化 web3 表單,並示範了如何使用 MetaMask SDK 將其整合至您的 dapp。

在本教學中,我們將在此基礎上進一步說明如何將反饋表單部署至前端,並建立新表單供用戶分享對您 dapp 的意見。但首先,讓我們快速回顧收集用戶反饋對產品開發與管理的重要性。

Web3 用戶反饋表單助力大規模普及

web3 迫切需要原生去中心化反饋表單。原因如下:

  1. 大幅降低成本: 建立表單唯一(且一次性)的費用,僅發生在部署智能合約時。若部署在 Linea 等 L2 上,費用通常不超過幾美元。

  2. 近乎無限的客製化可能性: 您可以自由設計表單,收集任何類型的反饋(文字、表情回應、連結等)。此外,由於前端與合約完全獨立,您可以依需求自訂前端介面。

  3. 按需付費: 使用去中心化表單,不會依回應數量收取分級費用。理論上,您可以記錄任意數量的回應。 若採用由用戶支付 gas 的模式,除合約部署外您無需承擔任何費用。 若選擇代替用戶支付費用,在高效率網路上運行時,費用也僅需幾美分。

  4. 可實作代幣門控: 使用去中心化表單,您可以限制哪些人能夠回應表單問題。因此,理論上您可以將存取權限制為:持有您系列 NFT 的錢包、持有一定非零 ETH 餘額的錢包,或持有您指定 ERC-20 代幣的錢包。

教學:建立您自己的去中心化用戶反饋表單

步驟一:安裝 MetaMask

我們將在 Linea 上部署合約並與其互動。為此,您需要一個已設定 Linea 網路且持有少量 LineaETH 的加密錢包。

首先,您需要一個 web3 錢包。本教學將使用 MetaMask——一款免費、易於使用且已自動設定 Linea 網路的錢包。您可以在此將 MetaMask 安裝為瀏覽器擴充功能。

注意:本教學建議使用 Brave 以外的瀏覽器(例如 Edge、Chrome、Safari 等)。撰寫本文時,Form-xChange 在 Brave 瀏覽器上存在已知問題。

新增擴充功能後,MetaMask 將引導您完成一系列步驟,包括提供您的錢包助記詞。請妥善保存此助記詞。一旦遺失,將無法找回;若遭竊,他人將可存取您的資金。

設定好錢包後,點擊 MetaMask 擴充功能左上角的網路下拉選單,開啟顯示測試網路。在新的下拉選單中,選擇 Linea Goerli 網路。若一切順利,您的錢包應如下所示:

步驟二:從水龍頭取得 LineaETH

若您是第一次使用 Linea,錢包中的 LineaETH 餘額(顯然)將為 0。

讓我們來解決這個問題。Infura 提供了一個水龍頭,每天可免費領取 0.5 LineaETH。使用此水龍頭時,您可能需要建立一個免費的 Infura 帳戶。

充值完成後,您應該會看到少量的 LineaETH 餘額:

步驟三:取得 Linea RPC 端點

使用上一步建立的帳戶再次登入 Infura,系統將自動跳轉至主控台。

在此,點擊右上角的「建立新 API 金鑰」來建立新專案。

網路請選擇 web3 API,金鑰名稱可自由設定。

金鑰建立後,您將再次跳轉至包含一系列端點的專案控制台。請記下與 Linea 測試網相關聯的端點,後續部署 Form-xChange 合約時將會用到。

步驟四:安裝 node 和 npm

Form-xChange 解決方案基於 Infura、Next.js、Truffle 和 Dapp API 的技術堆疊運行。為了安裝和使用這些技術,我們需要在本機安裝 node 和 npm。

您可以在此下載適合您作業系統的版本。

完成後,在終端機中確認版本號以驗證安裝是否成功。

$ node -v
$ npm -v
複製

步驟五:複製 Form-xChange 儲存庫

如前所述,Form-xChange 是一個開源儲存庫,原始碼已公開於 GitHub。

讓我們使用以下指令複製此儲存庫並安裝所有必要套件:

$ git clone https://github.com/Consensys/Form-XChange
$ cd Form-XChange
$ npm install
複製

在您慣用的程式碼編輯器(例如 VS Code)中開啟 Form-xChange 儲存庫。這是一個即開即用的專案,除了設定幾個環境變數外,幾乎不需要撰寫任何程式碼。

步驟六:部署反饋表單

導覽至包含 Truffle 專案和表單智能合約的子資料夾:

$ cd packages/form-XChange

在此資料夾中,您會看到一個 contracts 子資料夾,其中包含兩個主要合約:FeedbackForm 和 FeedbackFormFactory。

前者實作了一個能夠儲存問題列表及對應回應的個別表單。

後者是一個工廠合約,可用於部署前者的客製化版本。

您可以查看原始碼,並根據您想建立的表單類型進行修改。本教學將沿用預設設定。

在此步驟中,我們將部署 FeedbackFormFactory 合約,這將使我們(建立者)能夠從 Next 前端建立表單。

為此,建立一個名為 .env 的檔案,並新增以下資訊:

MNEMONIC = "< YOUR WALLET RECOVERY PHRASE >"

接著,在 truffle-config.js 檔案中,將通用 RPC 端點替換為您在步驟三中產生的 Infura 端點。最終設定檔應如下所示:

require("dotenv").config();
const mnemonic = process.env["MNEMONIC"];

const HDWalletProvider = require("@truffle/hdwallet-provider");

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1", // Localhost
      port: 9545,
      network_id: "5777",
      chain_id: 1337,
    },
    linea: {
      provider: () =>
        new HDWalletProvider(mnemonic, `< INFURA LINEA ENDPOINT >`),
      network_id: 59140,
      chain_id: 59140,
    },
  },
  mocha: {
    timeout: 100000,
  },
  compilers: {
    solc: {
      version: "0.8.13",
    },
  },
};
複製

一切就緒!執行以下指令部署反饋表單工廠合約:

$ npm run linea

若一切順利,您應該會看到類似以下的輸出結果:

> [email protected] linea
> npm run compile && npm run generate-types && npm run migrate:linea

> [email protected] compile
> truffle compile

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

> [email protected] generate-types
> typechain --target=truffle-v5 'build/contracts/*.json'

Successfully generated 5 typings!

> [email protected] migrate:linea
> truffle migrate --network linea

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

Starting migrations...
======================
> Network name:    'linea'
> Network id:      59140
> Block gas limit: 61000000 (0x3a2c940)

1_deploy_contracts.js
=====================

   Replacing 'FeedbackFormFactory'
   -------------------------------
   > transaction hash:    0x50ba2c362cb463d0b763ba5f092e3f1a8591dd9cd358f2feda035438ce02cee0
   > Blocks: 2            Seconds: 21
   > contract address:    0xBDAb1F857dC80968022784cc1C868820BFD2F7c5
   > block number:        1099121
   > block timestamp:     1688991002
   > account:             0xc361Fc33b99F88612257ac8cC2d852A5CEe0E217
   > balance:             0.62878173171592041
   > gas used:            2636875 (0x283c4b)
   > gas price:           2.500000007 gwei
   > value sent:          0 ETH
   > total cost:          0.006592187518458125 ETH

   > Saving artifacts
   -------------------------------------
   > Total cost:     0.006592187518458125 ETH

Summary
=======
> Total deployments:   1
> Final cost:          0.006592187518458125 ETH
複製

請記下合約地址,後續步驟將會用到。

步驟七:部署 Next 前端工廠

反饋表單工廠合約上線後,讓我們將注意力轉移至 Next 前端。執行以下指令導覽至 Next 應用程式專案:

$ cd ../../apps/web

我們需要將應用程式與上一步部署的合約連接。開啟 lib/contract.ts/config.ts 檔案並新增合約地址即可完成連接。

export const FEEDBACK_FACTORY_CONTRACT_ADDRESS = "< FEEDBACK FORM FACTORY CONTRACT ADDRESS >";

在 apps/web 資料夾中,再建立一個 .env 檔案,這次新增步驟三中與您專案相關聯的 Infura 金鑰。

INFURA_KEY=< YOUR INFURA API KEY >

一切就緒!現在讓我們將應用程式部署至本機:

$ npm run dev

您現在可以在 localhost:3000 查看應用程式,應如下所示:

讓我們來建立一個新表單!

使用應用程式右上角的功能連接您的 MetaMask 錢包。完成後,應用程式將自動識別您是工廠合約的部署者,因此您也是應用程式的建立者。

這將允許您從此 UI 建立新表單。

新增表單標題、描述及至少一個問題,然後點擊「建立表單」。

此操作將提示 MetaMask 批准一筆交易。請記住,系統要求您執行此操作,是因為建立表單實際上意味著建立一個新的 FeedbackForm 合約。

返回首頁,您應該會看到您的表單。現在您可以在表單上提交回應了!

請注意,您需要支付少量 gas 費用才能記錄此回應(透過 MetaMask)。

持續使用 web3 技術堆疊構建:Infura、Linea 和 MetaMask

大功告成!幾乎無需撰寫任何程式碼,我們就為 dapp 部署了一套完整的去中心化表單解決方案,不僅能夠收集用戶反饋,更能以去中心化、web3 原生的方式進行收集。Form-xChange 等專案將是推動 web2 UX 設計融入 web3 應用程式的重要一步。歡迎自由修改 Next 前端的外觀與風格,以及智能合約提供的功能。您完全可以(事實上,我們也鼓勵您)將其打造成獨具特色的作品。

AI 翻譯。可能包含錯誤。請務必核實資訊。

評價此翻譯

本文作者:

  • Clarissa Watson

    Clarissa Watson 是一位對 web3 充滿熱情的作家、行銷人員與技術專家。她擁有視覺與數位媒體文學碩士學位,以及來自 UC Berkeley 的比特幣與加密貨幣文憑。在加入 Consensys 之前,Clarissa 曾擔任 The Graph 的行銷負責人、Tactical Technology Collective 的編輯,以及 McCann 的文案撰稿人。她關於 AI 與大數據的文章曾刊載於 世界經濟論壇。在閒暇時,她熱愛閱讀詩歌,並正在學習成為原始聲音冥想(Primordial Sound Meditation)與阿育吠陀(Ayurveda)的認證從業者。

    閱讀所有文章