פרטי השיעור
פרק 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/<כתובת ולידטור>