اذهب إلى المحتوى

السؤال

نشر

السلام عليكم يا معشر المبرمجين 

اود ان استفسر كيف مكنني برمجة تطبيق بتقنية البلوكتشين باستعمال لغة جافاسكريبت اتمنى م كل من لديه معلومة ان يساعدني او يدلني على مصادر تشرح ذلك 

 

Recommended Posts

  • 1
نشر

في معظم الأوقات يتم استخدام Python لتطوير blockchain. ومع ذلك، مع انتشار لغة جافا سكريبت أصبح من الممكن تنفيذ ذلك عن طريق Node Js، ولكن يجب عليك أولاً أن تعود لبعض المراجع لفهم آلية عمل Blockchain، وبالتالي يمكنك تطبيقها بأي تقنية أو لغة برمجة.

الفكرة الأساسية هي أنه يتم تسجيل أي بيانات معاملات صالحة في شبكة blockchain ، والتي تحكمها قواعد نظير إلى نظير أو   Peer to Peer التي يحددها المشاركون. على سبيل المثال ، يمكن أن تحتوي هذه البيانات على "قيمة" الكتلة كما هو الحال في العملات الرقمية ، أو سجل المعاملات (مثل عندما تتبادل الأطراف السلع والخدمات) ، أو امتيازات الاستحقاق مثل عندما تسجل السلسلة معلومات الملكية. إلى جانب بيانات المعاملة ، قد تحتوي كل كتلة على تجزئة التشفير الخاصة بها (معرف فريد أو بصمة رقمية) ، وقيمة nonce الخاصة بها (رقم عشوائي يستخدم مرة واحدة في حسابات التشفير) ، وتجزئة الكتلة السابقة ، وطابع زمني للأحدث المعاملات المصدق عليها.

إن أي مشارك في شبكة blockchain يجب أن يجد صعوبة في تحديد هذا الرقم ولكن يمكن التحقق منه بسهولة. وبالتالي ، فإنه لا يشجع البريد العشوائي والعبث بهيكل blockchain. في حالة معظم العملات المشفرة ، تتطلب إضافة كتلة جديدة إلى blockchain حل معادلة رياضية معقدة ، والتي تزداد صعوبة بمرور الوقت مع نمو blockchain. وبالتالي ، فإن أي شخص يثبت أنه قام بعمل من خلال حل هذه المشكلة يتم تعويضه بعملة رقمية ، في عملية يشار إليها باسم "التعدين".

 

المبدأ هو كالتالي:

لإنشاء Block يمكنك استخدام مكتبة في جافاسكريبت تدعى: crypto-js

const SHA256 = require('crypto-js/sha256');
class CryptoBlock{
    constructor(index, timestamp, data, precedingHash=" "){
     this.index = index;
     this.timestamp = timestamp;
     this.data = data;
     this.precedingHash = precedingHash;
     this.hash = this.computeHash();     
    }
    computeHash(){
        return SHA256(this.index + this.precedingHash + this.timestamp + JSON.stringify(this.data)).toString();
    }   
}

حيث يدل precedingHash على تجزئة الكتلة السابقة لكل كتلة حالية وهكذا، و data: مثل تفاصيل المرسل وتفاصيل المستلم والكمية المتبادلة.

أما دالة computeHash: فتقوم بحساب hash للبلوك اعتماداً على المعلومات المزودة ضمنه.

وبعد ذلك يمكنك إنشاء صف آخر لل blockchain كالتالي:

class CryptoBlockchain{
    constructor(){
        this.blockchain = [this.startGenesisBlock()];     
    }
    startGenesisBlock(){
        return new CryptoBlock(0, "01/01/2020", "Initial Block in the Chain", "0");
    }
    obtainLatestBlock(){
        return this.blockchain[this.blockchain.length - 1];
    }
    addNewBlock(newBlock){
        newBlock.precedingHash = this.obtainLatestBlock().hash;
        newBlock.hash = newBlock.computeHash();        
        this.blockchain.push(newBlock);
    }
}

وإضافة البيانات كالتالي:

let smashingCoin = new CryptoBlockchain();
smashingCoin.addNewBlock(new CryptoBlock(1, "01/06/2020", {sender: "Iris Ljesnjanin", recipient: "Cosima Mielke", quantity: 50}));

ملاحظة: الموضوع أعقد من ذلك بكثير ويجب عليك البحث بشكل واسع في التشفير والتقنيات الأخرى المستخدمة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...