สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

บทนำ

ในฐานะนักพัฒนามากประสบการณ์และมีประสบการณ์มาหลายปี ฉันสามารถพูดได้อย่างมั่นใจว่าการทำตามขั้นตอนเหล่านี้เพื่อสร้างแอปพลิเคชันบล็อกเชนโดยใช้ 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
  • การประทับเวลา: การประทับเวลาจะจัดเก็บอินสแตนซ์ที่บล็อกถูกสร้างขึ้นในรูปแบบของสตริง สิ่งนี้จะช่วยในการรักษาบันทึกของบล็อกเหมือนเมื่อมีการขุดบล็อกหรือเพิ่มลงในบล็อกเชน วัตถุประสงค์หลักคือเพื่อรักษาลำดับเวลาของบล็อกและธุรกรรม
  • ธุรกรรม:  สิ่งเหล่านี้แสดงเป็นเวกเตอร์ของออบเจ็กต์ธุรกรรม โดยที่แต่ละธุรกรรมแสดงถึงการถ่ายโอนข้อมูลหรือมูลค่าระหว่างผู้เข้าร่วม เก็บธุรกรรมทั้งหมดที่รวมอยู่ในบล็อก ธุรกรรมเป็นข้อมูลหลักของบล็อกเชน และแต่ละบล็อกประกอบด้วยชุดธุรกรรมที่ต้องได้รับการประมวลผลและตรวจสอบ
  • แฮชและแฮชก่อนหน้า: แฮชก่อนหน้าเก็บแฮชที่เข้ารหัสของบล็อกก่อนหน้า ในขณะที่แฮชนั้นเป็นชุดข้อมูลการเข้ารหัสแต่ในลักษณะที่สับสน

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

การสร้างและการตรวจสอบธุรกรรม:

 พูดง่ายๆ ก็คือ ธุรกรรมเป็นเพียงการแลกเปลี่ยนข้อมูลระหว่างสองฝ่าย 

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

การสร้างบล็อกเชนอย่างง่ายด้วยความเรียบง่าย

แล้วเราจะดำดิ่งลงสู่การใช้บล็อกต่างๆ ควบคู่ไปกับคุณลักษณะ (คุณลักษณะ) และฟังก์ชันการทำงาน (วิธีการ) ของบล็อกเหล่านั้น โดยใช้แนวทางที่เป็นมิตรต่อผู้ใช้ที่เรียกว่า Simplicity ไหม

การสร้างคลาสบล็อก

ลองใช้สิ่งที่เราเรียนรู้เกี่ยวกับโครงสร้างของบล็อกในบริบทโลกแห่งความเป็นจริงตอนนี้:

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

ในข้อมูลโค้ดข้างต้นเราได้กำหนดไว้:

  • ดัชนี ของบล็อกที่แสดงถึงตำแหน่ง
  • ประทับเวลา ที่บันทึกเวลาเมื่อมีการสร้างบล็อก
  • ข้อมูล ที่มีข้อมูลธุรกรรมทั้งหมด
  • แฮชก่อนหน้า ที่เก็บแฮชของบล็อกการดำเนินการ
  • แฮช ซึ่งเป็นตัวระบุที่ไม่ซ้ำกันหรือที่เรียกว่าฟังก์ชันแฮชการเข้ารหัส

นอกจากนี้ วิธี “calculate_hash” ยังยอมรับอินพุต รวมเข้ากับเนื้อหา จากนั้นใช้อัลกอริธึมการแฮช SHA-256 เพื่อสร้างแฮชเฉพาะของบล็อก

การสร้างคลาส Blockchain

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

สร้างแอปพลิเคชัน 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

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

ในข้อมูลโค้ดข้างต้น:

  • เราได้เพิ่มแอตทริบิวต์ proof เพื่อจัดเก็บค่า nonce สำหรับ PoW
  • ในส่วนที่สองเราได้นำหลักฐานการทำงานไปใช้โดย 
  • การเริ่มต้น nonce และเพิ่มขึ้นด้วยการวนซ้ำแต่ละครั้ง
  • คำนวณแฮชของบล็อกปัจจุบัน
  • ตรวจสอบความยากของวิธีการบล็อกและดูว่าเข้าเกณฑ์หรือไม่
  • ทำซ้ำต่อไปจนกว่าคุณจะพบ nonce ที่ถูกต้อง
  • ตรวจสอบการพิสูจน์โดยตรวจสอบว่าแฮชตรงตามเกณฑ์ความยากหรือไม่และส่งคืนผลลัพธ์

อัปเดตคลาส Blockchain เพื่อตรวจสอบหลักฐานก่อนเพิ่มบล็อกใหม่

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

  • ในข้อมูลโค้ดข้างต้น วิธีการ add_block ได้รับการอัปเดตเพื่อรวมขั้นตอนการตรวจสอบความถูกต้องของการพิสูจน์ก่อนที่จะเพิ่มบล็อกลงใน blockchain
  • เงื่อนไข if else จะตรวจสอบการตรวจสอบ จากนั้นจึงเพิ่มบล็อก

การสร้าง Blockchain API อย่างง่ายด้วยความเรียบง่าย

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

การตั้งค่าสภาพแวดล้อม API

ติดตั้งและกำหนดค่าเครื่องมือที่จำเป็นสำหรับการสร้าง API ด้วยความเรียบง่าย:

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

  • ขั้นแรกคุณต้องมีเฟรมเวิร์กเพื่อติดตั้งไลบรารีเซิร์ฟเวอร์ HTTP ดังที่แสดงในโค้ดด้านบน
  • ตอนนี้ตั้งค่าสภาพแวดล้อมและกำหนดค่าเซิร์ฟเวอร์ให้จัดการคำขอที่เข้ามาทั้งหมด
  • เมื่อคุณตั้งค่าเสร็จแล้ว ให้ทดสอบสภาพแวดล้อมเพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณทำงานได้อย่างราบรื่น

การสร้าง API

สร้าง API เพื่อกำหนดจุดสิ้นสุดสำหรับการเพิ่มบล็อกและการดูบล็อกเชนโดยใช้ Simplicity

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

มาเริ่มสร้าง API ของเรากันเลย:

  • ./add_block: โพสต์คำขอนี้เพื่อเพิ่มบล็อกใหม่ 
  • ./get_chain: คำขอ GET เพื่อดึงข้อมูลสถานะปัจจุบันของบล็อก
  • ตำแหน่งข้อมูล /add_block จะยอมรับเพย์โหลด JSON ที่มีข้อมูลสำหรับบล็อกใหม่ และจะเพิ่มบล็อกนี้ในบล็อกเชน
  • ในส่วนที่สอง เราดำเนินการร้องขอด้วยตัวจัดการบล็อกเพิ่ม
  • การเพิ่มบล็อกใหม่และการคำนวณแฮชใหม่
  • กำลังดึงข้อมูลการตอบสนองบนเซิร์ฟเวอร์

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

  • เมื่อคุณสร้าง 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

 ตัวอย่างสดของการสร้างแอปพลิเคชันบล็อกเชนด้วยความเรียบง่าย

สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย
สร้างแอปพลิเคชัน Blockchain ด้วยความเรียบง่าย

การดำเนินการทีละขั้นตอน

  • ขั้นตอนที่ 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