บทนำ
ในฐานะนักพัฒนามากประสบการณ์และมีประสบการณ์มาหลายปี ฉันสามารถพูดได้อย่างมั่นใจว่าการทำตามขั้นตอนเหล่านี้เพื่อสร้างแอปพลิเคชันบล็อกเชนโดยใช้ Simplicity นั้นทั้งน่าตื่นเต้นและคุ้มค่า ฉันจำได้ว่าครั้งแรกที่ฉันดำดิ่งสู่โลกแห่งการพัฒนาบล็อคเชน มันเหมือนกับการค้นหาหีบสมบัติที่เต็มไปด้วยความเป็นไปได้ไม่รู้จบ!
ในฐานะนักลงทุน crypto ฉันอดไม่ได้ที่จะประหลาดใจกับการเดินทางที่เทคโนโลยีบล็อกเชนที่ไม่ธรรมดาได้เกิดขึ้น จากแนวคิดที่ค่อนข้างคลุมเครือไปจนถึงพลังการเปลี่ยนแปลงที่สร้างนิยามใหม่ของภาคส่วนต่าง ๆ ทั่วโลก การเมินเฉยต่ออิทธิพลของมันกลายเป็นเรื่องยากมากขึ้น!
เทคโนโลยีบล็อกเชนและบัญชีแยกประเภทแบบกระจายได้ปฏิวัติธุรกรรมที่ทำให้ผู้บริโภคมีในลักษณะที่ไม่เชื่อถือโดยไม่มีอำนาจกลาง บล็อกเชนมีหลักการที่แตกต่างกันในการปกป้องสกุลเงิน เช่น คีย์สาธารณะและคีย์หลัก ลายเซ็นดิจิทัล และกลไกที่เป็นเอกฉันท์
เนื่องจากความตื่นเต้นเกี่ยวกับเทคโนโลยีบล็อกเชน เราขอชี้แจงให้ชัดเจน – แท้จริงแล้วบล็อกเชนหมายความว่าอย่างไร
ในฐานะนักวิจัย ฉันพบว่าบล็อกเชนเป็นแนวคิดที่น่าสนใจซึ่งเชื่อมโยงแต่ละบล็อกเข้าด้วยกัน โดยแต่ละบล็อกประกอบด้วยข้อมูลธุรกรรมและข้อมูลที่จำเป็น ระบบกระจายอำนาจนี้ทำหน้าที่เป็นบัญชีแยกประเภทดิจิทัลที่แข็งแกร่งและปลอดภัย รับประกันความน่าเชื่อถือในทุกธุรกรรม
ในโพสต์นี้ เราจะแนะนำคุณเกี่ยวกับการสร้างแอปบล็อกเชนตั้งแต่เริ่มต้นโดยใช้ภาษาการเขียนโปรแกรม Simplicity ทีละขั้นตอน
ความเรียบง่ายในบล็อคเชน:
มาดูภาษาการเขียนโปรแกรมใหม่นี้กัน
ในขอบเขตของบล็อกเชน โดยเฉพาะอย่างยิ่งสำหรับสัญญาอัจฉริยะ มีการแนะนำภาษาการเขียนโปรแกรมใหม่ที่เรียกว่า “Simplicity” โดยมีเป้าหมายเพื่อจัดการกับความท้าทายในปัจจุบันในภาษาต่างๆ เช่น สคริปต์ Bitcoin และ EVM ของ Ethereum ความเรียบง่ายคือภาษาที่ใช้วิธีการแบบใช้ตัวผสมผสานและการพิมพ์
ภาษาที่พิมพ์คืออะไร
พูดง่ายๆ ก็คือ ภาษาที่พิมพ์จะกำหนดแนวทางสำหรับประเภทของข้อมูล (เช่น ตัวแปร นิพจน์ หรือฟังก์ชัน) ที่คุณสามารถใช้ในการดำเนินการต่างๆ ได้ โดยพื้นฐานแล้ว แต่ละองค์ประกอบข้อมูลจะมีประเภทของตัวเอง และระบบจะตรวจสอบเพื่อให้แน่ใจว่าประเภทที่ใช้รวมกันเข้ากันได้
ภาษาที่ใช้ตัวรวมคืออะไร
ในภาษาตัวรวม สัญลักษณ์ที่เรียบง่ายที่กำหนดไว้ล่วงหน้า (หรือฟังก์ชันที่เรียกว่าตัวรวม) ถูกนำมาใช้ในการคำนวณโดยการเชื่อมโยงส่วนประกอบต่างๆ เข้าด้วยกันเพื่อให้ได้ผลลัพธ์
ความเรียบง่ายแตกต่างจากภาษาโปรแกรมทั่วไปอย่างไร
โดยพื้นฐานแล้ว ภาษาโปรแกรมส่วนใหญ่มุ่งเน้นไปที่การทำให้โค้ดทำงานได้อย่างถูกต้องในแง่ของพฤติกรรมการปฏิบัติงาน (ความหมายเชิงปฏิบัติการ) อย่างไรก็ตาม ความเรียบง่ายนั้นมีเอกลักษณ์เฉพาะตัว เนื่องจากพิจารณาไม่เพียงแต่ด้านการปฏิบัติงานเท่านั้น แต่ยังรวมถึงการแสดงรหัสทางคณิตศาสตร์ที่ซ่อนอยู่ด้วย (ความหมายเชิง denotational) เพื่อชี้แจงเพิ่มเติม:
ความหมายเชิง Denotational ในความเรียบง่าย
พูดง่ายๆ ก็คือ Simplicity ปฏิบัติตามแนวทางการตีความที่เข้มงวด ซึ่งกำหนดขึ้นโดยใช้ระบบที่เรียกว่า Coq. ระบบนี้มุ่งเน้นไปที่สาระสำคัญทางคณิตศาสตร์ที่อยู่เบื้องหลังภาษามากกว่าเพียงวิธีการทำงานในระดับการปฏิบัติ โดยพื้นฐานแล้ว Coq ช่วยในการพัฒนาการพิสูจน์อย่างเป็นทางการที่กำหนดการกระทำและพฤติกรรมของ Simplicity ทั้งในด้านคณิตศาสตร์และวิทยาการคอมพิวเตอร์
ความหมายเชิงปฏิบัติการในความเรียบง่าย
ในฐานะนักวิจัย ฉันพบว่าความเรียบง่ายไม่ใช่แค่ความตรงไปตรงมาเท่านั้น แต่ยังรวมถึงความหมายในการดำเนินงานซึ่งถูกกำหนดโดยใช้เครื่องมือที่เรียกว่า Bit Machine เครื่องมือนี้ช่วยในการประเมินพื้นที่การคำนวณ เวลา และทรัพยากรที่จำเป็นในการรันโปรแกรม Simplicity เพื่อให้มั่นใจว่าโปรแกรมเหล่านั้นยังคงมีประสิทธิภาพและเป็นมิตรกับทรัพยากร
พูดง่ายๆ ก็คือ Simplicity เจริญเติบโตบนหลักการทางคณิตศาสตร์ที่แข็งแกร่ง เพื่อให้มั่นใจว่าการกระทำนั้นเป็นมากกว่าแค่การรันโค้ด พวกมันคาดเดาได้ การเขียนแบบเรียบง่ายหมายความว่าแต่ละบรรทัดมีแกนหลักเชิงตรรกะ ทำให้เชื่อถือได้เป็นพิเศษสำหรับการใช้งานบล็อกเชน
ทำไมต้องเลือกความเรียบง่าย
- ภาษาที่แสดงออก: นำเสนอเครื่องมือที่จำเป็นในการสร้างสัญญาที่ชาญฉลาด
- การวิเคราะห์แบบคงที่: ช่วยกำหนดขอบเขตบนและความซับซ้อนในการคำนวณ
- การใช้ทรัพยากรอย่างมีประสิทธิภาพ: ลดความต้องการแบนด์วิธและพื้นที่เก็บข้อมูล
- ความเป็นส่วนตัวขั้นสูง: ปรับปรุงความเป็นส่วนตัวของผู้ใช้โดยการลบรหัสที่ไม่ได้ใช้ออก
- การออกแบบที่ปลอดภัย: รักษาหลักการออกแบบของ Bitcoin เพื่อปกป้องข้อมูล
- ความหมายที่เป็นทางการ: ทำให้การให้เหตุผลเกี่ยวกับโค้ดง่ายขึ้น
การตั้งค่าสภาพแวดล้อมการพัฒนา
ขั้นตอนนี้ทำหน้าที่เป็นฐานสำหรับความก้าวหน้าในอนาคตทั้งหมด แม้ว่าการดำเนินการด้วยตนเองอาจดูน่าเบื่อ แต่เพียงปฏิบัติตามคำแนะนำที่ให้ไว้ เท่านี้คุณก็พร้อมแล้ว!
การติดตั้งความเรียบง่าย
- ไปที่พื้นที่เก็บข้อมูลอย่างเป็นทางการและดาวน์โหลด Simplicity เวอร์ชันล่าสุดหรือ
- โคลน git https://github.com/ElementsProject/simplicity.git
- ความเรียบง่ายของซีดี (คุณต้องพิมพ์สิ่งนี้ลงในเทอร์มินัลของคุณ)
- ติดตั้งการอ้างอิง: sudo apt-get install build-essential libtool autoconf
- ติดตั้ง Simplicity ตามคำแนะนำและเวอร์ชันที่เข้ากันได้กับระบบและ Build ของคุณ พิมพ์คำสั่งด้านล่างใน cmd prompt หรือเทอร์มินัล:
- ./autogen.sh
- ./กำหนดค่า
- สร้าง
- sudo ทำการติดตั้ง
- ตรวจสอบการติดตั้งโดยใช้:
simplicity -version
ไชโย! คุณได้ติดตั้งและกำหนดค่าภาษาการเขียนโปรแกรมบนระบบของคุณอย่างมีประสิทธิภาพ
การเลือก IDE
ก้าวย่างที่ถูกต้องเป็นสิ่งสำคัญ เนื่องจากการเลือกสภาพแวดล้อมการพัฒนาแบบผสมผสาน (IDE) ที่เหมาะสมโดยไม่มีการตั้งค่าที่ไม่สอดคล้องกันจะเป็นการวางรากฐานสำหรับกิจการที่กำลังจะเกิดขึ้นทั้งหมดของคุณ
Visual Studio Code (VScode) ของ Microsoft: นี่คือแพลตฟอร์มการพัฒนาแบบโอเพ่นซอร์สที่ไม่มีค่าใช้จ่าย ซึ่งได้รับความนิยมในหมู่โปรแกรมเมอร์ VScode โดดเด่นในฐานะ Integrated Development Environment (IDE) ที่นิยมใช้ เนื่องจากมีคุณสมบัติช่วยเหลือการเขียนโค้ดอัจฉริยะ เช่น การเติมข้อความอัตโนมัติและคำแนะนำโค้ด ที่เรียกว่า IntelliSense
- ติดตั้งและตั้งค่าส่วนขยายสำหรับ Simplicity:
- ไปที่เว็บไซต์อย่างเป็นทางการของ Vscode
- ดาวน์โหลดตัวติดตั้งและปฏิบัติตามคำแนะนำในข้อความแจ้ง
- เปิด Vscode และไปที่ส่วนขยายในแถบกิจกรรมหรือใช้ทางลัด: Ctrl+Shift+X
- จากนั้นตั้งค่าส่วนขยายเช่น
- ความเรียบง่าย- สำหรับภาษา
- IntelliSense-เพื่อกรอกโค้ดและรับคำแนะนำ
- Code Runner- เพื่อเรียกใช้ข้อมูลโค้ดได้อย่างง่ายดาย
- Git Lens- เพื่อประสบการณ์ git ที่ราบรื่น
เครื่องมือที่จำเป็นสำหรับงานการพัฒนา – Simplicity CLI: Simplicity Command Line Interface (CLI) มีความสำคัญอย่างยิ่ง เนื่องจากช่วยให้สามารถทำงานต่างๆ เช่น การคอมไพล์และรันโค้ด Simplicity ในระหว่างกระบวนการพัฒนา
- เปิดเทอร์มินัลหรือพรอมต์คำสั่ง
- ใช้ตัวจัดการแพ็คเกจ เช่น brew, npm หรือ apt-get (ขึ้นอยู่กับระบบปฏิบัติการของคุณ) และติดตั้ง SImplicity CLI
- สำหรับ macOS/Linux: ชงติดตั้งความเรียบง่าย-cli
- สำหรับ Windows: npm ติดตั้ง -g ความเรียบง่าย-cli
- คุณยังสามารถเยี่ยมชมพื้นที่เก็บข้อมูล CLI อย่างเป็นทางการและปฏิบัติตามคำแนะนำที่ให้ไว้ใน readme
การติดตั้งไลบรารีที่จำเป็น
เพื่อให้การติดตั้งไลบรารีที่จำเป็นง่ายขึ้น คุณสามารถใช้ตัวจัดการแพ็คเกจเพื่อประสบการณ์การติดตั้งที่ราบรื่นยิ่งขึ้น
หาก Simplicity มีตัวจัดการแพ็คเกจ ให้ใช้เช่น: simplicity install
ทำความเข้าใจแนวคิดบล็อคเชนด้วยความเรียบง่าย
ถึงเวลาพักจากการเขียนโค้ดแล้ว! เรามาเจาะลึกถึงแนวคิดพื้นฐานและสถาปัตยกรรมที่ขับเคลื่อนเทคโนโลยีบล็อกเชนกันดีกว่า
พื้นฐานบล็อคเชนในความเรียบง่าย
ในส่วนนี้ เราจะมาเจาะลึกลงไปในโครงสร้างที่ซับซ้อนของบล็อกเชน ซึ่งประกอบด้วยองค์ประกอบพื้นฐานสามประการ: บล็อก ธุรกรรม และลูกโซ่ ที่นี่ เราจะสำรวจบทบาทและการโต้ตอบของพวกเขา
- บล็อก: บล็อกเป็นเซลล์พื้นฐานและดั้งเดิมของระบบนิเวศบล็อกเชนนี้ นี่คือหน่วยพื้นฐานที่เก็บรายการธุรกรรมเฉพาะ สามารถสร้างบล็อกหรือในวงกว้างเราสามารถพูดได้ว่าขุดโดยใช้กลไกที่เป็นเอกฉันท์ต่างๆ แต่ละบล็อกจะมีชุดตัวระบุของตัวเองซึ่งสันนิษฐานว่าต้องไม่ซ้ำกันเรียกว่าแฮช
- ธุรกรรม: ธุรกรรมคือการส่งข้อมูล มูลค่า หรือสกุลเงินภายในเครือข่ายบล็อคเชนไปตามโหนดต่างๆ รายละเอียดธุรกรรมจะถูกจัดเก็บไว้ในบล็อกพร้อมๆ กันกับชุดโปรโตคอลบางชุด
- เชน: บล็อคเชนสามารถเปรียบเทียบได้กับรายการที่ลิงก์ในแง่โครงสร้างข้อมูล เช่นเดียวกับที่องค์ประกอบรายการลิงก์เชื่อมต่อกันผ่านลิงก์ บล็อกบล็อคเชนก็เชื่อมต่อกันผ่านแฮช เครือข่ายช่วยให้มั่นใจในความสมบูรณ์ของข้อมูลและความปลอดภัยโดยการเชื่อมโยงแต่ละบล็อกเข้ากับแฮชของบล็อกก่อนหน้า
คุณสมบัติหลักของบล็อคเชน: การกระจายอำนาจ ความไม่เปลี่ยนรูป และกลไกฉันทามติ
- การกระจายอำนาจ: ไม่มีหน่วยงานใดควบคุมฐานข้อมูลบล็อคเชน ซึ่งช่วยลดความเสี่ยงที่ระบบล้มเหลวหรืออคติ ผู้เข้าร่วมแต่ละคน (โหนด) จะเก็บรักษาสำเนาของบล็อคเชนเพื่อให้มั่นใจถึงความโปร่งใส
- ความไม่เปลี่ยนรูป: ข้อมูลที่ป้อนในบล็อกเชนไม่สามารถเปลี่ยนแปลงได้หากไม่แก้ไขบล็อกที่ตามมาทั้งหมด ต้องขอบคุณการเข้ารหัสแบบแฮช
- กลไกฉันทามติ: โปรโตคอลที่ทำให้แน่ใจว่าโหนดทั้งหมดในเครือข่ายเห็นด้วยกับธุรกรรมและรักษาสถานะที่สอดคล้องกัน นี่เป็นสิ่งสำคัญสำหรับความปลอดภัยและความสมบูรณ์ของบล็อคเชน
คุณสมบัติที่สำคัญแต่ละอย่างที่ระบุไว้มีบทบาทสำคัญ เนื่องจากเป็นรากฐานสำคัญของเสาหลักด้านความปลอดภัยและความสมบูรณ์ภายในระบบบล็อกเชน
ส่วนประกอบของแอปพลิเคชันบล็อคเชน
โครงสร้างบล็อก:
- ดัชนี: ดัชนีคือจำนวนเต็มที่แสดงตำแหน่งของบล็อกภายในบล็อกเชน การจัดทำดัชนีช่วยในการระบุลำดับของบล็อคเชน บล็อก Genesis มีดัชนีเป็น 0
- การประทับเวลา: การประทับเวลาจะจัดเก็บอินสแตนซ์ที่บล็อกถูกสร้างขึ้นในรูปแบบของสตริง สิ่งนี้จะช่วยในการรักษาบันทึกของบล็อกเหมือนเมื่อมีการขุดบล็อกหรือเพิ่มลงในบล็อกเชน วัตถุประสงค์หลักคือเพื่อรักษาลำดับเวลาของบล็อกและธุรกรรม
- ธุรกรรม: สิ่งเหล่านี้แสดงเป็นเวกเตอร์ของออบเจ็กต์ธุรกรรม โดยที่แต่ละธุรกรรมแสดงถึงการถ่ายโอนข้อมูลหรือมูลค่าระหว่างผู้เข้าร่วม เก็บธุรกรรมทั้งหมดที่รวมอยู่ในบล็อก ธุรกรรมเป็นข้อมูลหลักของบล็อกเชน และแต่ละบล็อกประกอบด้วยชุดธุรกรรมที่ต้องได้รับการประมวลผลและตรวจสอบ
- แฮชและแฮชก่อนหน้า: แฮชก่อนหน้าเก็บแฮชที่เข้ารหัสของบล็อกก่อนหน้า ในขณะที่แฮชนั้นเป็นชุดข้อมูลการเข้ารหัสแต่ในลักษณะที่สับสน
การสร้างและการตรวจสอบธุรกรรม:
พูดง่ายๆ ก็คือ ธุรกรรมเป็นเพียงการแลกเปลี่ยนข้อมูลระหว่างสองฝ่าย
ในการดำเนินการธุรกรรม จำเป็นต้องมีข้อมูลที่จำเป็น: ผู้ริเริ่ม (ผู้ส่ง) ผู้รับ และเงินหรือข้อมูลที่กำลังถูกย้าย ก่อนที่ธุรกรรมจะสามารถสลักลงบนบล็อกในบล็อกเชนได้ ธุรกรรมนั้นจะต้องผ่านการตรวจสอบเพื่อยืนยันความถูกต้องด้วยลายเซ็นดิจิทัลที่ถูกต้อง และผ่านการประเมินความปลอดภัยที่เข้มงวด เมื่อได้รับการอนุมัติ ธุรกรรมจะถูกรวมไว้ในบล็อกและแนบไปกับบล็อกเชนในภายหลัง
การสร้างบล็อกเชนอย่างง่ายด้วยความเรียบง่าย
แล้วเราจะดำดิ่งลงสู่การใช้บล็อกต่างๆ ควบคู่ไปกับคุณลักษณะ (คุณลักษณะ) และฟังก์ชันการทำงาน (วิธีการ) ของบล็อกเหล่านั้น โดยใช้แนวทางที่เป็นมิตรต่อผู้ใช้ที่เรียกว่า Simplicity ไหม
การสร้างคลาสบล็อก
ลองใช้สิ่งที่เราเรียนรู้เกี่ยวกับโครงสร้างของบล็อกในบริบทโลกแห่งความเป็นจริงตอนนี้:
ในข้อมูลโค้ดข้างต้นเราได้กำหนดไว้:
- ดัชนี ของบล็อกที่แสดงถึงตำแหน่ง
- ประทับเวลา ที่บันทึกเวลาเมื่อมีการสร้างบล็อก
- ข้อมูล ที่มีข้อมูลธุรกรรมทั้งหมด
- แฮชก่อนหน้า ที่เก็บแฮชของบล็อกการดำเนินการ
- แฮช ซึ่งเป็นตัวระบุที่ไม่ซ้ำกันหรือที่เรียกว่าฟังก์ชันแฮชการเข้ารหัส
นอกจากนี้ วิธี “calculate_hash” ยังยอมรับอินพุต รวมเข้ากับเนื้อหา จากนั้นใช้อัลกอริธึมการแฮช SHA-256 เพื่อสร้างแฮชเฉพาะของบล็อก
การสร้างคลาส Blockchain
หลังจากสร้างโครงสร้างพื้นฐานของบล็อกแล้ว ก็ถึงเวลาที่เราจะต้องกำหนดคลาสของบล็อกและวิธีการต่างๆ ที่จะช่วยให้เราสร้างบล็อกใหม่ได้
n ข้อมูลโค้ดด้านบน:
- Genesis Block เป็นบล็อกเชนแรกและมีดัชนีเป็น 0 บล็อก Genesis เป็นรากฐานของบล็อกอื่นๆ ทั้งหมด
- รับบล็อกล่าสุด ดึงข้อมูลบล็อกล่าสุด – วิธีนี้จำเป็นในการเพิ่มบล็อกใหม่
- เพิ่มบล็อก เพิ่มบล็อกใหม่ต่อท้ายบล็อกเชน โดยจะคำนวณแฮชก่อนหน้าและแฮชของบล็อกปัจจุบัน
การใช้กลไกฉันทามติอย่างเรียบง่าย
อัลกอริธึมที่เป็นเอกฉันท์เป็นกฎที่ผู้เข้าร่วมในเครือข่ายบล็อกเชนปฏิบัติตามเพื่อตกลงว่าจะเพิ่มบล็อกใดและจะสร้างบล็อกใหม่ได้อย่างไร กลไกทั่วไปบางประการมีดังนี้:
- หลักฐานการเดิมพัน: ผู้ตรวจสอบความถูกต้องจะถูกเลือกตามจำนวนเหรียญสูงสุดที่พวกเขามีและจำนวนเงินเดิมพันที่พวกเขายินดีเสนอเพื่อแลกกับการเพิ่มหรือตรวจสอบบล็อกใหม่
- หลักฐานการทำงาน: ในกลไกนี้ นักขุดจำเป็นต้องแก้ปัญหาการเข้ารหัสลับหรือปริศนา และพวกเขาแข่งขันกับพารามิเตอร์ของเวลา คนแรกที่แก้ปัญหาได้คือเพิ่มบล็อกใหม่
- อื่นๆ: ยังมีอัลกอริธึมอื่นๆ เช่น Delegated Proof of Stake (DPoS) ซึ่งผู้เข้าร่วมเครือข่ายลงคะแนนให้ผู้รับมอบสิทธิ์ที่ตรวจสอบธุรกรรม และ Practical Byzantine Fault Tolerance (PBFT) ซึ่งออกแบบมาเพื่อทำงานแม้ว่าผู้เข้าร่วมบางคนจะกระทำการที่เป็นอันตรายหรือล้มเหลวก็ตาม
หลักฐานการทำงาน
ในขอบเขตของเทคโนโลยีบล็อกเชน Proof of Work (PoW) โดดเด่นในฐานะหนึ่งในวิธีที่ได้รับการยอมรับมากที่สุดในการรักษาความปลอดภัยเครือข่าย กลไกนี้ทำหน้าที่ปกป้องความถูกต้องของข้อมูล ตรวจสอบบล็อกที่สร้างขึ้นใหม่ และยืนยันการเพิ่มความปลอดภัยในห่วงโซ่
โดยพื้นฐานแล้ว นักขุดมุ่งมั่นที่จะไขปริศนาทางคณิตศาสตร์ที่ท้าทายในโลกแห่งการเข้ารหัส และผู้ชนะก็มีสิทธิ์ที่จะต่อท้ายบล็อกที่ตามมาบนห่วงโซ่ที่เราเรียกว่าบล็อกเชน คุณสามารถเปรียบการแข่งขันนี้กับการแข่งขันได้: นักขุดคนใดไขปริศนาได้เร็วที่สุดจะได้รับรางวัล!
ปริศนานี้เกี่ยวข้องกับการแก้ปริศนาทางคณิตศาสตร์โดยพื้นฐานแล้วเราตั้งเป้าที่จะค้นพบ nonce และ hash ในอุดมคติ และยืนยันได้เร็วกว่าสิ่งอื่น กระบวนการในการแก้ปัญหานี้จำเป็นต้องสร้างรหัสแฮชที่แตกต่างกันในแต่ละครั้ง ประเมินระดับความยาก และคงอยู่จนกว่าเราจะพบรหัสที่ตรงกันที่สุด
เพิ่มแอตทริบิวต์การพิสูจน์และวิธีการ proof_of_work ในคลาส Block โดยใช้ไวยากรณ์ Simplicity
ในข้อมูลโค้ดข้างต้น:
- เราได้เพิ่มแอตทริบิวต์ proof เพื่อจัดเก็บค่า nonce สำหรับ PoW
- ในส่วนที่สองเราได้นำหลักฐานการทำงานไปใช้โดย
- การเริ่มต้น nonce และเพิ่มขึ้นด้วยการวนซ้ำแต่ละครั้ง
- คำนวณแฮชของบล็อกปัจจุบัน
- ตรวจสอบความยากของวิธีการบล็อกและดูว่าเข้าเกณฑ์หรือไม่
- ทำซ้ำต่อไปจนกว่าคุณจะพบ nonce ที่ถูกต้อง
- ตรวจสอบการพิสูจน์โดยตรวจสอบว่าแฮชตรงตามเกณฑ์ความยากหรือไม่และส่งคืนผลลัพธ์
อัปเดตคลาส Blockchain เพื่อตรวจสอบหลักฐานก่อนเพิ่มบล็อกใหม่
- ในข้อมูลโค้ดข้างต้น วิธีการ add_block ได้รับการอัปเดตเพื่อรวมขั้นตอนการตรวจสอบความถูกต้องของการพิสูจน์ก่อนที่จะเพิ่มบล็อกลงใน blockchain
- เงื่อนไข if else จะตรวจสอบการตรวจสอบ จากนั้นจึงเพิ่มบล็อก
การสร้าง Blockchain API อย่างง่ายด้วยความเรียบง่าย
หลังจากสรุปคุณสมบัติพื้นฐานของบล็อกแล้ว ฉันแนะนำให้เปลี่ยนไปใช้ขั้นตอนการสร้าง API ขั้นตอนนี้มีความสำคัญเนื่องจากทำหน้าที่เป็นสื่อกลางระหว่างระบบของเราและผู้ใช้ ช่วยให้พวกเขาสร้างบล็อกใหม่ ตรวจสอบสถานะปัจจุบัน และตรวจสอบคุณลักษณะที่เกี่ยวข้อง
การตั้งค่าสภาพแวดล้อม API
ติดตั้งและกำหนดค่าเครื่องมือที่จำเป็นสำหรับการสร้าง API ด้วยความเรียบง่าย:
- ขั้นแรกคุณต้องมีเฟรมเวิร์กเพื่อติดตั้งไลบรารีเซิร์ฟเวอร์ HTTP ดังที่แสดงในโค้ดด้านบน
- ตอนนี้ตั้งค่าสภาพแวดล้อมและกำหนดค่าเซิร์ฟเวอร์ให้จัดการคำขอที่เข้ามาทั้งหมด
- เมื่อคุณตั้งค่าเสร็จแล้ว ให้ทดสอบสภาพแวดล้อมเพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณทำงานได้อย่างราบรื่น
การสร้าง API
สร้าง API เพื่อกำหนดจุดสิ้นสุดสำหรับการเพิ่มบล็อกและการดูบล็อกเชนโดยใช้ Simplicity
มาเริ่มสร้าง API ของเรากันเลย:
- ./add_block: โพสต์คำขอนี้เพื่อเพิ่มบล็อกใหม่
- ./get_chain: คำขอ GET เพื่อดึงข้อมูลสถานะปัจจุบันของบล็อก
- ตำแหน่งข้อมูล /add_block จะยอมรับเพย์โหลด JSON ที่มีข้อมูลสำหรับบล็อกใหม่ และจะเพิ่มบล็อกนี้ในบล็อกเชน
- ในส่วนที่สอง เราดำเนินการร้องขอด้วยตัวจัดการบล็อกเพิ่ม
- การเพิ่มบล็อกใหม่และการคำนวณแฮชใหม่
- กำลังดึงข้อมูลการตอบสนองบนเซิร์ฟเวอร์
- เมื่อคุณสร้าง API เสร็จแล้วให้ตั้งค่าเส้นทางสำหรับการกำหนดค่าเซิร์ฟเวอร์:
- /add_block และ /get_chain ใช้เพื่อเพิ่มเส้นทาง
- ตอนนี้เริ่มต้นเซิร์ฟเวอร์และตรวจสอบคำขอที่เข้ามา
การเรียกใช้และการทดสอบแอปพลิเคชัน
ไชโย! คุณมาถึงโมดูลสุดท้ายแล้ว ซึ่งคุณสามารถเริ่มต้นเซิร์ฟเวอร์ของคุณและเชื่อมต่อกับบล็อกเชนผ่าน API ตอนนี้เป็นโอกาสที่ดีในการทดสอบการตั้งค่าของคุณ ทดลองทำธุรกรรม ดึงข้อมูล และตรวจสอบให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง คอยสังเกตข้อผิดพลาดหรือกรณีพิเศษใดๆ เพื่อรับประกันว่าแอปพลิเคชันบล็อกเชนของคุณทำงานได้อย่างราบรื่น!
การเรียกใช้แอปพลิเคชัน
- คอมไพล์โปรแกรมและรันแอปพลิเคชัน Simplicity blockchain:
- ./start-server # คำสั่งเพื่อเริ่มเซิร์ฟเวอร์ของคุณ
การทดสอบกับบุรุษไปรษณีย์
- ติดตั้งบุรุษไปรษณีย์
- เปิดตัวบุรุษไปรษณีย์
- ทดสอบจุดสิ้นสุด:
- curl -X POST -H “ประเภทเนื้อหา: application/json” -d ‘{“data”: “ข้อมูลบล็อกใหม่”}’ http://localhost:PORT/add_block
เมื่อดำเนินการแล้ว คำสั่งนี้จะแสดงข้อมูลบล็อกเชนที่แก้ไขแล้ว เพื่อยืนยันว่าบล็อกใหม่ได้รับการรวมเข้าด้วยกันสำเร็จแล้ว
- การเพิ่มบล็อกและการดูบล็อกเชนโดยใช้ API ที่สร้างด้วย Simplicity:
- curl -X POST -H “ประเภทเนื้อหา: application/json” -d ‘{“data”: “ตัวอย่างข้อมูลสำหรับบล็อกใหม่”}’ http://localhost:PORT/add_block
ตัวอย่างสดของการสร้างแอปพลิเคชันบล็อกเชนด้วยความเรียบง่าย
การดำเนินการทีละขั้นตอน
- ขั้นตอนที่ 1: สร้างคลาส Block ด้วยคุณลักษณะที่สำคัญ (เช่น ดัชนี การประทับเวลา ข้อมูล และแฮชก่อนหน้า)
- ขั้นตอนที่ 2: ใช้วิธีคำนวณแฮชสำหรับแต่ละบล็อก เพื่อให้มั่นใจถึงความเป็นเอกลักษณ์
- ขั้นตอนที่ 3: กำหนดคลาส Blockchain และเริ่มต้นด้วยบล็อกแรกสุดที่เรียกว่าบล็อกกำเนิด
- ขั้นตอนที่ 4: เพิ่มวิธีการในคลาส Blockchain เพื่อเพิ่มบล็อกใหม่และดึงข้อมูลบล็อกล่าสุด โดยใช้ Simplicity
- ขั้นตอนที่ 5: แนะนำกลไก Proof of Work ให้กับคลาส Block และอัปเดตคลาส Blockchain ตามนั้น
- ขั้นตอนที่ 6: ตั้งค่าสภาพแวดล้อม API เพื่อจัดการคำขอขาเข้าโดยใช้ Simplicity
- ขั้นตอนที่ 7: ทดสอบแอปพลิเคชันของคุณโดยขุดบล็อกใหม่และตรวจสอบความถูกต้องของบล็อกเชนผ่านเครื่องมือ เช่น บุรุษไปรษณีย์หรือ curl
Sorry. No data so far.
2024-08-30 14:40