Transactions
在後端集成智能合約(無需元遮罩和錢包簽名交易)
我有一個在前端發送交易並通過連接的錢包(元遮罩)對其進行簽名的工作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 等框架創建和簽署交易