Rumah > hujung hadapan web > tutorial js > Mari Bina Blockchain dengan JavaScript! Panduan Pemula

Mari Bina Blockchain dengan JavaScript! Panduan Pemula

WBOY
Lepaskan: 2024-08-21 06:20:35
asal
255 orang telah melayarinya

Let

Selamat datang ke Dunia Apl Terdesentralisasi!

Pernah mendengar tentang Bitcoin, Ethereum atau NFT? Ini semua dikuasakan oleh teknologi blockchain, cara revolusioner untuk mengurus dan berkongsi maklumat dengan selamat dan telus.

Tetapi bagaimana ia berfungsi? Ia mungkin kelihatan rumit pada mulanya, tetapi percayalah, ia tidak menakutkan seperti yang didengari! Panduan ini akan menjadikan pembangunan blockchain berasa boleh diakses, walaupun anda baru bermula.

Apakah itu Blockchain? Fikirkan ia sebagai Lejar Digital

Bayangkan sebuah buku nota gergasi yang dikongsi di mana setiap transaksi yang pernah dibuat direkodkan. Buku nota ini diedarkan di banyak komputer, jadi ia sangat selamat – tiada siapa boleh menukar atau memadamkan entri yang lalu. Itulah intipati blockchain: sistem penyimpanan rekod yang kekal dan boleh dipercayai.

Pemain Utama: Memahami Bahagian-bahagian Rantaian Sekat

  1. Sekat: Anggap ini sebagai halaman individu dalam buku nota kami. Setiap blok memegang satu set transaksi (seperti pembelian, pembayaran atau kemas kini data), cap masa dan rujukan kepada blok sebelumnya. Pemautan ini mewujudkan "rantaian."

  2. Pencincangan: Untuk memastikan tiada apa-apa yang diganggu, setiap blok mendapat ID unik yang dipanggil cincang. Ia seperti cap jari dan sebarang perubahan pada blok menghasilkan cincangan yang sama sekali berbeza.

  3. Perlombongan: Beginilah cara blok baharu ditambahkan pada rantai. Ia seperti teka-teki: pelombong menyelesaikan masalah pengiraan yang kompleks, dan yang pertama menyelesaikannya mendapat ganjaran dengan mata wang kripto.

  4. Konsensus: Oleh kerana blockchain dikongsi, semua orang perlu bersetuju dengan versi lejar yang sama. Mekanisme konsensus seperti Proof-of-Work (PoW) atau Proof-of-Stake (PoS) memastikan perjanjian ini.

Membina Blockchain Pertama Kami: Hands-on dengan JavaScript

Jom dapatkan pengekodan! Kami akan membina rantaian mudah menggunakan JavaScript untuk memahami konsep teras. Jangan risau, anda tidak perlu menjadi ahli pengekodan; Saya akan memecahkannya selangkah demi selangkah.

Langkah 1: Menyediakan Rantaian Sekat: Rangka Kerja untuk Sistem Kami

class Blockchain {
  constructor() {
    this.chain = [this.createGenesisBlock()];
    this.difficulty = 2; // Adjust for mining difficulty
  }

  createGenesisBlock() {
    return {
      index: 0,
      timestamp: Date.now(),
      transactions: [],
      nonce: 0,
      previousHash: '0',
    };
  }

  getLatestBlock() {
    return this.chain[this.chain.length - 1];
  }

  // ... (more methods will be added below)
}
Salin selepas log masuk

Kod ini menyediakan kelas blockchain kami. Ia mempunyai rantai (seperti buku nota kami) dan nilai kesukaran yang menjadikan perlombongan lebih sukar atau lebih mudah.

Langkah 2: Menentukan Transaksi: Blok Pembinaan Aktiviti Blockchain

class Transaction {
  constructor(fromAddress, toAddress, amount) {
    this.fromAddress = fromAddress;
    this.toAddress = toAddress;
    this.amount = amount;
  }
}
Salin selepas log masuk

Beginilah kami mewakili urus niaga: siapa yang menghantarnya (dariAlamat), siapa yang menerimanya (keAlamat) dan berapa banyak (jumlah).

Langkah 3: Fungsi Hashing: Penjaga Integriti Data

function sha256(data) {
  // Implement SHA-256 hashing function using a library like crypto-js
  // Example using crypto-js:
  return CryptoJS.SHA256(data).toString(CryptoJS.enc.Hex);
}

function calculateHash(block) {
  return sha256(
    JSON.stringify(block.index) +
      JSON.stringify(block.previousHash) +
      JSON.stringify(block.timestamp) +
      JSON.stringify(block.transactions) +
      JSON.stringify(block.nonce)
  );
}
Salin selepas log masuk

Fungsi ini seperti penjana "cap jari" untuk blok kami. Mereka menukar data blok menjadi cincang unik, menjadikannya mudah untuk mengesan sebarang perubahan.

Langkah 4: Menambah Blok Baharu (Perlombongan): Cabaran Bukti Kerja

  addBlock(newTransactions) {
    const newBlock = {
      index: this.chain.length,
      timestamp: Date.now(),
      transactions: newTransactions,
      nonce: 0,
      previousHash: this.calculateHash(this.getLatestBlock()),
    };

    // Mine the new block (find the correct nonce)
    newBlock.nonce = this.proofOfWork(newBlock);
    newBlock.hash = this.calculateHash(newBlock);

    this.chain.push(newBlock);
    return newBlock;
  }

  proofOfWork(newBlock) {
    let nonce = 0;
    while (
      this.calculateHash(newBlock).substring(0, this.difficulty) !==
      Array(this.difficulty + 1).join('0')
    ) {
      nonce++;
      newBlock.nonce = nonce;
    }
    return nonce;
  }
Salin selepas log masuk

Di sinilah "perlombongan" berlaku. Fungsi addBlock mencipta blok baharu dan fungsi proofOfWork mencuba nilai yang berbeza (tidak sekali) sehingga ia menemui nilai yang menjadikan cincang blok bermula dengan bilangan sifar tertentu (ditentukan oleh kesukaran).

Langkah 5: Mengesahkan Rantaian: Memastikan Semuanya Beratur

  isChainValid() {
    for (let i = 1; i < this.chain.length; i++) {
      const currentBlock = this.chain[i];
      const previousBlock = this.chain[i - 1];

      if (currentBlock.previousHash !== this.calculateHash(previousBlock)) {
        return false;
      }

      if (this.calculateHash(currentBlock).substring(0, this.difficulty) !== Array(this.difficulty + 1).join('0')) {
        return false;
      }
    }
    return true;
  }
Salin selepas log masuk

Fungsi ini menyemak sama ada cincangan setiap blok adalah betul dan cincang sebelumnya dipautkan dengan blok sebelumnya, memastikan rantaian kalis gangguan.

Cubalah! Mari Berfungsikan Blockchain Kami

const blockchain = new Blockchain();

// Create some transactions
const transaction1 = new Transaction('Alice', 'Bob', 5);
const transaction2 = new Transaction('Bob', 'Charlie', 2);

// Add the transactions to a block and mine it
blockchain.addBlock([transaction1, transaction2]);

// Check if the blockchain is valid
console.log(blockchain.isChainValid()); // Outputs: true
Salin selepas log masuk

Nampak? Kami mencipta urus niaga, menambahkannya pada blok, melombongnya, dan juga mengesahkan rantaian itu – sama seperti dalam rantaian blok sebenar!

Melaksanakan Konsensus: Asas Kepercayaan dalam Sistem Terdesentralisasi

Dalam rantaian mudah kami, kami menggunakan mekanisme konsensus Bukti Kerja (PoW) asas. Blockchain sebenar menggunakan kaedah yang lebih canggih seperti Proof-of-Stake (PoS) untuk kecekapan. Melaksanakan ini dalam JavaScript memerlukan rangkaian yang lebih kompleks dan pengetahuan sistem teragih.

Meluaskan Blockchain Anda: Melangkaui Asas

Contoh ini hanyalah permulaan! Anda boleh menambah ciri seperti:

  • Kontrak Pintar: Perjanjian automatik yang dilaksanakan pada rantaian blok, menggunakan perpustakaan seperti Truffle.
  • Tokenisasi: Cipta token mata wang kripto anda sendiri menggunakan rangka kerja JavaScript yang dibina untuk penciptaan token.
  • Storan Terpencar: Simpan data terus pada rantaian blok menggunakan IPFS (Sistem Fail InterPlanet).

Daripada Bukti Konsep kepada Sedia Pengeluaran: Membina Rantaian Sekat Sebenar

Untuk mencipta rantaian blok selamat yang berfungsi sepenuhnya dalam persekitaran dunia sebenar, anda perlu menangani beberapa cabaran tambahan:

  • Komunikasi Rangkaian: Bagaimanakah semua komputer di rangkaian blockchain berkomunikasi dan berkongsi maklumat?
  • Keselamatan: Melindungi rantaian blok anda daripada serangan seperti perbelanjaan berganda atau manipulasi berniat jahat.
  • Skalabiliti: Mengendalikan sejumlah besar transaksi dan pengguna tanpa melambatkan.
  • Pengoptimuman Prestasi: Menulis kod dan struktur data yang cekap untuk memproses transaksi dengan cepat.

Masa Depan Terdesentralisasi: Membuka Kunci Potensi Blockchain dengan JavaScript

Panduan ini memberi anda rasa langsung tentang pembangunan blokchain dengan JavaScript. Walaupun ini adalah contoh ringkas, ia meletakkan asas untuk meneroka konsep yang lebih kompleks dan membina aplikasi yang berkuasa. Dunia blockchain sentiasa berkembang, jadi kekal ingin tahu dan terus belajar!

Dengan menerima JavaScript dan teknologi blockchain, anda boleh menyumbang kepada masa depan di mana data lebih selamat, telus dan boleh diakses oleh semua orang.

Baca Lagi

Jika anda menyukai artikel ini, anda mungkin mendapati siaran lain ini menarik:

  • Tutorial Perkhidmatan Mikro GrafQL
  • Cara Menilai Ramalan Kebarangkalian dengan Peraturan Pemarkahan
  • Cara Membuat Skrip Anda Muat Semula Konfigurasinya Semasa Berjalan
  • Cara Membuat Visualisasi Data Beranimasi
  • Sediakan MacBook untuk Sains Data pada 2024

Atas ialah kandungan terperinci Mari Bina Blockchain dengan JavaScript! Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan