Our SuccessKnowledges
NEXTZY Logo
Crews
Chat
Talk with Team
NEXTZY Logo
NEXTZY
Chat
Home>Knowledges

ทำไม Hashing Algorithm ใน Blockchain ถึงสำคัญ

Share:

ทำไม Hashing Algorithm ใน Blockchain ถึงสำคัญ

Table of contents

  • Blockchain Fundamental Series
  • SHA256
  • Ethash
  • สรุป
Nonthawit

Nonthawit

CEO | Engineer | Designer

VIEW

16.5k

CATEGORY

Blockchain

LAST UPDATED

May 5, 2018

Nonthawit

Nonthawit

CEO | Engineer | Designer

VIEW

16.5k

CATEGORY

Blockchain

LAST UPDATED

May 5, 2018

สำหรับบล็อกนี้เป็นบล็อกแรกใน Blockchain Fundamental Series ที่กำลังจะเขียนเรื่อยๆ จะเป็นการปูพื้นฐานสิ่งที่ควรจะรู้/keyword สำคัญๆสำหรับ blockchain ไม่ว่าจะเป็น concept / การทำงาน / การคำนวนต่างๆ เพื่อให้ครอบคลุมและเอาไปต่อยอดในอนาคตกันได้


Blockchain Fundamental Series

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

ก่อนเราจะเข้าเรื่อง blockchain กัน มีหนึ่งเรื่องที่สำคัญเกี่ยวข้องกับ blockchain มากที่สุดคือการ hash ข้อมูลบน blockchain

แล้วการ hash ข้อมูล คืออะไรกันนะ ?

การ hash ข้อมูล คือ การเปลี่ยนข้อมูลต่างๆ ข้อมูลอะไรก็ได้ที่อยู่บนโลกของ digital ให้อยู่ในรูปของ bit ที่มีขนาดแน่นอนตายตัว

เช่น

"Hello" ----hashing_algo_1--> "0123ABC35"
" " --------hashing_algo_1--> "0A32A1C5F"
music.mp3 --hashing_algo_1--> "1A9C2A1D5"
ส่วนใหญ่จะให้ hex แทน bit กันเนาะ

ซึ่งการ hash ข้อมูลเราใช้กันมานานมากแล้ว เช่น MD5 ที่ใช้ตรวจสอบความสมบูรณ์ของ file ต่างๆบนโลก digital เป็น hash ยอดฮิตเลยก็ว่าได้

แล้วทำไมต้อง hash ข้อมูลให้มันยุ่งยากหละ ?

คำตอบมีอยู่ 4 ข้อหลักๆด้วยกัน คือ

1. ต้องการใช้เป็น ID ใหักับข้อมูล (unique)

เมื่อ hash แล้วคุณจะได้ output ที่มีโอกาสซ้ำกันน้อยมากๆๆๆ และไม่ว่าคุณจะ hash ด้วยข้อมูลเดิมกี่ครั้งคุณจะได้ hashing output แบบเดิมเสมอ การ hashing เลยไว้ใช้ระบุตัวตนของข้อมูลกันนั่นเอง

เช่น ใน blockchain จะใช้เป็นค่าอ้างอิงของ block นั้นๆ

https://btc-bitcore3.trezor.io/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

EXTRA: ที่บอกว่าซ้ำกันน้อยมาก เพราะบาง hashing algorithm ยังเจอปัญหา collision attacks อยู่ครับ คือมี 2 ค่าที่คำนวนผ่าน Hash Function แล้วได้ค่าเดียวกัน

2. ต้องการความเร็วในการคำนวน

ถ้าเราต้องการเทียบ file หรือ ข้อมูลขนาด 1000 GB เราต้องใช้เวลากี่นาที? เราจึงต้องทำการ hash ข้อมูลให้อยู่ในรูปอย่างง่ายก่อนเพื่อเอาไปคำนวนหาสิ่งที่ต้องการต่อไป เช่น เปรียบเทียบข้อมูล, ตรวจสอบความถูกต้องของข้อมูล, …

3. ส่วนใหญ่ต้องการ one-way function

นั่นหมายความว่าคุณไม่สามารถ de-hash ข้อมูลเดิมกลับมาได้ มีทางเดียวคือคุณจะต้อง brute-force output ไปเรื่อยๆจนกว่าจะได้ค่าที่เท่ากับค่า hashing output เดิม

ตัวอย่าง one-way function เช่น SHA256 เป็นต้น

4. เปลี่ยนข้อมูลแค่นิดเดียวแต่ hash output ต่างกันราวฟ้ากับดิน

เช่น

"test" ---SHA256---> 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
"Test" ---SHA256---> 532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25

เป็นที่มาว่า blockchain ที่เกิดขึ้นบนโลกทั้งหมด “hash ข้อมูลกันตลอด”

ซึ่งบนโลกมีวิธีการ hash กันมากมาย ตัวอย่างที่ cryptocurrencies blockchain ใช้กัน เช่น

  • Bitcoin: จะใช้ SHA256
  • Ethereum: จะใช้ Ethash
  • เป็นต้น

งั้นเรามาดูสองตัวนี้กันดีกว่าว่ามีลักษณะเป็นอย่างไร

SHA256

การเข้ารหัสข้อมูลแบบหนึ่ง ที่ทำให้เราได้ข้อมูลออกมาใหม่ในขนาด 256 bit / 32 byte / HEX 64 ตัว เช่น

" " ---SHA256---> 36A9 E7F1 C95B 82FF B997 43E0 C5C4 CE95 D83C 9A43 0AAC 59F8 4EF3 CBFA B614 5068 (hex 64 digit)
NOTE: hex 2 digits = 1 byte = 8 bits

EXTRA: SHA256 Hash Generator

ทำไม bitcoin ถึงเลือก SHA256 ในการ hash ข้อมูล ?

1. เป็น one-way hash function

คุณไม่สามารถ de-hashing ข้อมูลเดิมกลับมาได้ ยกเว้นจะ brute-force output ไปเรื่อยๆ

2. เพื่อจุดประสงค์ในการ Mining

SHA256 เหมาะกับการขุดแบบ Proof-of-Work มาก เพราะถ้ามี super computer ที่สามารถ brute-force การ hash ข้อมูลได้มากกว่า 1,000,000 hashต่อวินาที ก็สามารถถอด SHA256 ได้คับ ซึ่งพิสูจแล้วโดยคนทั้งโลกที่ขุดกันอยู่ในตอนนี้

all bitcoin hashrate in the world

EXTRA: SHA256 สามารถ brute-force ได้ อ่านต่อ

3. เหมาะกับการนำมาสร้าง Wallet address เป็นที่สุด

เนื่องจากการสร้าง wallet address ต้องประกอบด้วย 2 อย่างคือ

1. public key

2. private key

EXTRA: อ่านเรื่อง public key / private keyต่อได้ใน wiki

ซึ่ง public key มันยาววววมาก

[ตัวอย่าง]
Public Key: 3048 0241 00C9 18FA CF8D EB2D EFD5 FD37 89B9 E069 EA97 FC20 5E35 F577 EE31 C4FB C6E4 4811 7D86 BC8F BAFA 362F 922B F01B 2F40 C744 2654 C0DD 2881 D673 CA2B 4003 C266 E2CD CB02 0301 0001

จึงต้องย่อให้ public key สั้นลงก่อน โดยหนึ่งในกระบวกการการย่อ public key ของ bitcoin คือการ hash ด้วย SHA256

อ่านเพิ่ม: https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

เพราะฉะนั้น public key ที่ผ่านกระบวนการย่อแล้วจะอยู่ในรูปที่สั้น และดูง่าย(มั้ง 🤣) และเราจะเรียกมันว่า wallet address นั่นเอง

[ตัวอย่าง wallet address]
34K5Qqeb6FP1zgSVbgpQRbN2GH6AsECV1P (โอนมาได้นะไม่ว่ากัน 😁)

ทั้งหมดคือเหตุผลที่ bitcoin เลือก SHA256 ในการ hash ข้อมูลครับ

Ethash

Ethash algorithm ของฝั่ง Ethereum ที่ใช้นั้นซับซ้อนกว่าของ bitcoin อยู่หลายเท่ามาก มันไม่ใช่แค่การเอาข้อมูลมา hash ธรรมดาอีกต่อไป

เนื่องจากมีสิ่งที่เรียกว่า Directed Acyclic Graph (DAG) เพิ่มเข้ามา

DAG คืออะไร?

คือ กราฟทางคณิตศาสตร์แบบหนึ่งที่ถูกสร้างขึ้นจาก 2 algorithm คือ 1. Vitalik Buterin’s Dagger algorithm และ 2. Thaddeus Dryja’s Hashimoto algorithm.

โอ้โหแค่คำนิยามมันก็งงแล้วครับ 🤪 งั้นเราขอพูดให้ง่ายกว่านี้นิดนึง

DAG เป็นข้อมูลขนาดใหญ่ที่ถูกสร้างจากความยาวของ Etereum blockchain และจำเป็นต่อการคำนวนใน mix-hash function

ซึ่ง DAG จะถูกเพิ่มขนาดทุกๆ 30,000 blocks (หรือประมาณ 5 วันโดยประมาณ) ณ ปัจจุบันขนาดพุ่งไปที่ 2GB เป็นที่เรียบร้อยแล้ว

https://investoon.com/tools/dag_size

แล้ว mix-hash function คืออะไร ?

เป็น hash function ที่ทาง Ethereum คิดขึ้นมาเองโดยหลักๆจะใช้ SHA3 + DAG ในการ hashing data และไม่ได้ hash แค่ครั้งเดียวทำถึง 64 ครั้ง 😱 ทำให้การ hashing แบบ Ethash ต่างจาก SHA256 ของ Bitcoin อย่างมาก

ref: https://www.vijaypradeep.com/blog/2017-04-28-ethereums-memory-hardness-explained/

Ethash เราไม่สามารถเขียนเป็นบล็อกอธิบาย algorithm ตัวนี้ได้หมดเพียงแค่พามารู้จักเท่านั้น เพราะเป็นเรื่องที่ซับซ้อนมาก

สามารถเข้าไปศึกษาเพิ่มเติมได้ที่ DAG และ เหตุผลที่ใช้ ETHASH ใน wiki ของ Ethereum ต่อกันได้

สรุป

มาสรุปกันอีกรอบเหตุผลหลักๆที่ blockchain ต้องการ hash ข้อมูล

  1. ต้องการใช้เป็น ID ให้กับข้อมูล (unique)
  2. ต้องการความเร็วในการคำนวน/เปรียบเทียบ
  3. ต้องการ one-way function ที่ไม่สามารถถอดกลับเป็นข้อมูลเดิมได้
  4. เปลี่ยนข้อมูลแค่เสี้ยวเดียวแต่ hashing output ต่างกันราวฟ้ากับเหว

บล็อกต่อไปจะเป็นการอธิบายเกี่ยวกับ Block ข้อมูลที่อยู่ใน Blockchain ว่ามีค่าอะไรที่สำคัญบ้าง

EXTRA: hash สมการเบื้องหลัง bitcoin (blockchain)

วันนี้พอแค่นี้เจอกันบล็อกหน้าเนาะ 😎

 

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

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

Share:

KNOWLEDGE

Related Articles

เข้าใจการทำ Selector แบบ Ripple effect
Nonthawit

Nonthawit

CEO | Engineer | Designer

เข้าใจการทำ Selector แบบ Ripple effect

20 สิ่ง ที่ได้หลังจากเป็น Android developer ที่ Nextzy 3 เดือน
Nonthawit

Nonthawit

CEO | Engineer | Designer

20 สิ่ง ที่ได้หลังจากเป็น Android developer ที่ Nextzy 3 เดือน

บทความนี้แชร์ประสบการณ์ 3 เดือนแรกของการทำงานเป็น Android Developer ที่ Nextzy ครอบคลุมทั้งด้าน technical เช่น MVP architecture, Android Lifecycle, ProGuard, Git workflow และการเขียน Unit Test รวมถึงด้าน soft skill อย่างการสื่อสารกับทีม, การแชร์ความรู้, และการเขียนโค้ดให้ readable และยืดหยุ่น นอกจากนี้ยังสะท้อนวัฒนธรรมองค์กรที่เน้นทีมเวิร์ค การ review โค้ด และบรรยากาศการทำงานที่สนุกสนาน ซึ่งล้วนช่วยลด learning curve และพัฒนาทักษะได้เร็วกว่าการเรียนรู้คนเดียว

[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก
Nonthawit

Nonthawit

CEO | Engineer | Designer

[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก

NEXTZY Logo
NEXTZY
48/27 Ratchadaphisek Rd, Samsen Nok, Huai Khwang, Bangkok 10310

Base at Thailand

Thailand

Home

Crews

Success

Download press kits

Knowledges

Chat

Talk with team

SCHEDULE