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.
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.
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."
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.
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.
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.
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.
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) }
Kod ini menyediakan kelas blockchain kami. Ia mempunyai rantai (seperti buku nota kami) dan nilai kesukaran yang menjadikan perlombongan lebih sukar atau lebih mudah.
class Transaction { constructor(fromAddress, toAddress, amount) { this.fromAddress = fromAddress; this.toAddress = toAddress; this.amount = amount; } }
Beginilah kami mewakili urus niaga: siapa yang menghantarnya (dariAlamat), siapa yang menerimanya (keAlamat) dan berapa banyak (jumlah).
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) ); }
Fungsi ini seperti penjana "cap jari" untuk blok kami. Mereka menukar data blok menjadi cincang unik, menjadikannya mudah untuk mengesan sebarang perubahan.
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; }
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).
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; }
Fungsi ini menyemak sama ada cincangan setiap blok adalah betul dan cincang sebelumnya dipautkan dengan blok sebelumnya, memastikan rantaian kalis gangguan.
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
Nampak? Kami mencipta urus niaga, menambahkannya pada blok, melombongnya, dan juga mengesahkan rantaian itu – sama seperti dalam rantaian blok sebenar!
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.
Contoh ini hanyalah permulaan! Anda boleh menambah ciri seperti:
Untuk mencipta rantaian blok selamat yang berfungsi sepenuhnya dalam persekitaran dunia sebenar, anda perlu menangani beberapa cabaran tambahan:
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.
Jika anda menyukai artikel ini, anda mungkin mendapati siaran lain ini menarik:
Atas ialah kandungan terperinci Mari Bina Blockchain dengan JavaScript! Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!