Web3js

如何在 node.js 伺服器端獲取連接的錢包地址

  • April 1, 2022

我找不到在我的 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。如果您還想送出交易,您將需要訪問一個有必要資金的(後端)錢包。這基本上只是儲存在安全位置的私鑰。

引用自:https://ethereum.stackexchange.com/questions/125181