Transactions

在後端集成智能合約(無需元遮罩和錢包簽名交易)

  • September 1, 2022

我有一個在前端發送交易並通過連接的錢包(元遮罩)對其進行簽名的工作dapp

我想將這種發送交易的邏輯轉移到我的後端(nodejs)。

所以不會有簽名交易或元遮罩。

我怎樣才能做到這一點 ?

嗨,這裡是Chainstack的開發倡導者!

最好的方法是使用 web3 庫;如果你想使用 JavaScript,我推薦web3.js。

請記住,您仍然需要使用您的私鑰簽署交易;它只是以程式方式完成,而不是使用 MetaMask 前端。

以下是使用 web3.js 創建和發送交易的基本程式碼。

var Web3 = require('web3');
var node_URL = 'CHAINSTACK_NODE_URL';
var web3 = new Web3(node_URL);
var Tx = require('ethereumjs-tx').Transaction;

// Logic of this code:
   // Set the addresses and private key to sign the transaction
   // Build transaction 
   // Sign and send the transaction 

// Addresses and private key
const sender = "SENDER_ADDRESS";
const receiver = "RECEIVER_ADDRESS";
const private_key = Buffer.from('PRIVATE_KEY', "hex"); 

// Build the transaction
web3.eth.getTransactionCount(sender, (err, transactionCount) => {
   const transaction_Object = {
       to: receiver,
       gasPrice: web3.utils.toHex(web3.utils.toWei("20", "gwei")),
       gasLimit: web3.utils.toHex(21000),
       nonce: web3.utils.toHex(transactionCount),
       value: web3.utils.toHex(web3.utils.toWei("0.5", "ether")),
   };

   // Signing the transaction 

   // create a new transaction object to sign 
   const tx = new Tx(transaction_Object, {
       chain: "ropsten"
   });

   // sign the transaction using the private key  
   tx.sign(private_key);

   //   Send signed transaction to the blockchain 
   const sTx = tx.serialize();
   const rawTransaction = "0x" + sTx.toString("hex");

   web3.eth.sendSignedTransaction(rawTransaction, (err, hash) => {
       console.log("TxHash:" + hash);
       console.log(err);
   });
})

這是將交易從一個帳戶發送到另一個帳戶的程式碼。您將在Node API 參考頁面上找到更多程式碼範例。

您可以通過 alchemy 或 Infura 獲得網路訪問權限,並使用 ethers.js 或 web3.js 等框架創建和簽署交易

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