Inside Proof of Authority (ฉบับบ้านๆ)

Supamongkon R
3 min readNov 24, 2022

--

ทุกๆคนที่อยู่ในวงการ blockchain หรือ Cryptocurrency อาจจะเคยได้ยินคำว่า consensus และใน consensus นั้นก็ประกอบไปด้วย protocal หลากหลายรูปแบบ ยกตัวอย่างเช่น consensus protocal ที่เราคุ้นเคยและได้ยินเป็นประจำซึ่งก็คือ Proof of work (PoW) และ Proof of Stake (PoS) และสุดท้ายที่เราจะมาเจาะลึกกันในวันนี้คือ Proof of Authority ที่ส่วนใหญ่ถูกใช้อยู่บน private blockchain

เนื้อหาในวันนี้เราจะไม่มุ้งเน้นไปที่ concept ว่า proof of authority นั้นคือระบบฉันทามติ บลาๆต่างๆนาๆ ที่อ่านแล้วอาจจะงง และก็อาจจะไม่ได้เห็นภาพในหัวได้เข้าใจและชัดเจน

แต่ในวันนี้เราจะมาทำการลงลึกว่าที่แท้จริงแล้ว proof of authority นั้นหน้าตาจริงๆมันเป็นยังไงมันทำงานกันยังไง Validator ไหนทำอะไรในเวลาไหน

หลังจากเกริ่นมานานก็มาเริ่มเข้าสู่เนื้อหากันเลยที่ ในตัวของ Proof of Authority นั้นจะเป็นการ implement โดยใช้ Protocal ที่ถูกเรียกว่าเทคโนโลยี byzantine fault tolerance และใน byzantine fault tolerance ก็จะแตกออกไปอีกหลายประเภท เช่น istanbul byzantine fault tolerance ถ้าอยู่ในรูปตัวย่อก็จะเป็น ibft หรืออีกตัวอย่างคือ qbft และในแต่ละชนิดก็จะแตกต่างกันออกไป

ซึ่งเจ้าตัว istanbul byzantine fault tolerance นั้นถ้าจะเอาให้เข้าใจง่ายๆก็คือการทำให้ network ของเรานั้นยังทำงานอยู่ต่อได้แม้ว่า node ใด node หนึ่งบน network จะเกิดความเสียหายหรือพัง ยกตัวอย่างเช่น Proof of Authority ที่ใช้ ibft นั้น เริ่มต้นจะต้องการ node บน network 4 node เพื่อ confim ว่า ถ้ามี 1 node ถูกทำลายไปอีก 3 node ก็จะยังทำงานได้ปกติ

วิธีการทำงานของเจ้าตัว Proof of Authority นั้นจะเป็นการที่ node บน network นั้นทำหน้าที่เป็น validator โดยในแต่ละรอบของการสร้าง block ใหม่บน network มันจะวนกันทำเป็น sequence หรือตาม time interval ไปเรื่อยๆเป็นลำดับ ดังรูป โดยวิธีการ mined transaction หรือ proof transaction ของ proof of authority จะเป็นการใช้ ทรัพยากร ของ node ในการ proof ดังนั้น node แต่ละ node บน network จึงถูกเรียกว่า Validator นั้นเองงง!!!!! โดย node บน network ต้องมีไม่ต่ำกว่า 3 node ตาม requirement. หรือเข้าใจง่ายๆว่า node นั้นจะ สามารถ mined transaction ได้ก็ต่อเมื่อ peer นั้นต้องมี 3 node ขึ้นไป

แผนภาพการกำเนิดของ block ใน PoA network

โดยในตัวอย่าง diagram ที่ผมเอามาให้ดูคือการเกิดขึ้นของ block ใน network โดยที่ในตัวอย่างจะมีอยู่แค่ 3 node หรือ 3 validator โดย blockแรกจะเป็น genesis block และการบันทึก transaction จะเกิดขึ้นที่ block หมายเลข 2ที่ node1 จะจับ transaction ที่เกิดขึ้นยัดลงไปใน block หมายเลข 2 ตามเวลาที่กำหนดไว้ใน genesis file (ถ้ามีเวลาจะมาอธิบายให้อีกทีว่า genesis file คืออะไร) หรือเรียกง่ายๆว่า ตัวกำหนด setting ของ blockchain network โดยเวลาที่กำหนดไว้คือ เวลาในการสร้าง block แต่ละ block นั้นคือ 2 วินาที เกิน 4 วิ ตัดจบ โดยประมาณ

โดยในแต่ละ node จะมี state อยู่ 2 state คือ Produce, Import
โดย Produce คือการที่ node นั้นได้รับหน้าที่เป็นคนสร้าง block บน network นั้นเอง เอาให้เข้าใจง่ายๆคือ สมมุติเมื่อว่าถึงรอบของ node1 นั้น node1 ก็จะเป็นเจ้าภาพในการสร้าง block, node1 จะมี state เป็น Produce และอีกสาม node ที่เหลือจะมี state import อีก 2 วิถัดไป node2 รับบทเป็นเจ้ามือแทน ส่วน import ก็จะเป็นการ check ว่า transaction นี้ถูก mined โดย leader node ณ ขณะจริงหรือเปล่าถ้าไม่ก็จะ Reject ถ้าตรวจสอบแล้วถูกต้องก็จะบันทึกลงไปบน node

โดยผมจะแสดงตัวอย่างการจำลอง situation และให้เห็น logs ของตัว node ที่เก็บ copy ของแต่ละ transaction ไว้ให้ได้เห็นกันชัดๆและเข้าใจยิ่งขึ้น

Example situation

จากภาพประกอบ เพื่อนผมต้องการ ส่ง 1 ETH ให้ผมเป็นของขวัญวันเกิด!! โดยใช้ chain ของพวกเราเองสองคนที่เป็น PoA(network ที่ set ขึ้นมาเองโดยใช้ hyperledger besu) โดยสมาชิกใน network จะมีดังนี้

Validator

และหลังจากที่แน็กส่ง 1 ETH มาให้ผมแล้ว มันเกิดอะไรขึ้นที่ network!! ไปดูกัน

Logs

หลังจากที่เราเข้ามาดูในตัวหลังบ้านของ network ว่าเกิดอะไรขึ้น จะเห็นได้ว่าใน block ที่ 2,428 จะมี 1 transaction อยู่ในนั้น และ node ที่ทำหน้าที่ Produce อยู่นั้นคือ node 4 หรือ validator 4 โดยดูจาก address ของ node นั้นๆ

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

Block explorer

หลังจากเข้ามาดู ที่ Block explorer ก็จะยิ่งทำให้เห็นภาพได้ง่ายยิ่งขึ้น เมื่อพบว่า Transaction ที่อยู่ใน block 2428 นั้น ถูก mined โดยใครซึ่งนั่นก็คือ Address ของ node 4 และถูกส่งจากใครไปหาใคร

สรุปแล้วก็คือ วิธีการทำงานของ PoA นั้นจะทำงานเป็นรอบๆ โดยในแต่ละรอบก็จะมี validator ที่รับหน้าที่สร้าง block และเวียนๆ กันไป ตาม time interval และ การที่เราจะใช้ private network ก็จะต้องมีการ trust กันในระดับหนึ่งอยู่แล้วในแต่ละองค์กรที่จะเข้ามาเป็น valdidator ส่วนเรื่องการ vote และ จะเพิ่ม node เพื่อเข้ามาเป็น validator เดี๋ยวเรามาคุยกันใน part ต่อๆไป สวัสดีครับ

--

--