บทนำ
เอาล่ะ เพื่อนเขียนโค้ดที่รักของฉัน! ให้ฉันแนะนำคุณผ่านการผจญภัยบล็อคเชนนี้โดยใช้ประสบการณ์หลายปีในการเขียนโปรแกรมและอารมณ์ขัน
ความก้าวหน้าที่ก้าวล้ำยุคใหม่ เช่น สกุลเงินดิจิทัล เช่น Bitcoin และแอปพลิเคชันการกระจายอำนาจ (DApps) ต่างๆ ในหลายอุตสาหกรรม ได้รับอิทธิพลอย่างมากจากเทคโนโลยีบล็อกเชน โดยพื้นฐานแล้ว บล็อกเชนเป็นตัวแทนของฐานข้อมูลรวมที่บันทึกธุรกรรมในอุปกรณ์จำนวนมาก เพื่อให้แน่ใจว่าข้อมูลจะไม่สามารถแก้ไขได้เมื่อถูกบันทึกแล้ว ธุรกรรมแต่ละรายการหรือ “บล็อก” จะเชื่อมโยงกับธุรกรรมที่อยู่ก่อนหน้า ทำให้เกิดลำดับที่ไม่ขาดตอน ดังนั้นคำว่า “บล็อกเชน” โครงสร้างนี้รับประกันความโปร่งใส ความปลอดภัย และไม่เปลี่ยนแปลงของข้อมูล ซึ่งเป็นคุณสมบัติที่สำคัญสำหรับแอปพลิเคชันจำนวนมาก
จาวาสคริปต์ในบล็อคเชน
JavaScript โดดเด่นในฐานะภาษาการเขียนโปรแกรมที่หลากหลายและมีชื่อเสียง ซึ่งมีประโยชน์อย่างยิ่งต่อการสร้างโซลูชันบล็อกเชน ระบบนิเวศที่กว้างขวางและการสนับสนุนชุมชนที่แข็งแกร่งทำให้การพัฒนาแอปพลิเคชันบล็อกเชนง่ายขึ้นโดยนำเสนอข้อดีหลายประการ:
- การนำไปใช้อย่างกว้างขวาง: เนื่องจาก Javascript เป็นภาษาหลักที่ใช้สำหรับการพัฒนาเว็บ จึงชัดเจนมากที่จะมีแอปพลิเคชันในภูมิทัศน์บล็อกเชนพร้อมกับเว็บแอปพลิเคชัน
- การประมวลผลแบบอะซิงโครนัส: ความสามารถแบบอะซิงโครนัสของ JavaScript ซึ่งอำนวยความสะดวกโดย Node.js เหมาะอย่างยิ่งสำหรับการจัดการธุรกรรมและการโต้ตอบหลายรายการในสภาพแวดล้อมบล็อกเชน
- ระบบนิเวศที่สมบูรณ์: เครื่องมือและไลบรารีในระบบนิเวศของ JavaScript เช่น Node.js สำหรับการพัฒนาฝั่งเซิร์ฟเวอร์และ Express.js สำหรับ API ปรับปรุงการพัฒนาแอปพลิเคชันบล็อคเชน
ผู้ชม
ในฐานะนักพัฒนา JavaScript ผู้ช่ำชองและมีประสบการณ์หลายปี ผมขอแนะนำบทความนี้ให้กับทุกคนที่ต้องการขยายทักษะและดำดิ่งสู่โลกแห่งเทคโนโลยีบล็อกเชนอันน่าทึ่ง คู่มือนี้จะแนะนำคุณตลอดขั้นตอนการตั้งค่าสภาพแวดล้อมการพัฒนา แบ่งแนวคิดที่ซับซ้อนออกเป็นพื้นฐานที่เข้าใจได้ ช่วยคุณสร้างแอปพลิเคชันบล็อกเชนพื้นฐาน และเปิดเผยผ่าน API ที่ใช้งานง่ายในท้ายที่สุด ไม่ว่าคุณจะกระตือรือร้นที่จะเรียนรู้หรือต้องการเพิ่มบรรทัดใหม่ให้กับนักพัฒนาของคุณ บทความนี้เป็นแหล่งข้อมูลอันล้ำค่าสำหรับการเดินทางของคุณ
บทที่ 1: การตั้งค่าสภาพแวดล้อมการพัฒนา
การติดตั้ง Node.js
- ดาวน์โหลด node js บนระบบของคุณจากเว็บไซต์อย่างเป็นทางการ และต้องการเวอร์ชัน LTS (การสนับสนุนระยะยาว) เนื่องจากแนะนำว่าดีที่สุดสำหรับระบบปฏิบัติการทั้งหมดและรักษาความเสถียร
- ปฏิบัติตามคำแนะนำในการติดตั้งเฉพาะสำหรับระบบปฏิบัติการของคุณ การติดตั้งประกอบด้วย npm (Node Package Manager) ซึ่งจำเป็นสำหรับการจัดการการขึ้นต่อกันของโปรเจ็กต์
- ตรวจสอบว่าการติดตั้งทำอย่างถูกต้องหรือไม่โดยการรันคำสั่งต่อไปนี้ใน bash:
- โหนด -v
- npm -v
เมื่อคุณดำเนินการตามคำสั่งที่กำหนดแล้ว คุณควรค้นหาเวอร์ชันที่เกี่ยวข้องของแพ็คเกจที่ติดตั้งในระบบของคุณ โดยถือว่ากระบวนการติดตั้งสำเร็จ
การเลือก IDE
การเลือก JavaScript เป็นภาษาการเขียนโปรแกรมของคุณ Visual Studio Code (VSCode) เป็นเพื่อนที่ยอดเยี่ยมในการจัดการกับข้อกำหนดการพัฒนาทั้งหมดของคุณ ความสามารถอันทรงพลังและสภาพแวดล้อมที่ปรับเปลี่ยนได้ทำให้เหมาะอย่างยิ่งสำหรับการพัฒนา JavaScript
- รหัส Visual Studio:
- ดาวน์โหลด VsCode จากเว็บไซต์อย่างเป็นทางการ
- ติดตั้งส่วนขยายดังนี้:
- ESLint: สำหรับการระบุและแก้ไขปัญหาในโค้ด JavaScript
- สวยกว่า: สำหรับการจัดรูปแบบโค้ดที่สอดคล้องกัน
- ดีบักเกอร์สำหรับ Chrome: สำหรับการดีบักโค้ด JavaScript ที่ทำงานใน Google Chrome
- Node.js: สำหรับความสามารถในการแก้ไขจุดบกพร่องของ Node.js
การติดตั้งไลบรารีที่จำเป็น
การจัดการไลบรารี JavaScript ทำได้ผ่าน npm (Node Package Manager) ในการเริ่มต้นโครงการของคุณและติดตั้งแพ็คเกจที่จำเป็น ให้ใช้คำสั่งต่อไปนี้:
npm init -y npm ติดตั้ง express body-parser crypto //express เป็น เฟรมเวิร์กโหนด |
บทที่ 2: ทำความเข้าใจแนวคิดบล็อกเชนด้วย JavaScript
พื้นฐานบล็อคเชนใน JavaScript
บล็อกเชนประกอบด้วยบล็อกซึ่งประกอบด้วย:
- ดัชนี: ตำแหน่งของบล็อกในห่วงโซ่
- การประทับเวลา: วันที่และเวลาที่สร้างบล็อก
- ข้อมูล: ข้อมูลธุรกรรมหรือข้อมูลอื่น ๆ ที่เก็บไว้ในบล็อก
- Previous Hash: แฮชของบล็อกก่อนหน้าในห่วงโซ่ เชื่อมโยงบล็อกเข้าด้วยกัน
- แฮช: ตัวระบุที่ไม่ซ้ำสำหรับบล็อก สร้างขึ้นโดยการแฮชเนื้อหา
const crypto = need(‘crypto’); class Block { |
ความสำคัญของกลไกการกระจายอำนาจ การเปลี่ยนแปลงไม่ได้ และความเห็นพ้องต้องกัน:
การกระจายอำนาจ:
ในระบบบล็อกเชน แทนที่จะอาศัยหน่วยงานกลางในการจัดเก็บข้อมูลและการตรวจสอบความถูกต้องของธุรกรรม ความรับผิดชอบจะถูกกระจายไปยังโหนดที่เข้าร่วมทั้งหมด ซึ่งหมายความว่าแต่ละโหนดจะเก็บบันทึก (หรือสำเนา) ของบัญชีแยกประเภทของตนเอง ซึ่งช่วยขจัดปัญหาที่อาจเกิดขึ้นจากจุดควบคุมเพียงจุดเดียว
ความโปร่งใส:
ในฐานะนักวิจัยที่สำรวจ Ethereum ฉันสามารถพูดได้อย่างมั่นใจว่าทุกโหนดและผู้เข้าร่วมภายในเครือข่ายสามารถเข้าถึงบัญชีแยกประเภทได้ ซึ่งรับประกันความโปร่งใสอย่างไม่เปลี่ยนแปลงทั่วทั้งระบบ ธุรกรรมใน Ethereum จะแสดงต่อสาธารณะเพื่อให้ทุกคนเห็นบน blockchain explorer โดยมอบสภาพแวดล้อมที่เปิดกว้างและโปร่งใสสำหรับทุกคนที่เกี่ยวข้อง
ความไม่เปลี่ยนรูป:
สิ่งสำคัญคือต้องคิดให้ถี่ถ้วนก่อนที่จะทำธุรกรรมให้เสร็จสิ้น เนื่องจากโดยทั่วไปแล้วการเปลี่ยนแปลงหรือการกลับรายการจะเป็นไปไม่ได้หลังจากข้อเท็จจริงแล้ว คุณลักษณะนี้มีประโยชน์ในการหลีกเลี่ยงการฉ้อโกงและธุรกรรมที่ซ้ำกัน
กลไกฉันทามติ:
ในเครือข่าย กลไกฉันทามติทำหน้าที่เป็นแนวทางสำหรับโหนดในการตัดสินใจร่วมกันเกี่ยวกับสถานะปัจจุบันของบัญชีแยกประเภทแบบกระจาย กลไกเหล่านี้เป็นเครื่องมือในการตรวจสอบและรับรองความถูกต้องของธุรกรรม พวกเขารับประกันว่าโหนดที่เข้าร่วมทั้งหมดใน Distributed Ledger Technology (DLT) เห็นด้วยกับสถานะของบัญชีแยกประเภท
ส่วนประกอบของแอปพลิเคชันบล็อคเชน
โครงสร้างบล็อกใน JavaScript:
const crypto = need(‘crypto’); class Block { calculateHash { mineBlock(ความยาก) { |
การสร้างและการตรวจสอบธุรกรรมโดยใช้ JavaScript:
ในบล็อกเชน แต่ละธุรกรรมทำหน้าที่เป็นหน่วยพื้นฐานของข้อมูล ซึ่งแสดงถึงการเปลี่ยนแปลงมูลค่า การดำเนินการตามข้อตกลง หรือการเปลี่ยนแปลงใดๆ ในสถานะโดยรวมของบล็อกเชน ระบบรวบรวมธุรกรรมเหล่านี้ไว้ด้วยกันภายในบล็อคแล้วผนวกเข้ากับบล็อคเชน
รายละเอียดของธุรกรรม:
- ผู้ส่ง: กุญแจสาธารณะหรือการระบุเฉพาะของผู้ที่ส่งไป
- ผู้รับ: กุญแจสาธารณะหรือข้อมูลประจำตัวเฉพาะของผู้โชคดีที่ได้รับธุรกรรม
- จำนวนเงิน: สิ่งที่ถูกส่งผ่านไป ไม่ว่าจะเป็นเงินหรือข้อมูลบางอย่าง
- การประทับเวลา: เมื่อพวกเขาตัดสินใจที่จะกดส่งสิ่งนี้
- หลักฐานความถูกต้อง/ลายเซ็น: รหัสลับสุดยอดบางอย่างที่แสดงให้เห็นถึงความถูกต้องของข้อตกลงและไม่ได้ถูกแก้ไข ผู้ที่ส่งมันจะใช้รหัสลับเพื่อปิดผนึกข้อตกลง และทุกคนสามารถตรวจสอบได้ว่าเป็นของจริงด้วยรหัสสาธารณะ
ข้อมูลโค้ดสำหรับธุรกรรม:
ธุรกรรมระดับ { ตัวสร้าง (fromAddress, toAddress, จำนวน) { this.fromAddress = fromAddress; this.toAddress = toAddress; this.amount = จำนวน; this.timestamp = ใหม่ Date.toISOString; } calculateHash { ส่งคืน crypto.createHash(‘sha256’) < br/>.update(this.fromAddress + this.toAddress + this.amount + this.timestamp) .digest(‘hex’); } signTransaction(signingKey) { const hashTx = this.calculateHash; if (!this.signature || this.signature.length === 0) { const publicKey = ec.keyFromPublic(this.fromAddress, ‘hex’); |
การตรวจสอบธุรกรรมทำให้มั่นใจได้ถึงความถูกต้องโดยการยืนยันว่าผู้ลงนามถูกต้องตามกฎหมายและมีเงินทุนเพียงพอ โดยทั่วไปกระบวนการนี้เกี่ยวข้องกับการตรวจสอบความสมบูรณ์ของลายเซ็นดิจิทัล และตรวจสอบว่ายอดคงเหลือในบัญชีของผู้ส่งเท่ากับหรือเกินกว่ามูลค่าธุรกรรม
คลาส Blockchain { ตัวสร้าง { this.chain = [this.createGenesisBlock]; this.pendingTransactions = []; this.miningReward = 100; } createGenesisBlock { minePendingTransactions(miningRewardAddress) { console.log(‘บล็อกการขุดสำเร็จแล้ว !’); if (!transaction.isValid) { getBalanceOfAddress(ที่อยู่) { สำหรับ (const บล็อกของ this.chain) { if (trans.toAddress === ที่อยู่) { < br/> ยอดคงเหลือ += จำนวนธุรกรรม; } |
ภาพรวมของอัลกอริทึมที่เป็นเอกฉันท์ที่เข้ากันได้กับ JavaScript:
หลักฐานการทำงาน (PoW):
พูดง่ายๆ ก็คือ Proof of Work (มักเรียกว่าการขุด) เป็นวิธีการที่ใช้ในการตรวจสอบธุรกรรมและสร้างบล็อกใหม่ในบล็อกเชน ผู้ใช้แข่งขันกันเพื่อแก้ปัญหาทางคณิตศาสตร์ที่ซับซ้อนหรือ ‘ปริศนาการเข้ารหัส’ คนแรกที่ไขปริศนาได้จะต้องเพิ่มบล็อกถัดไปลงในห่วงโซ่ กระบวนการนี้ปลอดภัยโดยใช้อัลกอริธึมแฮช ซึ่งรับประกันความสมบูรณ์และความปลอดภัยของบล็อกเชน
พูดง่ายๆ ก็คือ เมื่อพูดถึงการนำ Proof-of-Work (PoW) ไปปฏิบัติจริง เครื่องมือสำหรับจุดประสงค์นี้จะถูกนำเสนอภายใน Bitcoin Development Suite ซึ่งรวมถึง Bitcoin Core
หลักฐานการเดิมพัน (PoS):
พูดง่ายๆ ก็คือ Proof of Stake เลือกเครื่องมือตรวจสอบความถูกต้องไม่เพียงแต่ขึ้นอยู่กับจำนวนเหรียญที่พวกเขาถือเป็นหลักประกันเท่านั้น แต่ยังพิจารณาปัจจัยต่างๆ เช่น อายุของเหรียญ และการสุ่มสัมผัสอีกด้วย กระบวนการคัดเลือกเอื้อต่อผู้ตรวจสอบความถูกต้องที่ถือเหรียญมาเป็นเวลานานและผู้ที่มีสัดส่วนการถือหุ้นสูงกว่า ขณะเดียวกันก็รับประกันความเป็นธรรมด้วยค่าแฮชที่ต่ำและจำนวนเงินเดิมพันรวมที่สูง เครื่องมือตรวจสอบที่ต้องการเหล่านี้จะได้รับมอบหมายให้เพิ่มบล็อกใหม่ให้กับบล็อกเชน
การใช้งานของนักพัฒนา: เครื่องมือและไลบรารีสำหรับ PoS จัดทำโดย Ethereum 2.0 SDK
หลักฐานการเดิมพันที่ได้รับมอบหมาย (DPoS):
พูดง่ายๆ ก็คือ ระบบนี้ใช้แนวทางประชาธิปไตยในการยืนยันธุรกรรมและสร้างบล็อกใหม่ โดยอนุญาตให้มีการลงคะแนนเสียงระหว่างผู้เข้าร่วม (เรียกว่า ‘ผู้ได้รับมอบหมาย’) เพื่อตรวจสอบความถูกต้องของธุรกรรมและสร้างบล็อกใหม่ในบล็อกเชน
การใช้งานของนักพัฒนา: EOSIO SDK มอบเครื่องมือและไลบรารีสำหรับ DPoS
บทที่ 3: การสร้างบล็อกเชนอย่างง่ายด้วย JavaScript
ในบทช่วยสอนนี้ เราจะเจาะลึกเกี่ยวกับสถาปัตยกรรมของบล็อกเชน ครอบคลุมการสร้างคลาสที่จำเป็น เช่น บล็อก การกำหนดคุณลักษณะของบล็อก และทำความเข้าใจว่าบล็อกเหล่านี้และพารามิเตอร์เชื่อมโยงถึงกันอย่างไร
การสร้างคลาสบล็อก
บล็อกเชนตามชื่อที่แสดงถึงประกอบด้วยบล็อกและแอตทริบิวต์พื้นฐานของคลาสบล็อกแต่ละอัน เช่น:
- ดัชนี: ตัวระบุที่เป็นตัวเลขสำหรับตำแหน่งของบล็อกภายในบล็อกเชน
- การประทับเวลา: เวลาที่บล็อกถูกสร้างขึ้น
- ข้อมูล: ข้อมูลหรือธุรกรรมที่เก็บไว้ในบล็อก ซึ่งอาจรวมถึงข้อมูล เช่น รายละเอียดธุรกรรม ข้อมูลผู้ใช้ ฯลฯ
- PreviousHash: แฮชของบล็อกก่อนหน้าในห่วงโซ่ เพื่อให้มั่นใจถึงความต่อเนื่องและความปลอดภัย
- แฮช: ตัวระบุเฉพาะสำหรับบล็อก สร้างขึ้นโดยการแฮชเนื้อหาของบล็อก
- Nonce: ตัวเลขที่ใช้สำหรับอัลกอริธึม Proof of Work ซึ่งได้รับการปรับเปลี่ยนจนกว่าจะพบแฮชที่ถูกต้อง
ใช้วิธีการคำนวณแฮชของบล็อกโดยใช้ไวยากรณ์ JavaScript:
- createGenesisBlock: สร้างบล็อกแรกใน blockchain หรือที่เรียกว่า genesis block
- getLatestBlock: ดึงข้อมูลบล็อกล่าสุดใน blockchain
- adBlock: เพิ่มบล็อกใหม่ให้กับ blockchain หลังจากการขุดมัน
- isChainValid: ตรวจสอบความสมบูรณ์ของบล็อกเชนโดยตรวจสอบให้แน่ใจว่าแฮชของแต่ละบล็อกตรงกัน และแฮชก่อนหน้านั้นสอดคล้องกัน
การสร้างคลาส Blockchain
กำหนดคลาส Blockchain เพื่อจัดการห่วงโซ่และใช้วิธีการเพื่อเพิ่มบล็อกใหม่:
คลาส Blockchain { ตัวสร้าง { this.chain = [this.createGenesisBlock]; ความยากนี้ = 4; // ระดับความยากสำหรับการขุด } // วิธีการสร้าง genesis block createGenesisBlock { ส่งคืนบล็อกใหม่ (0, “01/01/2024”, “Genesis Block”, “0”); } // วิธีการดึงข้อมูลบล็อกล่าสุดในห่วงโซ่ < br/>getLatestBlock { // วิธีการเพิ่มบล็อกใหม่ให้กับเชนหลังจากการขุด // วิธีการตรวจสอบความถูกต้องของบล็อกเชน // ตรวจสอบว่า แฮชของบล็อกปัจจุบันถูกต้อง |
บทที่ 4: การใช้กลไกฉันทามติใน JavaScript
หลักฐานการทำงาน
พูดง่ายๆ ก็คือ Proof of Work (มักเรียกว่าการขุด) เป็นระบบที่ผู้เข้าร่วมเครือข่ายหรือนักขุดแข่งขันกันเพื่อแก้ปัญหาทางคณิตศาสตร์ที่ซับซ้อนซึ่งเหมือนกับปริศนาที่มีรหัสเข้ารหัส นักขุดที่ไขปริศนาได้ก่อนจะต้องเพิ่มบล็อกถัดไปในห่วงโซ่ข้อมูลที่เรียกว่าบล็อคเชน และจะได้รับรางวัล กระบวนการนี้เกี่ยวข้องกับการใช้แฮชเพื่อรักษาบล็อคเชนให้ปลอดภัย ความซับซ้อนของปริศนาเหล่านี้ช่วยรักษาความปลอดภัยของบล็อคเชนและควบคุมความเร็วของบล็อคใหม่ที่ถูกเพิ่มเข้าไปในเชน
ในคลาส Block เรามารวมแนวคิด Proof of Work เข้าด้วยกันโดยการสร้างฟังก์ชัน ‘mineBlock’ ฟังก์ชันนี้จะปรับ nonce อย่างต่อเนื่องจนกว่าแฮชที่เข้ารหัสของบล็อกจะเป็นไปตามมาตรฐานความซับซ้อนเฉพาะ (เช่น แฮชควรเริ่มต้นด้วยจำนวนศูนย์ที่ระบุ)
ข้อมูลโค้ด:
คลาสบล็อก { ตัวสร้าง (ดัชนี, การประทับเวลา, ข้อมูล, PreviousHash = ”) { this.index = ดัชนี; this.timestamp = การประทับเวลา; this.data = ข้อมูล; this.previousHash = ก่อนหน้าHash; this.hash = this.calculateHash; this.nonce = 0; } // คำนวณแฮชของบล็อกโดยใช้ SHA-256 // การใช้หลักฐานการทำงาน |
อัปเดตคลาส Blockchain เพื่อตรวจสอบหลักฐานก่อนเพิ่มบล็อกใหม่
คลาส Blockchain { ตัวสร้าง { this.chain = [this.createGenesisBlock]; ความยากนี้ = 4; } // สร้างบล็อกกำเนิด createGenesisBlock { // รับบล็อกล่าสุดในเครือ // เพิ่มบล็อกใหม่ให้กับเชน // ตรวจสอบว่าบล็อคเชนถูกต้องหรือไม่ |
บทที่ 5: การสร้าง Blockchain API อย่างง่ายด้วย JavaScript
การพัฒนาบล็อกเชนเป็นเพียงก้าวแรกเท่านั้น จะต้องใช้งานได้จริงในชีวิตประจำวันด้วย เพื่อให้บรรลุเป้าหมายนี้ เราควรออกแบบอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้ เช่น API (Application Programming Interface) ที่ตรงไปตรงมา ซึ่งช่วยให้โต้ตอบได้ง่าย
การตั้งค่าสภาพแวดล้อม API
ในการสร้าง API ที่มีประสิทธิภาพ จำเป็นอย่างยิ่งที่จะต้องเตรียมพื้นที่ทำงานโดยการติดตั้งเครื่องมือและเฟรมเวิร์กที่จำเป็นทั้งหมดที่จำเป็นสำหรับการพัฒนา
- ติดตั้งโหนดและ npm
- เริ่มต้นโครงการของคุณด้วยคำสั่ง: npm init -y
- ติดตั้ง Express: npm ติดตั้ง express -save (Express เป็นเฟรมเวิร์กโหนด js ที่ช่วยในการสร้าง API เร็วขึ้น)
- ติดตั้ง Body parser เพื่อจัดการกับคำขอที่เข้ามา: npm install body-parser -save
การสร้าง API
เมื่อคุณเตรียมการตั้งค่าแล้ว เรามาสร้าง Application Programming Interface (API) กันต่อ อินเทอร์เฟซนี้จะช่วยให้ผู้ใช้สามารถสื่อสารกับบล็อคเชน สังเกตสถานะปัจจุบันของเชน และแม้แต่เพิ่มบล็อกใหม่เข้าไปด้วย
สร้างเซิร์ฟเวอร์ด้วย Express:
const express = need(‘express’); const bodyParser = need(‘body-parser’); const Blockchain = ต้องการ(‘./blockchain’); // นำเข้าคลาส Blockchain const app = express; ให้ demoBlockchain = Blockchain ใหม่; // เริ่มต้นอินสแตนซ์ Blockchain ใหม่ |
กำหนดจุดสิ้นสุด API
app.get(‘/blocks’, (req, res) => { //endpoint เพื่อรับ blockchain res.json(demoBlockchain.chain);}); //นี่คือจุดสิ้นสุดในการสร้างบล็อกใหม่ app.post(‘/mine’, ( คำขอ, ความละเอียด) => { |
เริ่มเซิร์ฟเวอร์
app.listen(3000, => { console.log(‘Blockchain API ทำงานบนพอร์ต 3000’); }) ; โหนด server.js |
บทที่ 6: การเรียกใช้และการทดสอบแอปพลิเคชัน
ฉันไม่สามารถเน้นย้ำถึงความสำคัญของขั้นตอนนี้มากพอเพื่อให้แน่ใจว่าบล็อกเชนของคุณทำงานได้อย่างราบรื่นและให้ผลลัพธ์ที่คุณคาดหวัง ในฐานะคนที่ใช้เวลาหลายปีในการทำงานกับเทคโนโลยีบล็อกเชนต่างๆ ฉันได้เห็นโครงการนับไม่ถ้วนล้มเหลวเนื่องจากการละเลยขั้นตอนสำคัญนี้ อย่าทำผิดพลาดแบบเดิม – ใช้เวลาในการทดสอบและปรับปรุงบล็อคเชนของคุณอย่างละเอียดก่อนที่จะเปิดตัวสู่สาธารณะ เชื่อฉัน; ผู้ใช้ของคุณจะขอบคุณสำหรับมัน!
การเรียกใช้แอปพลิเคชัน
- เริ่มต้นเซิร์ฟเวอร์: นำทางไปยังไดเร็กทอรีโปรเจ็กต์ของคุณ จากนั้นรันเป้าหมาย: node server.js
- รับการยืนยันเซิร์ฟเวอร์: Blockchain API ทำงานบนพอร์ต 3000
- การเข้าถึงแอปพลิเคชัน: ขณะนี้แอปพลิเคชันของคุณทำงานอยู่ในเครื่องบน http://localhost:3000 ทำให้พร้อมที่จะยอมรับคำขอ HTTP
การทดสอบกับบุรุษไปรษณีย์
ในฐานะนักลงทุน crypto ฉันมักจะพึ่งพาเครื่องมือเช่น Postman เพื่อให้แน่ใจว่า blockchain API ของฉันทำงานได้อย่างเหมาะสมที่สุด ด้วยบุรุษไปรษณีย์ ฉันสามารถส่งคำขอ HTTP และวิเคราะห์การตอบกลับที่ส่งคืนได้อย่างง่ายดาย เครื่องมือนี้มีค่าอย่างยิ่งเมื่อต้องทดสอบและตรวจสอบประสิทธิภาพของ API ของฉัน ทำให้การลงทุนของฉันปลอดภัยและมีประสิทธิภาพ
- ติดตั้งบุรุษไปรษณีย์
- ทดสอบจุดสิ้นสุด Blockchain
- ทดสอบจุดสิ้นสุดการขุด
- ตรวจสอบบล็อกเชน
(ขั้นตอนที่ 1) node server.js Blockchain API ทำงานบนพอร์ต 3000 //http://localhost: 3000/บล็อก (ขั้นตอนที่ 2)[ (ขั้นตอนที่ 3){ (ขั้นตอนที่ 4){ (ขั้นตอนที่ 5)[ { |
curl http://localhost:3000/blocks //ดูบล็อคเชน [ { “index”: 0, “timestamp”: 1636568887994, “data”: “Genesis Block”, “previousHash”: “0”, “hash”: “81f1a4ab4d484c64f1b4c524b1d8f2fef8f2bca7853d44682e12022fb2d803b9” } ] //การขุด blockcurl ใหม่ -X POST -H “ประเภทเนื้อหา: แอปพลิเคชัน /json” -d ‘{“data”: {“จำนวน”: 100, “ผู้ส่ง”: “John Doe”, “ผู้รับ”: “Jane Smith”}}’ http://localhost:3000/mine [ |
บทที่ 7: ตัวอย่างสดของการสร้างแอปพลิเคชันบล็อกเชนด้วย JavaScript
การดำเนินการทีละขั้นตอน
- ขั้นตอนที่ 1: สร้างคลาส Block ด้วยแอตทริบิวต์ที่จำเป็นโดยใช้ไวยากรณ์ JavaScript
คลาสบล็อก { ตัวสร้าง (ดัชนี, การประทับเวลา, ข้อมูล, PreviousHash = ”) { this.index = ดัชนี; this.timestamp = การประทับเวลา; this.data = ข้อมูล; this.previousHash = ก่อนหน้าHash; this.hash = this.calculateHash; this.nonce = 0; } } |
- ขั้นตอนที่ 2: ใช้วิธีคำนวณ Hash
calculateHash { return crypto.createHash(‘sha256’) .update(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data) + this.nonce) .digest(‘hex’); } |
- ขั้นตอนที่ 3: กำหนดคลาส Blockchain และเริ่มต้นด้วย genesis block
คลาส Blockchain { ตัวสร้าง { this.chain = [this.createGenesisBlock]; } } |
- ขั้นตอนที่ 4: ใช้วิธีการเพิ่มบล็อกใหม่และดึงข้อมูลบล็อกล่าสุดโดยใช้ JavaScript
getLatestBlock { ส่งคืน this.chain[this.chain.length – 1]; } addBlock(newBlock) { |
- ขั้นตอนที่ 5: เพิ่มฟังก์ชัน Proof of Work ให้กับคลาส Block และอัปเดตคลาส Blockchain
mineBlock(ความยาก) { ในขณะที่ (this.hash.substring(0, ความยาก) !== Array(ความยาก + 1).join(“0”)) { this.nonce++; this.hash = this.calculateHash; } } |
- ขั้นตอนที่ 6: ตั้งค่าสภาพแวดล้อม API เพื่อจัดการคำขอโดยใช้ Express
npm init -y npm install express -save //การตั้งค่าโครงการและ ไดเร็กทอรี const express = need(‘express’); //การตั้งค่าเซิร์ฟเวอร์ด่วนconst bodyParser = need(‘body-parser’); const app = express;app.use(bodyParser.json); const demoBlockchain = บล็อกเชนใหม่; app.post(‘/mine’, (req, res) => { // การสร้างบล็อกใหม่ const newBlock = ใหม่ บล็อก( โหนด server.js |
- ขั้นตอนที่ 7: ทดสอบแอปพลิเคชันโดยการขุดบล็อกใหม่และตรวจสอบบล็อคเชนโดยใช้บุรุษไปรษณีย์หรือ curl
ในบุรุษไปรษณีย์ ให้ส่งคำขอ: GET คำขอไปที่ http://localhost:3000/blocks { < br/>“data”: { “จำนวน”: 10, “ผู้ส่ง”: “อลิซ”, “ผู้รับ”: “บ๊อบ” } } ใน curl:curl http://localhost:3000/blocks |
ให้สรุปขั้นตอนข้างต้นโดยย่อ
มาดูกระบวนการทีละขั้นตอนเพื่อทำให้แอปพลิเคชันบล็อกเชนของคุณมีชีวิตขึ้นมา:
- เริ่มต้นด้วยการกำหนดคลาส Block และ Blockchain เพื่อสร้างโครงสร้างหลักของ blockchain ของคุณ
- รวม Proof of Work โดยการเพิ่มเมธอด mineBlock ให้กับคลาส Block เพื่อให้แน่ใจว่าแต่ละบล็อกจะตรงตามความยากที่จำเป็นก่อนที่จะถูกเพิ่มเข้ากับเชน
- ตั้งค่า API โดยใช้ Express ที่ช่วยให้คุณสามารถโต้ตอบกับบล็อกเชนของคุณ ช่วยให้ดำเนินการต่างๆ ได้ เช่น การดูเชนและเพิ่มบล็อกใหม่
- ดำเนินการและทดสอบแอปพลิเคชันของคุณด้วยบุรุษไปรษณีย์หรือ Curl เพื่อตรวจสอบว่าทุกอย่างทำงานได้ตามที่คาดหวัง ตั้งแต่บล็อกการขุดไปจนถึงการดึงข้อมูลบล็อกเชน
ขอให้มีความสุขในการเขียนโค้ด!!
Sorry. No data so far.
2024-08-14 21:30