פרטי השיעור
פרק 10: הגדרת עמלות עסקה
מבוא
בפרק זה נלמד כיצד להגדיר עמלות עסקה למטבע הקריפטוגרפי שלך. העמלות הן חשובות כדי לוודא שמשתמשים משלמים עבור השימוש ברשת.
שלב 1: הגדרת עמלות קבועות
-
צור קובץ בשם
transactionFees.js
עם התוכן הבא:const Web3 = require('web3'); const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const web3 = new Web3('http://localhost:8545'); // כתובת הנוד שלך app.use(bodyParser.json()); const transactionFee = web3.utils.toWei('0.01', 'ether'); // עמלה קבועה של 0.01 את'ר // שליחת טרנזקציה עם עמלה app.post('/sendTransactionWithFee', async (req, res) => { const { from, to, amount, privateKey } = req.body; const totalAmount = web3.utils.toBN(web3.utils.toWei(amount, 'ether')).add(web3.utils.toBN(transactionFee)).toString(); const signedTx = await web3.eth.accounts.signTransaction({ from, to, value: totalAmount, gas: 2000000 }, privateKey); const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction); res.json({ receipt }); }); app.listen(3002, () => { console.log('Transaction fee server running on port 3002'); });
הרץ את שרת העמלות:
node transactionFees.js
שלב 2: הגדרת עמלות דינמיות
-
עדכן את הקובץ
transactionFees.js
כך שיכלול חישוב עמלות דינמיות:
const Web3 = require('web3'); const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const web3 = new Web3('http://localhost:8545'); // כתובת הנוד שלך app.use(bodyParser.json()); // חישוב עמלה דינמית const calculateFee = () => { const baseFee = web3.utils.toWei('0.01', 'ether'); const dynamicFee = web3.utils.toBN(baseFee).add(web3.utils.toBN(Math.random() * 10000000000000000)).toString(); return dynamicFee; }; // שליחת טרנזקציה עם עמלה דינמית app.post('/sendTransactionWithDynamicFee', async (req, res) => { const { from, to, amount, privateKey } = req.body; const transactionFee = calculateFee(); const totalAmount = web3.utils.toBN(web3.utils.toWei(amount, 'ether')).add(web3.utils.toBN(transactionFee)).toString(); const signedTx = await web3.eth.accounts.signTransaction({ from, to, value: totalAmount, gas: 2000000 }, privateKey); const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction); res.json({ receipt, transactionFee: web3.utils.fromWei(transactionFee, 'ether') }); }); app.listen(3003, () => { console.log('Dynamic transaction fee server running on port 3003'); });
הרץ את שרת העמלות הדינמיות:
node transactionFees.js
שלב 3: בדיקת עמלות העסקה
-
שלח בקשה לשליחת טרנזקציה עם עמלה קבועה:
curl -X POST -H "Content-Type: application/json" -d '{"from": "<כתובת>", "to": "<כתובת>", "amount": "0.1", "privateKey": "<מפתח פרטי>"}' http://localhost:3002/sendTransactionWithFee
שלח בקשה לשליחת טרנזקציה עם עמלה דינמיות:
curl -X POST -H "Content-Type: application/json" -d '{"from": "<כתובת>", "to": "<כתובת>", "amount": "0.1", "privateKey": "<מפתח פרטי>"}' http://localhost:3003/sendTransactionWithDynamicFee
-