פרטי השיעור
פרק 9: ולידטורים וסטייקינג
מבוא
בפרק זה נלמד כיצד להגדיר ולידטורים ומנגנון סטייקינג. ולידטורים הם המשתתפים שאחראים לאימות בלוקים חדשים וסטייקינג הוא המנגנון שבו משתמשים מפקידים מטבעות כדי להשתתף בתהליך האימות.
שלב 1: הגדרת ולידטורים
התקנת Go-Ethereum (Geth) לנוד חי
-
התקן את Go-Ethereum (Geth):
sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt update sudo apt install geth
אתחל את הבלוקצ'יין שלך עם בלוק הג'נסיס:
geth init path/to/genesis.json
הפעל את הנוד:
geth --networkid 1234 --http --http.addr "0.0.0.0" --http.port 8545 --http.api "eth,web3,personal,net,miner" --mine --miner.threads=1
שלב 2: יצירת מפתחות ולידטורים
-
צור תיקייה חדשה לפרויקט הסטייקינג שלך:
mkdir my-staking cd my-staking
אתחל פרויקט Node.js והתקן את הספריות הדרושות:
npm init -y npm install web3 express body-parser
צור קובץ בשם staking.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 validators = {}; // יצירת ולידטור חדש app.post('/createValidator', (req, res) => { const account = web3.eth.accounts.create(); validators[account.address] = { address: account.address, privateKey: account.privateKey, stake: 0 }; res.json({ address: account.address, privateKey: account.privateKey }); }); // הוספת סטייק app.post('/stake', (req, res) => { const { address, amount } = req.body; if (validators[address]) { validators[address].stake += amount; res.json({ status: 'Staked successfully' }); } else { res.status(400).json({ error: 'Validator not found' }); } }); // קבלת מידע על ולידטור app.get('/validator/:address', (req, res) => { const validator = validators[req.params.address]; if (validator) { res.json(validator); } else { res.status(400).json({ error: 'Validator not found' }); } }); app.listen(3001, () => { console.log('Staking server running on port 3001'); });
הרץ את שרת הסטייקינג:
node staking.js
הסבר:
/createValidator
: מסלול ליצירת ולידטור חדש עם כתובת ומפתח פרטי./stake
: מסלול להוספת סטייק לולידטור./validator/:address
: מסלול לקבלת מידע על ולידטור מסוים.
שלב 3: בדיקת ולידטורים וסטייקינג
-
שלח בקשה ליצירת ולידטור חדש:
curl -X POST http://localhost:3001/createValidator
שלח בקשה להוספת סטייק:
curl -X POST -H "Content-Type: application/json" -d '{"address": "<כתובת ולידטור>", "amount": 100}' http://localhost:3001/stake
שלח בקשה לקבלת מידע על ולידטור:
curl http://localhost:3001/validator/<כתובת ולידטור>