simple-blockchain · 04
Proof of Work والتعدين
في البداية ممكن التعدين يبان كلمة كبيرة. في مشروعي هو ببساطة حلقة تغيّر قيمة
nonce إلى أن يطلع هاش يبدأ بعدد معين من الأصفار. هذا هو الـ Proof of Work.
وش يعني difficulty؟
الصعوبة تحدد كم صفر أبغى في بداية الهاش. كل ما زادت الصعوبة، احتجت محاولات أكثر. الفكرة أن إضافة بلوك جديد ما تكون مجانية تمامًا؛ لازم يصير فيه عمل حسابي.
function mine(block, difficulty) {
const target = "0".repeat(difficulty);
while (!block.hash.startsWith(target)) {
block.nonce++;
block.hash = calculateHash(block);
}
return block;
}
ليش هذا مفيد؟
لأن تعديل بلوك قديم ما يكفي فيه تغيير الهاش فقط. تحتاج تعيد التعدين لهذا البلوك واللي بعده. هنا تبدأ تفهم ليه السلسلة تصير أصعب في العبث كل ما كبرت.