ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でブロックチェーンを構築してみよう!初心者ガイド
ビットコイン、イーサリアム、または NFT について聞いたことがありますか?これらはすべて、情報を安全かつ透過的に管理および共有する革新的な方法であるブロックチェーン テクノロジーを活用しています。
しかし、それはどのように機能するのでしょうか?最初は複雑に思えるかもしれませんが、思っているほど恐ろしいものではありません。このガイドを読めば、ブロックチェーン開発を始めたばかりの方でも、ブロックチェーン開発に親しみやすくなります。
これまでに行われたすべての取引が記録される巨大な共有ノートブックを想像してみてください。このノートブックは多くのコンピュータに分散されているため、非常に安全です。誰も過去のエントリを変更したり削除したりすることはできません。それがブロックチェーンの本質であり、永続的で信頼性の高い記録保持システムです。
ブロック: これらをノートブック内の個別のページと考えてください。各ブロックには、一連のトランザクション (購入、支払い、データ更新など)、タイムスタンプ、および前のブロックへの参照が保持されます。このリンクにより「チェーン」が作成されます。
ハッシュ: 何も改ざんされていないことを保証するために、各ブロックはハッシュと呼ばれる一意の ID を取得します。 これは指紋のようなもので、ブロックに変更を加えるとまったく異なるハッシュが作成されます。
マイニング: これは、新しいブロックがチェーンに追加される方法です。それはパズルのようなものです。マイナーは複雑な計算問題を解決し、最初にそれを解決した人には暗号通貨が与えられます。
コンセンサス: ブロックチェーンは共有されるため、全員が同じバージョンの台帳に同意する必要があります。 Proof-of-Work (PoW) や Proof-of-Stake (PoS) などのコンセンサス メカニズムにより、この合意が保証されます。
コーディングを始めましょう!核となる概念を理解するために、JavaScript を使用して簡略化されたブロックチェーンを構築します。心配しないでください。コーディングの達人である必要はありません。段階的に説明していきます。
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) }
このコードはブロックチェーン クラスを設定します。 これにはチェーン (ノートブックのようなもの) と、マイニングを難しくするか簡単にする難易度の値があります。
class Transaction { constructor(fromAddress, toAddress, amount) { this.fromAddress = fromAddress; this.toAddress = toAddress; this.amount = amount; } }
これはトランザクションを表す方法です。送信者 (fromAddress)、受信者 (toAddress)、および金額 (amount) です。
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) ); }
これらの関数は、ブロックの「フィンガープリント」ジェネレーターのようなものです。 ブロックのデータを一意のハッシュに変換し、変更の検出を容易にします。
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; }
ここで「マイニング」が行われます。 addBlock 関数は新しいブロックを作成し、proofOfWork 関数は、ブロックのハッシュが特定の数のゼロ (難易度によって決まる) で始まる値が見つかるまで、さまざまな値 (ノンス) を試します。
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; }
この関数は、各ブロックのハッシュが正しいこと、および前のハッシュが前のブロックとリンクしていることをチェックして、チェーンが改ざん防止されていることを確認します。
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
わかりますか? 実際のブロックチェーンと同じように、トランザクションを作成し、ブロックに追加し、マイニングし、さらにチェーンを検証しました。
私たちの単純なブロックチェーンでは、基本的な Proof-of-Work (PoW) コンセンサス メカニズムを使用しました。 実際のブロックチェーンは、効率性を高めるためにプルーフ・オブ・ステーク (PoS) などのより洗練された方法を使用します。これらを JavaScript で実装するには、より複雑なネットワークと分散システムの知識が必要です。
この例はほんの始まりにすぎません。 次のような機能を追加できます:
実際の環境で完全に機能する安全なブロックチェーンを作成するには、いくつかの追加の課題に取り組む必要があります。
このガイドでは、JavaScript を使用したブロックチェーン開発を実際に体験することができました。これは単純化された例ですが、より複雑な概念を検討し、強力なアプリケーションを構築するための基礎を築きます。ブロックチェーンの世界は常に進化しているので、好奇心を持ち続けて学び続けてください。
JavaScript とブロックチェーン テクノロジーを採用することで、データがより安全で透明になり、誰もがアクセスできる未来に貢献できます。
この記事が気に入った場合は、次の他の投稿も興味深いと思われるかもしれません:
以上がJavaScript でブロックチェーンを構築してみよう!初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。