หลักจากที่เรารู้จักส่วนประกอบต่างๆในโลกของ ethereum อย่างเช่น บัญชีผู้ใช้ การส่ง transaction และ message
ในบทความนี้เราจะมาดูว่า ethereum ออกแบบสถาปัตยกรรมของ blockchain และวิธีตรวจสอบว่าความถูกต้องของแต่ละบล็อคที่สร้างอย่างไรบ้าง
ในแต่ละบล็อคจะประกอบไปด้วยข้อมูลหลักๆดังนี้
1.เลขรายการ transaction ที่เกิดขึ้น ณ ขณะที่บล็อคถูกสร้างขึ้นมา
2.สถานะล่าสุดของข้อมูล ณ ขณะที่บล็อคถูกสร้างขึ้นมา
3.เลขที่ของบล็อคซึ่งจะเป็นค่าสูงสุดของจำนวนบล็อคที่มีอยู่ในระบบ ณ ขณะที่บล็อคถูกสร้างขึ้นมา
4.ค่า difficulty ใช้สำหรับคำนวณความยากของสูตรที่ให้ miner ทำการประมวลผลเพื่อสร้างบล็อคใหม่ต่อไป ซึ่งค่า difficultyจะเพิ่มขึ้นทุกครั้งที่มีบล็อคใหม่เกิดขึ้น จึงจะเห็นได้ว่ายิ่งมีบล็อคในระบบมากเท่าไหร่ miner ก็จะใช้เวลาสร้างบล็อคในระบบมากขึ้น
5.เวลาที่บล็อคถูกสร้างขึ้น (TimeStamp)
6.ค่า Hash ขนาด 256 bit ซึ่งเป็นข้อมูลสำหรับตรวจสอบว่าบล็อคที่สร้างมาถูกต้องหรือไม่
6.1 mixHash ค่า hash ที่เกิดจากการคำนวณ proof of work(PoW) ของ mining โดยใช้ Ethash Algorithm
6.2 parentHash ค่า hash ของบล็อคก่อนหน้า
รูปตัวอย่างการเก็บข้อมูลใน 1 บล็อค
วิธีตรวจสอบว่าบล็อคที่เกิดในระบบถูกต้องหรือไม่
1.ตรวจสอบบล็อคก่อนหน้าที่ติดกันก่อนว่าเป็นบล็อคที่ถูกต้องหรือไม่
2.เวลาที่บล็อคถูกสร้างขึ้นต้องมากกว่าเวลาของบล็อคก่อนหน้า
3.มีค่า hash ที่ผ่านมาจากการคำนวณ proof of work (PoW) โดยใช้ Ethash Algorithm
(สำหรับผู้ที่สนใจอยากศึกษาเพิ่มเติมว่า Ethash Algorithm สามารถอ่านเพิ่มเติมได้ที่ yellow paper หัวข้อ Appendix J. Ethash ครับ)
4.สถานะเริ่มต้นในบล็อค S[0] มีข้อมูลตรงตามสถานะสุดท้ายของบล็อคก่อนหน้า S_FINAL
5.ค่า gas ที่ใช้ในการทำ transaction ต้องไม่เกินค่า gas limit ที่กำหนดไว้
รูปตัวอย่างการเก็บข้อมูล Transaction และ State ใน 1 บล็อค
สำหรับผู้ที่สนใจข้อมูลเกี่ยวกับ Ethereum สามารถอ่านเพิ่มเติมได้ที่นี้ครับ