วิธีสร้าง Blockchain Cryptocurrency อย่างง่ายใน Node.js

เผยแพร่แล้ว: 2022-03-10
สรุปอย่างรวดเร็ว ↬ บทช่วย สอนนี้สาธิตวิธีสร้างสกุลเงินดิจิทัลอย่างง่ายที่เรียกว่า smashingCoin โดยใช้แนวคิดของคลาส JavaScript และ Node.js ลองใช้เลย ง่ายกว่าที่คุณคิด!

การเพิ่มขึ้นของ cryptocurrencies อย่างไม่เคยปรากฏมาก่อนและเทคโนโลยี blockchain ที่สนับสนุนได้ทำให้โลกนี้ล่มสลาย - จากจุดเริ่มต้นที่ต่ำต้อยของการเป็นแนวคิดทางวิชาการเมื่อกว่าทศวรรษที่แล้วไปจนถึงการยอมรับที่เพิ่มขึ้นในอุตสาหกรรมต่างๆ

เทคโนโลยีบล็อคเชนได้รับความสนใจอย่างมากเนื่องจากความสามารถในการปรับปรุงความปลอดภัยในสภาพแวดล้อมที่ไม่น่าเชื่อถือ บังคับใช้การกระจายอำนาจ และทำให้กระบวนการมีประสิทธิภาพ

ตามเนื้อผ้า Python เป็นภาษาการเขียนโปรแกรมโดยพฤตินัยสำหรับการพัฒนาบล็อคเชน อย่างไรก็ตาม ด้วยการแพร่หลายของเทคโนโลยีที่น่าทึ่งนี้ ตัวเลือกการพัฒนาก็เพิ่มขึ้นเช่นกัน และ Node.js ก็ไม่ได้ถูกทิ้งไว้ข้างหลัง

ในบทช่วยสอนนี้ ฉันจะพูดถึงวิธีสร้างบล็อคเชนสกุลเงินดิจิทัลอย่างง่ายใน Node.js มันจะไม่หรูหราเกินไป แต่เพียงพอที่จะช่วยให้คุณเข้าใจว่าบล็อกเชนทำงานอย่างไร

ฉันจะเรียกสกุลเงินดิจิตอลนี้ว่า smashingCoin ง่ายๆ

หากคุณเป็นนักพัฒนา JavaScript ที่ต้องการก้าวกระโดดเข้าสู่วงการคริปโตเคอเรนซี (cryptocurrency) ที่กำลังเติบโต บทความนี้จะช่วยให้คุณมีทักษะที่จำเป็นในการเริ่มต้น หรือหากคุณสงสัยว่าสิ่งต่าง ๆ ทำงานอย่างไรในโลกของสกุลเงินดิจิทัล บทช่วยสอนนี้อาจช่วยคุณตอบคำถามบางข้อของคุณได้

การอ่านที่แนะนำ : การ ทำความเข้าใจ Subresource Integrity โดย Drew McLellan

ข้อกำหนดเบื้องต้น

เพื่อทำตามบทช่วยสอนนี้ให้สำเร็จ คุณจะต้องมีสิ่งต่อไปนี้:

  • Node.js ที่ติดตั้งบนเครื่องของคุณ คุณสามารถดาวน์โหลดได้จากที่นี่;
  • โปรแกรมแก้ไขโค้ด เช่น Visual Studio Code, Sublime Text หรืออื่นๆ

มาเริ่มกันเลย…

เพิ่มเติมหลังกระโดด! อ่านต่อด้านล่าง↓

Blockchain คืออะไร?

Blockchain เป็นเทคโนโลยีที่ขับเคลื่อนสกุลเงินดิจิทัล เช่น Bitcoin และ Ethereum เป็นเทคโนโลยีบัญชีแยกประเภทสาธารณะที่เป็นนวัตกรรมใหม่ที่รักษารายการบันทึกที่เพิ่มขึ้นอย่างต่อเนื่อง เรียกว่าบล็อก ซึ่งเชื่อมต่ออย่างปลอดภัยโดยใช้การเข้ารหัส

คำว่า blockchain ได้ชื่อมาจากลักษณะที่เก็บข้อมูลการทำธุรกรรม เช่น ใน บล็อก ที่เชื่อมต่อถึงกันเพื่อสร้าง ห่วงโซ่ ขนาดของบล็อคเชนจะเพิ่มขึ้นตามจำนวนธุรกรรมที่เพิ่มขึ้น

ข้อมูลธุรกรรมที่ถูกต้องใดๆ จะถูกบันทึกลงในเครือข่ายบล็อคเชน ซึ่งควบคุมโดยกฎเพียร์ทูเพียร์ที่ผู้เข้าร่วมกำหนด ตัวอย่างเช่น ข้อมูลนี้อาจประกอบด้วย "มูลค่า" ของบล็อก เช่น ในสกุลเงินดิจิทัล บันทึกธุรกรรม (เช่น เมื่อฝ่ายต่างๆ แลกเปลี่ยนสินค้าและบริการ) หรือสิทธิ์ในการให้สิทธิ์ เช่น เมื่อเครือบันทึกข้อมูลการเป็นเจ้าของ

นอกจากข้อมูลธุรกรรมแล้ว ทุกบล็อกอาจมีแฮชเข้ารหัสของตัวเอง (ตัวระบุที่ไม่ซ้ำกันหรือรอยเท้าดิจิทัล) ค่า nonce ของตัวเอง (ตัวเลขสุ่มแบบสุ่มที่ใช้ครั้งเดียวในการคำนวณแบบเข้ารหัส) แฮชของบล็อกก่อนหน้า และการประทับเวลาของล่าสุด ธุรกรรมที่รับรองความถูกต้อง

เนื่องจากทุกบล็อกใหม่ควรชี้ไปที่บล็อกก่อนหน้า หากบล็อกถูกรวมเข้ากับเชนโดยไม่มีแฮชที่ถูกต้องของบล็อกสุดท้าย บล็อกนั้นอาจทำให้บล็อกเชนทั้งหมดไม่ถูกต้อง คุณสมบัติที่ไม่เปลี่ยนรูปนี้เป็นกุญแจสำคัญในการรักษาความปลอดภัยของบล็อคเชน

นอกจากนี้ มักจะใช้โปรโตคอลฉันทามติประเภทต่างๆ เพื่อรักษาความถูกต้องของบล็อกเชน ฉันทามติช่วยให้มั่นใจว่าผู้เข้าร่วมทุกคนเห็นด้วยกับธุรกรรมที่ตรวจสอบโดยเครือข่าย

ตัวอย่างเช่น โปรโตคอลฉันทามติที่ใช้กันทั่วไปคือการพิสูจน์การทำงาน ซึ่งมีจุดมุ่งหมายเพื่อระบุตัวเลขที่ค้นหาวิธีแก้ไขปัญหาทางคณิตศาสตร์ที่ซับซ้อนหลังจากเสร็จสิ้นการคำนวณจำนวนหนึ่ง

แนวคิดหลักของงานการพิสูจน์คือผู้เข้าร่วมในเครือข่ายบล็อคเชนควรพบว่าหมายเลขนี้ระบุได้ยาก แต่ตรวจสอบได้ง่าย ดังนั้นจึงกีดกันการสแปมและการปลอมแปลงโครงสร้างของบล็อคเชน

ในกรณีของ cryptocurrencies ส่วนใหญ่ การเพิ่มบล็อคใหม่ให้กับบล็อคเชนนั้นต้องการการแก้สมการทางคณิตศาสตร์ที่ซับซ้อน ซึ่งจะเพิ่มความยากเมื่อเวลาผ่านไปเมื่อบล็อคเชนเติบโตขึ้น ดังนั้น บุคคลใดก็ตามที่พิสูจน์ว่าพวกเขาได้ทำงานโดยการแก้ปัญหานี้จะได้รับการชดเชยด้วยสกุลเงินดิจิทัล ในกระบวนการที่เรียกว่า "การขุด"

วิธีการสร้างบล็อก

หลังจากที่ได้แนะนำเทคโนโลยีบล็อคเชนและวิธีการทำงานแล้ว มาดูกันว่าเราจะนำแนวคิดไปประยุกต์ใช้ในการสร้างบล็อคได้อย่างไร ดังที่ได้กล่าวไว้ก่อนหน้านี้ บล็อคเป็นสิ่งที่เชื่อมโยงถึงกันเพื่อสร้างบล็อคเชน

ในการสร้างสกุลเงิน smashingCoin ฉันจะใช้คลาส JavaScript ซึ่งเปิดตัวใน ES6

พร้อม?

มาล้างมือกันเถอะ…

นี่คือรหัสสำหรับคลาส CryptoBlock :

 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(); } }

ดังที่คุณเห็นในโค้ดด้านบน ฉันได้สร้างคลาส CryptoBlock และเพิ่มเมธอด constructor() เข้าไป เช่นเดียวกับที่ทำในคลาส JavaScript อื่นๆ จากนั้น เพื่อเริ่มต้นคุณสมบัติของมัน ฉันได้กำหนดพารามิเตอร์ต่อไปนี้ให้กับเมธอดตัว constructor :

index เป็นหมายเลขเฉพาะที่ติดตามตำแหน่งของทุกบล็อกในบล็อกเชนทั้งหมด
timestamp มันเก็บบันทึกเวลาที่เกิดขึ้นของการทำธุรกรรมแต่ละครั้งที่เสร็จสมบูรณ์
data ให้ข้อมูลเกี่ยวกับธุรกรรมที่เสร็จสมบูรณ์ เช่น รายละเอียดผู้ส่ง รายละเอียดผู้รับ และปริมาณที่ทำธุรกรรม
precedingHash มันชี้ไปที่แฮชของบล็อกก่อนหน้าในบล็อคเชน ซึ่งเป็นสิ่งสำคัญในการรักษาความสมบูรณ์ของบล็อคเชน

นอกจากนี้ ฉันใช้วิธี computeHash เพื่อคำนวณแฮชของบล็อกตามคุณสมบัติของบล็อก ตามที่ระบุในข้อมูลด้านบน

อย่างที่คุณเห็น ฉันนำเข้าไลบรารี JavaScript ของ crypto-js และใช้โมดูล crypto-js/sha256 เพื่อคำนวณแฮชของแต่ละบล็อก เนื่องจากโมดูลส่งคืนวัตถุตัวเลข ฉันจึงใช้วิธี toString() เพื่อแปลงเป็นสตริง

หากต้องการเพิ่มไลบรารี่ crypto-js ให้กับโปรเจ็กต์ของคุณ ให้ไปที่เทอร์มินัลแล้วรันคำสั่งต่อไปนี้เพื่อติดตั้งโดยใช้ npm :

 npm install --save crypto-js

หลังจากรันคำสั่งข้างต้น ไดเร็กทอรีโหนดโมดูลซึ่งมีไลบรารีและไฟล์ที่จำเป็นอื่นๆ จะถูกเพิ่มลงในโฟลเดอร์ของโปรเจ็กต์ของคุณ

วิธีสร้างบล็อคเชน

ตามที่ได้อธิบายไว้ก่อนหน้านี้ เทคโนโลยีบล็อคเชนมีพื้นฐานมาจากแนวคิดที่ว่าบล็อคทั้งหมดถูกเชื่อมโยงเข้าด้วยกัน ดังนั้น มาสร้างคลาส CryptoBlockchain ที่จะรับผิดชอบในการจัดการการดำเนินงานของห่วงโซ่ทั้งหมด นี่คือที่ที่ยางกำลังจะไปบรรจบกับถนน

คลาส CryptoBlockchain จะรักษาการทำงานของบล็อคเชนโดยใช้วิธีตัวช่วยที่ทำงานต่าง ๆ ให้สำเร็จ เช่น การสร้างบล็อกใหม่และเพิ่มลงในเชน

นี่คือรหัสสำหรับคลาส CryptoBlockchain :

 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); } }

ให้ฉันพูดถึงบทบาทของแต่ละวิธีช่วยเหลือที่ประกอบเป็นคลาส CryptoBlockchain

1. วิธีการสร้าง

วิธีนี้จะสร้างอินสแตนซ์ของบล็อกเชน ภายในตัวสร้าง ฉันสร้างคุณสมบัติ blockchain ซึ่งหมายถึงอาร์เรย์ของบล็อก ขอให้สังเกตว่าฉันส่งผ่าน startGenesisBlock() ซึ่งสร้างบล็อกเริ่มต้นในสายโซ่

2. การสร้างบล็อกปฐมกาล

ในบล็อกเชน บล็อกกำเนิดหมายถึงบล็อกแรกที่สร้างขึ้นบนเครือข่าย เมื่อใดก็ตามที่บล็อกถูกรวมเข้ากับส่วนที่เหลือของเชน บล็อกนั้นควรอ้างอิงถึงบล็อกก่อนหน้า

ในทางกลับกัน ในกรณีของบล็อกเริ่มต้นนี้ ไม่มีบล็อกก่อนหน้าที่จะชี้ไป ดังนั้นบล็อกแหล่งกำเนิดมักจะถูกฮาร์ดโค้ดลงในบล็อคเชน วิธีนี้สามารถสร้างบล็อกที่ตามมาได้ มักจะมีดัชนีเป็น 0

ฉันใช้ startGenesisBlock() เพื่อสร้างบล็อกการกำเนิด ขอให้สังเกตว่าฉันสร้างมันโดยใช้คลาส CryptoBlock ที่สร้างไว้ก่อนหน้านี้และส่งผ่าน index , timestamp , data และพารามิเตอร์ Hash precedingHash

3. รับบล็อกล่าสุด

การรับบล็อกล่าสุดในบล็อกเชนช่วยให้มั่นใจว่าแฮชของบล็อกปัจจุบันจะชี้ไปที่แฮชของบล็อกก่อนหน้า จึงเป็นการรักษาความสมบูรณ์ของเชน

ฉันใช้วิธี obtainLatestBlock() เพื่อดึงข้อมูล

4. การเพิ่มบล็อคใหม่

ฉันใช้วิธี addNewBlock() เพื่อเพิ่มบล็อกใหม่ให้กับเชน ในการทำสิ่งนี้ให้สำเร็จ ฉันตั้งค่าแฮชก่อนหน้าของบล็อกใหม่ให้เท่ากับแฮชของบล็อกสุดท้ายในเชน - เพื่อให้แน่ใจว่าเชนนั้นป้องกันการงัดแงะ

เนื่องจากคุณสมบัติของบล็อกใหม่จะเปลี่ยนไปทุกครั้งที่มีการคำนวณใหม่ การคำนวณแฮชการเข้ารหัสอีกครั้งจึงเป็นสิ่งสำคัญ หลังจากอัปเดตแฮชแล้ว บล็อกใหม่จะถูกผลักเข้าไปในอาเรย์บล็อคเชน

ในความเป็นจริง การเพิ่มบล็อคใหม่ให้กับบล็อคเชนนั้นไม่ใช่เรื่องง่ายเนื่องจากมีการตรวจสอบหลายอย่าง อย่างไรก็ตาม สำหรับสกุลเงินดิจิทัลง่ายๆ นี้ ก็เพียงพอที่จะแสดงให้เห็นว่าบล็อกเชนทำงานอย่างไร

การทดสอบ Blockchain

ตอนนี้ มาทดสอบบล็อคเชนอย่างง่ายของเราและดูว่าได้ผลหรือไม่

นี่คือรหัส:

 let smashingCoin = new CryptoBlockchain(); smashingCoin.addNewBlock(new CryptoBlock(1, "01/06/2020", {sender: "Iris Ljesnjanin", recipient: "Cosima Mielke", quantity: 50})); smashingCoin.addNewBlock(new CryptoBlock(2, "01/07/2020", {sender: "Vitaly Friedman", recipient: "Ricardo Gimenes", quantity: 100}) ); console.log(JSON.stringify(smashingCoin, null, 4));

ดังที่คุณเห็นในโค้ดด้านบน ฉันได้สร้างอินสแตนซ์ใหม่ของคลาส CryptoBlockchain และตั้งชื่อเป็น smashingCoin จากนั้น ฉันเพิ่มสองช่วงตึกในบล็อกเชนโดยใช้ค่าต่างๆ ตามอำเภอใจ ในพารามิเตอร์ data ฉันใช้วัตถุและเพิ่มรายละเอียดผู้ส่ง รายละเอียดผู้รับ และปริมาณที่ทำธุรกรรม

ถ้าฉันรันโค้ดบนเทอร์มินัล นี่คือผลลัพธ์ที่ฉันได้รับ:

blockchain มีลักษณะอย่างไรภายใต้ประทุน
การทดสอบเพื่อดูว่า blockchain ของเราใช้งานได้หรือไม่ (ตัวอย่างขนาดใหญ่)

นั่นคือสิ่งที่ smashingCoin ดูเหมือน! เป็นอ็อบเจ็กต์ที่มีคุณสมบัติ blockchain เชน ซึ่งเป็นอาร์เรย์ที่มีบล็อกทั้งหมดในเชน ดังที่คุณเห็นในภาพด้านบน แต่ละบล็อกอ้างอิงแฮชของบล็อกก่อนหน้า ตัวอย่างเช่น บล็อกที่สองอ้างอิงแฮชของบล็อกแรก หลังจากทดสอบและเห็นว่าบล็อกเชนของเราใช้งานได้ เรามาเพิ่มฟังก์ชันการทำงานบางอย่างเพื่อปรับปรุงคุณสมบัติของ smashingCoin กัน

วิธีการตรวจสอบความสมบูรณ์ของบล็อคเชน

ดังที่ได้กล่าวไว้ก่อนหน้านี้ คุณลักษณะสำคัญของบล็อคเชนคือเมื่อบล็อกถูกเพิ่มเข้าไปในเชนแล้ว จะไม่สามารถเปลี่ยนแปลงได้โดยไม่ทำให้ความสมบูรณ์ของเชนที่เหลือเป็นโมฆะ

ดังนั้นเพื่อตรวจสอบความสมบูรณ์ของบล็อคเชน ฉันจะเพิ่ม checkChainValidity() ให้กับคลาส CryptoBlockchain

แฮชมีความสำคัญต่อการรับรองความถูกต้องและความปลอดภัยของบล็อคเชน เนื่องจากการเปลี่ยนแปลงใดๆ ในเนื้อหาของบล็อกจะส่งผลให้มีการผลิตแฮชใหม่ทั้งหมด และทำให้บล็อกเชนเป็นโมฆะ

ดังนั้น วิธี checkChainValidity() จะใช้คำสั่ง if เพื่อตรวจสอบว่าแฮชของทุกบล็อกถูกดัดแปลงหรือไม่ เริ่มจากบล็อกแรกที่สร้างขึ้น มันจะวนรอบบล็อกเชนทั้งหมดและตรวจสอบความถูกต้อง โปรดทราบว่าเนื่องจากบล็อกการกำเนิดถูกฮาร์ดโค้ดแล้ว ระบบจะไม่ตรวจสอบบล็อกนั้น

นอกจากนี้ เมธอดจะตรวจสอบว่าแฮชของบล็อกสองบล็อคที่ต่อเนื่องกันชี้ไปยังอีกบล็อกหนึ่งหรือไม่ หากความสมบูรณ์ของบล็อคเชนไม่ถูกบุกรุก มันจะกลับกลายเป็นจริง มิฉะนั้น ในกรณีของความผิดปกติ จะส่งกลับค่าเท็จ

นี่คือรหัส:

 checkChainValidity(){ for(let i = 1; i < this.blockchain.length; i++){ const currentBlock = this.blockchain[i]; const precedingBlock= this.blockchain[i-1]; if(currentBlock.hash !== currentBlock.computeHash()){ return false; } if(currentBlock.precedingHash !== precedingBlock.hash) return false; } return true; }

วิธีเพิ่มหลักฐานการทำงาน

ดังที่ได้กล่าวไว้ก่อนหน้านี้ หลักฐานการทำงานเป็นแนวคิดที่ใช้เพื่อเพิ่มความยากลำบากในการขุดหรือเพิ่มบล็อกใหม่ให้กับบล็อคเชน

ในกรณีของ smashingCoin ฉันจะใช้อัลกอริธึมง่ายๆ ที่จะขัดขวางผู้คนจากการสร้างบล็อคใหม่อย่างง่ายดายหรือสแปมบล็อคเชน

ดังนั้นในคลาส CryptoBlock ฉันจะเพิ่มวิธีอื่นที่เรียกว่า proofOfWork(). โดยพื้นฐานแล้ว อัลกอริธึมอย่างง่ายนี้จะระบุตัวเลข ซึ่งส่งผ่านเป็นคุณสมบัติ difficulty ดังนั้นแฮชของทุกบล็อกจะมีเลขศูนย์นำหน้าซึ่งสอดคล้องกับระดับ difficulty นี้

การตรวจสอบให้แน่ใจว่าแฮชของทุกบล็อกเริ่มต้นด้วยจำนวนศูนย์ตามที่กำหนดไว้ในระดับ difficulty ต้องใช้พลังในการคำนวณเป็นจำนวนมาก ยิ่งระดับความยากสูงขึ้นเท่าใด ก็ยิ่งใช้เวลาในการขุดบล็อคใหม่มากขึ้นเท่านั้น

นอกจากนี้ ฉันจะเพิ่มค่า nonce แบบสุ่มให้กับทุกบล็อกที่ถูกแฮช เพื่อให้เมื่อทำการแฮชใหม่ ยังคงสามารถปฏิบัติตามข้อจำกัดระดับความยากได้

นี่คือรหัส:

 proofOfWork(difficulty){ while(this.hash.substring(0, difficulty) !==Array(difficulty + 1).join("0")){ this.nonce++; this.hash = this.computeHash(); } }

และนี่คือ computeHash() ที่อัปเดตพร้อมตัวแปร nonce :

 computeHash(){ return SHA256(this.index + this.precedingHash + this.timestamp + JSON.stringify(this.data)+this.nonce).toString(); }

นอกจากนี้ เพื่อนำกลไกการพิสูจน์การทำงานไปใช้ในการสร้างบล็อคใหม่ ฉันจะรวมไว้ใน addNewBlock() :

 addNewBlock(newBlock){ newBlock.precedingHash = this.obtainLatestBlock().hash; //newBlock.hash = newBlock.computeHash(); newBlock.proofOfWork(this.difficulty); this.blockchain.push(newBlock); }

ห่อ

นี่คือรหัสทั้งหมดสำหรับการสร้าง cryptocurrency smashingCoin โดยใช้ Node.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(); this.nonce = 0; } computeHash() { return SHA256( this.index + this.precedingHash + this.timestamp + JSON.stringify(this.data) + this.nonce ).toString(); } proofOfWork(difficulty) { while ( this.hash.substring(0, difficulty) !== Array(difficulty + 1).join("0") ) { this.nonce++; this.hash = this.computeHash(); } } } class CryptoBlockchain { constructor() { this.blockchain = [this.startGenesisBlock()]; this.difficulty = 4; } 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(); newBlock.proofOfWork(this.difficulty); this.blockchain.push(newBlock); } checkChainValidity() { for (let i = 1; i < this.blockchain.length; i++) { const currentBlock = this.blockchain[i]; const precedingBlock = this.blockchain[i - 1]; if (currentBlock.hash !== currentBlock.computeHash()) { return false; } if (currentBlock.precedingHash !== precedingBlock.hash) return false; } return true; } } let smashingCoin = new CryptoBlockchain(); console.log("smashingCoin mining in progress...."); smashingCoin.addNewBlock( new CryptoBlock(1, "01/06/2020", { sender: "Iris Ljesnjanin", recipient: "Cosima Mielke", quantity: 50 }) ); smashingCoin.addNewBlock( new CryptoBlock(2, "01/07/2020", { sender: "Vitaly Friedman", recipient: "Ricardo Gimenes", quantity: 100 }) ); console.log(JSON.stringify(smashingCoin, null, 4));

ถ้าฉันรันโค้ดบนเทอร์มินัล นี่คือผลลัพธ์ที่ฉันได้รับ:

ผลลัพธ์ของการสร้าง cryptocurrency อย่างง่ายใน Node.js
ในที่สุด cryptocurrency smashingCoin ของเรา! (ตัวอย่างขนาดใหญ่)

ดังที่คุณเห็นในภาพด้านบน ตอนนี้แฮชเริ่มต้นด้วยศูนย์สี่ตัว ซึ่งสอดคล้องกับระดับความยากที่กำหนดไว้ในกลไกการพิสูจน์การทำงาน

บทสรุป

แค่นั้นแหละ! นั่นเป็นวิธีที่คุณสามารถสร้างบล็อคเชนสกุลเงินดิจิทัลอย่างง่ายโดยใช้ Node.js

แน่นอน smashingCoin cryptocurrency นั้นยังห่างไกลจากความสมบูรณ์ ที่จริงแล้ว หากคุณปล่อยมันโดยไม่ทำการปรับปรุงเพิ่มเติม ก็ไม่น่าจะเป็นไปตามความต้องการของตลาดในปัจจุบันสำหรับสกุลเงินดิจิทัลที่ปลอดภัย เชื่อถือได้ และใช้งานง่าย — ทำให้คุณเป็นคนเดียวที่ใช้มัน!

อย่างไรก็ตาม ฉันหวังว่าบทช่วยสอนนี้จะช่วยให้คุณมีทักษะพื้นฐานที่จะช่วยให้คุณก้าวเข้าสู่โลกแห่งคริปโตอันน่าตื่นเต้น

หากคุณมีความคิดเห็นหรือคำถามใด ๆ โปรดโพสต์ไว้ด้านล่าง

แหล่งข้อมูลเพิ่มเติม

  • “Blockchain 101” CoinDesk
  • “Bitcoin: ระบบเงินสดอิเล็กทรอนิกส์แบบ Peer-to-Peer” Satoshi Nakamoto, Bitcoin.org