Web3js
如何在 node.js 伺服器端獲取連接的錢包地址
我找不到在我的 node.js Web 伺服器中獲取使用者在我的網站中連接的帳戶的方法。
這是我嘗試過的
const express = require('express'); const Web3 = require('web3'); const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:3000")); const app = express(); const port = process.env.PORT || 3000; app.set('view engine', 'ejs'); app.listen(port, () => { console.log("Connected!"); }); app.get('/', (request, response) => { // This is the page where user connects to their wallet and it works fine response.render('index'); }); app.get('/dashboard', async (request, response) => { // The user gets redirected to this page after connecting to their wallet in the index page console.log(web3.eth.accounts); // Returns an empty array response.render('dashboard'); });
我什至嘗試使用
getAccounts()
,我可以在網際網路上找到更多,但它仍然返回空數組。在伺服器端使用使用者的錢包地址幾乎沒有問題和答案。也許我做錯了,或者在伺服器端不可能這樣做。我對 web3 開發不是很熟悉。
你是對的——在發球區是不可能做到的。MetaMask 等瀏覽器錢包僅在前端可用。如果您希望在後端提供錢包資訊,則前端必須將數據轉發到後端。
或者,如果您希望在伺服器端使用區塊鏈,您通常有一個單獨的連接。例如,在您希望後端讀取區塊鏈數據但不要求使用者擁有(或訪問他們的)錢包的情況下,這很有用。
要使用來自後端的單獨連接(用於只讀訪問),您需要訪問某個節點 - 通常例如 Alchemy 或 Infura。如果您還想送出交易,您將需要訪問一個有必要資金的(後端)錢包。這基本上只是儲存在安全位置的私鑰。