Block ใน Blockchain หน้าตาเป็นแบบไหนกันนะ

สำหรับบล็อกนี้จะอยู่ใน Blockchain Fundamental Series และเป็นการปูทางก่อนเข้าเรื่อง “การทำงานของ blockchain ในระบบ Proof of work” นั่นเอง ซึ่งเราต้องมาทำความเข้าใจกันก่อนว่า blockchain นั้นเก็บข้อมูลในลักษณะไหน หน้าตาเป็นแบบไหน และตัวอย่างข้อมูลในโลก blockchain จริงๆนั้นเอาไปเก็บอะไรกันได้บ้าง

แอบสปอยนิดหน่อย อยากบอกว่าไม่จำเป็นต้องเป็น cryptocurrencies อย่างเดียวนะเอออ 😎

Blockchain Fundamental Series

  • ทำไม Hashing Algorithm ใน Blockchain ถึงสำคัญ
  • Block ใน Blockchain หน้าตาเป็นแบบไหนกันนะ [คุณอยู่บล็อกนี้]
  • การทำงานของ blockchain ในระบบ Proof of work
  • การคำนวณหาค่า difficult และ target value ของ Bitcoin

Block คืออะไร?

block structure

Block คือ ข้อมูลที่ใช้เก็บใน blockchain (เปรียบเสมือนข้อมูลที่อยู่บน database) นั่นเอง

ซึ่ง block ในโลกของ blockchain จะมี

4 property สำคัญๆ ดังนี้

1. Block: ไว้บอกว่า block นี้คือ block ที่เท่าไหร่

2. Nonce: ไว้บอกจำนวนครั้งในการสุ่มหาค่า hash ที่น้อยกว่าค่า target [อ่านต่อ] โดยค่า nonce จะเป็นตัวแปลหนึ่งในสมการคับ และจะทำการสุ่มค่านี้เข้าไปเรื่อยๆ

random nonce

Target เป็นค่าที่สัมพันธ์กับความยากในการ verify transaction (Difficulty) ของระบบในขณะนั้น (จะอธิบายละเอียดต่อในบล็อกหน้าเนาะ)

3. Data**: เป็นข้อมูลที่เราต้องการใส่ลงไปใน block จะหน้าตาแบบไหนแล้วแต่เราจะออกแบบ เดี๋ยวมีตัวอย่างให้ดู

4. Hash: เมื่อ block ถูก verify เสร็จจะได้ค่า HASH มาหนึ่งค่า ซึ่งใช้เป็นค่าอ้างอิงสำหรับ block นั้นๆด้วย เช่น bitcoin จะ HASH แบบ SHA256 [อ่านเพิ่มเติม]

เช่น

0000 E7F1 C95B 82FF B997 43E0 C5C4 CE95 D83C 9A43 0AAC 59F8 4EF3 CBFA B614 50680000 00F1 C95B 82FF B997 43E0 C5C4 CE95 D83C 9A43 0AAC 59F8 4EF3 CBFA B614 5068 (0 เยอะกว่าจะยากกว่าตัวข้างบน)

จะสังเกตเห็นว่าค่า hash จะมี 0 นำหน้าอยู่ ซึ่งสัมพันธ์กับค่าความยากในการ verify transaction (Difficulty) ด้วยนะ 0 มากกว่าจะยากกว่า (จะอธิบายละเอียดต่อในบล็อกหน้าเนาะ)

ซึ่งนี่คือ 4 property หลักๆที่ใช้ในโลกของ blockchain และยังมี property อื่นอีก เช่น

5. Difficulty: เป็นค่าความยากที่ให้แต่ละ address มาแข่งกัน verify block เพื่อเอา block reward ซึ่งสามารถเปลี่ยนได้ตลอดเวลา (จะอธิบายละเอียดต่อในบล็อกหน้าเนาะ)

6. Next / Previous block: บอก hash อ้างอิง block ก่อนหน้าและถัดไป

7. Timestamp: เวลาที่ block ถูกใส่ใน blockchain (ถูก verify สำเร็จ)

8. Block Reward: รางวัลที่ระบบจะจ่ายให้ address ที่แข่งกัน verify block ได้ก่อนคนอื่น

9. Size: ขนาดของข้อมูลใน block เป็น byte ตรงไปตรงมา เช่น Bitcoin จะใช้เก็บรายการเดินบัญชีกลางของคนทั้งโลก (public ledger)

XX. และอีกมากมายตามแต่ละ blockchain จะเพิ่มเข้ามา แต่หลักๆจะมีประมานนี้ ส่วนค่าอื่นๆเป็นรายละเอียดปลีกย่อยของแต่ละ blockchain ที่เราต้องดูเป็นตัวๆไป

มาดู Block ของจริงกันว่าตามที่เจ้าของบล็อกเขียนไว้หรือไม่

ตรงตามที่เขียนมาทุกประการ แต่จะมี property อื่นๆยิบย่อยเราขอไม่พูดถึงเดี๋ยวมันจะเยอะจนเกินไป

แล้ว Block เก็บข้อมูลอะไรได้บ้าง

คำตอบคือ ทุกอย่างตราบเท่าที่ developer คิดออก

ส่วนจะเหมาะหรือไม่เหมาะอันนี้ต้องดูกันอีกทีเพราะมันก็มีข้อจำจัดเหมือนกัน แต่ความรู้สึกมันเหมือน database อีกชนิดหนึ่งเลย คุณจะเก็บอะไรก็ได้

ตัวอย่างที่เห็นง่ายๆคือ

Cryptocurrencies เช่น Bitcoin, Ethereum , …

ในโลกข้อ Cryptocurrencies ข้อมูลที่อยู่บน blockchain จะเป็นรายการเดินบัญชีของผู้ใช้ทั้งโลกซึ่งเราเรียกกันว่า “Public ledger หรือบัญชีกลาง” ซึ่งเป็น Pain text ธรรมดานี่แหละ

ref: https://bitsonblocks.net/2015/09/01/a-gentle-introduction-to-bitcoin/
Public ledger --เก็บ--> Block --เก็บ--> 100++ transactions

คุณสามารถเปิด node เพื่อ sync public ledger มาดูได้เลย https://bitcoin.org/en/download ตอนนี้ขนาดของ leder ทะลุ 145GB เป็นที่เรียบร้อยแล้ว

และทุกคนสามารถเข้าถึงได้ทุกที่ทุกเวลา ดูได้หมดว่าแต่ละ transaction ใน ledger ใครโอนเงินไปให้ใครบ้าง เช่น

[ตัวอย่าง] คนที่เปิด node และทำให้เราสามารถดูข้อมูลใน public ledger ได้ง่ายๆ

โดย Transactions คือสิ่งที่ถูกเก็บใน property ชื่อว่า “DATA” ที่เราเขียนไว้ข้างต้นนั่นเอง

แล้วนอกจาก data ที่เป็น cryptocurrencies เป็นอะไรอีกได้บ้าง

มาดู ตัวอย่างอื่นต่อกัน

Everledger.io

เป็น 1 ตัวอย่าง Startup ที่นำ blockchain มาใช้ในธุรกิจจริงๆ

ปัญหาที่ทำให้เกิด product นี้คือ

หนึ่งปัญหาในการค่าขายเพรชคือความล่าช้าในการตรวจสอบว่าเพรชนั้นเป็นของจริง และประวัติถูกต้องตามกฎการค้าเพรชหรือไม่ ซึ่งเพรชแต่ละเม็ดจะค้าขายได้ต้องมีใบ certificate เก็บประวัติการขายทั้งหมดว่าผ่านมือใครมาบ้าง มิเช่นนั้นจะถือว่าเป็น blood diamond (เพรชที่ผิดกฎหมาย)

คร่าวๆประมานนี้

ตัว Everledger จึงนำ blockchain เข้ามาแก้ปัญหาการ verify เพรช นั้นเอง โดยจะนำข้อมูลเพรชทั้งหมดเข้าไปอยู่บน blockchain เพื่อให้คนที่อยู่ในระบบช่วยกัน verify ตัว certificate ของเพรชนั้นว่ามีประวัติที่ถูกต้องจริงๆหรือไม่ ก่อนที่จะเก็บลงใน blockchain ซึ่งทำให้ข้อมูลเพรชที่อยู่ใน blockchain ไม่สามารถแก้ไขได้ และทำให้ลดเวลา verify เพรชลงได้มาก ซื้อขายเพรชได้เร็วกว่าเดิมทุกคน happy

Everledger เลยเรียกต้องเองสั้นๆว่า

Everledger provides an immutable ledger for diamond ownership and related transaction history verification.

จะเห็นว่าในตัวอย่างนี้ DATA property จะเป็นข้อมูลของเพรชนั่นเอง

ใครอ่านมาถึงจุดนี้น่าจะพอเห็นภาพหน้าตาของ block หรือ data ที่อยู่บน blockchain กันแล้วอยากจะเน้นอีกรอบว่า

Cryptocurrencies เป็นเพียงแค่ข้อมูลบน blockchain แบบหนึ่งเท่านั้นนะ จริงๆแล้วเราจะออกแบบข้อมูลบน blockchain ให้ออกมาหน้าตาแบบไหนก็ได้ แล้วแต่ developer จะออกแบบเลย

ก่อนจบไปสรุป ข้อดี ข้อเสีย กันซะหน่อย

ข้อดีสำหรับข้อมูลที่อยู่บน blockchain

สิ่งที่ได้ถ้าเราเอาข้อมูลมาใส่ใน blockchain

1. Low fee: บนโลกของ blockchain การใส่ข้อมูลลงใน blockchain ก็เหมือนการ update ข้อมูลใน database เรานี่แหละ แต่ใน blockchain เราจะเรียกว่า “การทำ transaction” ซึ่งต้องเสียค่าธรรมเนียมเล็กน้อยที่ผู้ใช้รับได้(มั้ง 🤣)

2. Anonymous: ไม่สามารถระบุตัวตนได้เพราะ transaction ที่อยู่ใน block จะเป็น address ที่อ่านไม่ออก เช่น

ทำให้เราไม่สามารถรู้ได้ว่าใครคนส่ง transaction แต่รู้เพียงแค่ว่ามี transaction นี้เกิดขึ้นบน blockchain จริงๆเท่านั้น

3. Tracking transaction: ติดตาม/ตรวจสอบ transaction history ได้ทั้งหมด ได้ตั้งแต่ต้นทางถึงปลายทางเลยว่าข้อมูลเคยผ่านใครมาบ้าง

ที่ทำแบบนี้ได้เนื่องจาก block ใน blockchain มีเลข Hash อ้างอิงกันตลอดนั่นเอง

4. Security: เมื่อข้อมูลถูกเก็บลงใน blockchain เรียบร้อยแล้ว ข้อมูลจะไม่มีทางถูกแก้ไข (Immutable) ยกเว้นคุณสามารถโจมตีเข้าไปคอมพิวเตอร์ที่อยู่ใน blockchain นั้น 51% [อ่านต่อ] ซึ่งเป็นไปได้ยากมากๆๆๆ

5. Valuable: ข้อมูลที่อยู่บน blockchain มักมีมูลค่า เช่น cryptocurrencies เป็นต้น

ข้อเสีย

การ update ข้อมูลใน blockchain ไม่ได้รวดเร็วขนาดนั้น ใช้เวลาแล้วแต่ว่าตอนนั้น transaction ในระบบเยอะมากแค่ไหน และคนที่มาแข่ง verify transaction เยอะมากแค่ไหนด้วย

ทำให้มีโอกาสเกิดความล่าช้าเป็นชั่วโมงๆได้ เนื่องจากเกิด “คอขวดของ transaction” ที่เยอะจนเกินไปทำให้ verify กันไม่ทัน และส่งผลให้ค่า fee แพงขึ้นตามไปด้วยเพราะคนยอมจ่ายหนักๆเพื่อให้คนหยิบ transaction ตัวเองไป verify ก่อน 🤪

blockchain จึงมีการ verify transaction หลายแบบเกิดขึ้น เพื่อมาแก้ปัญหาความเร็วของ Proof of Work (PoW) เช่น Proof of Stake (PoS), Side chains และอีกมากมาย

ส่วนตัวแล้วมองว่าเป็นข้อเสียที่ค่อนข้างใหญ่พอสมควร และตัว blockchain กำลังหาวิธีแก้ไขอยู่

ก็เป็นอันจบ block ใน blockchain หลายคนน่าจะเกิดคำถามขึ้นมาแล้วว่าการทำงานของ block ใน blockchain มีการทำงานเกี่ยวข้องกันยังไงบ้าง เจอกันบล็อกหน้าคลายข้อสงสัยกันแน่นอนกับ “การทำงานของ blockchain ในระบบ Proof of work”

วันนี้ไว้แค่นี้เจอกันบล็อกหน้าคับผม 😎

กด like กด share ทาง facebook กันได้เลย

เข้าไปติดตามกันได้ https://www.facebook.com/dcen.io/

อย่าลืม 👏 ข้างล่าง และ shareให้มนุษย์ blockchain คนอื่นด้วยหละ 😎

--

--

Nonthawit 👨🏻‍🚀 (น้ำแข็ง)
Dcen.io

Tech CEO & Co-founder of The Existing Company┃Software Engineer┃Designer ┃Product Coach ┃Public Speaker ┃ Blogger┃Notion Expert