กลไกของ Blockchain ใน BitCoin : เทคโนโลยี ผสมพฤติกรรมผู้บริโภคเปลี่ยนโลกได้ (ตอนที่ 1)

กลไกของ Blockchain ใน BitCoin : เทคโนโลยี ผสมพฤติกรรมผู้บริโภค...เปลี่ยนโลกได้ (ตอนที่ 1)
ในช่วงที่ผ่านมา ถ้าใครติดตามด้านเทคโนโลยี หรือ ด้านการเงินการธนาคาร ก็คงได้ยินคำว่า Blockchain กันบ่อย ๆซึ่งล่าสุดได้มีธนาคารยักษ์ใหญ่ในประเทศไทย ทั้ง ธนาคารไทยพาณิชย์ และ ธนาคารกสิกรไทย ก็ได้กระโดดลงมาใช้งานเทคโนโลยี Blockchain อย่างจริงจัง [1,2]
โดยมี IBM และ Microsoft ประเทศไทยเป็นโต้โผใหญ่ทางฝั่งเทคโนโลยี [1,3] และแหล่งข่าวต่าง ๆ ต่างก็ออกมาประสานเป็นเสียงเดียวกัน ว่าเทคโนโลยี Blockchain จะมาเปลี่ยนโลกของเรา
Blockchain เป็นเทคโนโลยีการเก็บข้อมูลแบบกระจาย (Distributed Systems) ผ่านเครือข่ายแบบ peer-to-peer ของอาสาสมัครที่ไม่มีใครใหญ่กว่าใคร
ไม่มีใครเป็นเจ้าของ และทำให้การแก้ไขอดีตของข้อมูลทำได้ยาก จึงเป็นเหตุให้สามารถนำมาใช้สร้างความน่าเชื่อถือระหว่าง 2 ฝ่ายโดยไม่จำเป็นต้องรู้จักกัน
และไม่ต้องมีองค์กรกลางมาเป็นคนรับประกันความน่าเชื่อถือ รวมถึงไม่ต้องมีเจ้าภาพในการเก็บข้อมูล
ซึ่งสกุลเงินดิจิทัลอย่าง Bitcoin ที่ใช้เทคโนโลยี Blockchain นี้เองที่ทำให้เทคโนโลยี Blockchain เป็นที่รู้จักอย่างแพร่หลาย [4]
Bitcoin เป็นสกุลเงินดิจิทัล ที่ถูกสร้างขึ้นโดย Satoshi Nakamoto ซึ่งเป็นชื่อสมมุติของบุคคลที่ยังไม่มีใครทราบตัวตนที่แท้จริง
สกุลเงิน Bitcoin เกิดขึ้นจากการทำงานของซอฟต์แวร์ Bitcoin บนกลุ่มของเครื่องคอมพิวเตอร์อาสาสมัครที่มีการเชื่อมต่อแบบ peer-to-peer
การใช้จ่ายเงินสกุล Bitcoin จะต้องถูกบันทึกลงระบบการบันทึกข้อมูลที่เรียกว่า Blockchain
โดยมีการบันทึกแบบอ้างอิงข้อมูลก่อนหน้า เพื่อป้องกันการแก้ไขข้อมูลที่บันทึกไปแล้ว ทำให้ผู้ใช้งานสามารถสืบประวัติการใช้เงินของกันและกันได้
ดังนั้น จึงเป็นการสร้างความน่าเชื่อถือทางการเงินโดยไม่ต้องผ่านธนาคารหรือหน่วยงานกลางใด ๆ
การใช้จ่ายเงินสกุล Bitcoin จึงมีค่าธรรมเนียมต่ำกว่าการใช้จ่ายเงินผ่านธนาคารอย่างมาก และสามารถใช้จ่ายได้โดยไม่จำเป็นต้องรู้ตัวตนที่แท้จริงของผู้ใช้จ่าย
เพียงทราบรหัสกระเป๋าสตางค์ดิจิทัลและคีย์ ก็สามารถใช้จ่ายและรับเงินสกุล Bitcoin ได้ทันที
หากคุณไปทำงานต่างประเทศแล้วต้องโอนเงินให้ครอบครัวข้ามประเทศ
โดยปกติ คุณต้องเสียค่าธรรมเนียม 50 ดอลล่าร์สำหรับการ wiring เงินข้ามประเทศผ่านธนาคาร
และใช้เวลาเป็นสัปดาห์กว่าธนาคารจะเคลียร์และครอบครัวของคุณจะใช้เงินได้
แต่ถ้าคุณใช้ Bitcoin คุณก็สามารถโอนเงินได้โดยเสียค่าธรรมเนียมเพียงเล็กน้อย และ ใช้เวลาไม่กี่นาทีเท่านั้น
หรืออีกตัวอย่างหนึ่ง หากคุณไปเที่ยวต่างประเทศในบางประเทศ ก็ไม่จำเป็นต้องแลกเงินสกุลของประเทศนั้นพกติดตัวเป็นปึก
หรือใช้บัตรเครดิตที่ชาร์จค่าแลกเงินเพิ่มอีก 3% แต่คุณสามารถใช้จ่ายด้วยเงินสกุล Bitcoin ผ่านแอปพลิเคชันบนโทรศัพท์มือถือของคุณได้ทันที
นอกจากนี้ หากคุณทำธุรกิจให้กู้เงินสกุล Bitcoin คุณก็สามารถสืบค้นการใช้เงินของลูกหนี้ของคุณได้
ทำให้ทราบว่าลูกหนี้ของคุณน่าเชื่อถือมากน้อยเพียงใดก่อนจะปล่อยกู้
สิ่งเหล่านี้เกิดขึ้นได้เนื่องจาก Bitcoin ใช้การเก็บข้อมูลบน Blockchain ที่ไม่มีใครเปลี่ยนแปลงข้อมูลได้นั่นเอง
ทำให้ข้อมูลที่เก็บมีความน่าเชื่อถือสูง แต่เสียค่าใช้จ่ายน้อย เนื่องจากใช้เครื่องคอมพิวเตอร์ของอาสาสมัครในการให้ระบบทำงาน
เนื่องจาก Bitcoin และ Blockchain กำลังมีผลกระทบอย่างใหญ่หลวงกับวงการการเงินการธนาคาร
ธนาคารยักษ์ใหญ่ของโลก 9 แห่ง ได้แก่ Barclays, JPMorgan, Credit Suisse, Goldman Sachs, State Street, UBS, Royal Bank of Scotland, BBVA และ Commonwealth Bank of Australia
จึงได้รวมตัวกันเป็น R3 Consortium เพื่อวางมาตรฐานให้กับ Blockchain
ในขณะที่บริษัทยักษ์ใหญ่ด้านเทคโนโลยีของโลก ได้แก่ Linux Foundation, Accenture, Cisco, IBM, Intel Fujitsu, VMware ฯลฯ ก็รวมกลุ่มกันเป็น Hyperledger Project
เพื่อพัฒนา Blockchain สำหรับโลกธุรกิจขึ้น เพื่อนำ Blockchain มาประยุกต์ใช้ในด้านอื่น ๆ ที่หลากหลาย [6]
รัฐบาลหลายประเทศกำลังจะใช้ Blockchain เพื่อเก็บข้อมูลสำคัญ ๆ ของประเทศ เช่น ข้อมูลสุขภาพ และข้อมูลในตลาดหุ้น
รวมถึงหลายธนาคารทั้งในประเทศและต่างประเทศกำลังเปลี่ยนมาใช้ private blockchain เพื่อเก็บประวัติธุรกรรมทางการเงินของลูกค้า
ทำให้สามารถตรวจสอบเครดิตลูกค้าได้อย่างรวดเร็วและแม่นยำยิ่งขึ้น
ถึงแม้ว่าเราสามารถหาข้อมูลทั่วไปเกี่ยวกับ Blockchain และ Bitcoin จากสื่อต่าง ๆ มากมาย
แต่บทความนี้ขออธิบายการทำงานที่ลึกซึ้งกว่านั้น
การทำงานของ Bitcoin ได้นำทั้งเทคโนโลยีด้าน peer-to-peer networks, security, การเข้ารหัส และพฤติกรรมผู้บริโภคมารวมเข้าด้วยกัน
ทำให้สามารถแก้ปัญหาที่ distributed system ทั่วไปแก้ไม่ได้ และกลายเป็นระบบที่ทรงประสิทธิภาพและให้ความปลอดภัยสูงได้อย่างน่าอัศจรรย์
บทความนี้ได้สรุปข้อมูลมาจากคอร์สของ Coursera [5] ที่ชื่อว่า “Bitcoin and Cryptocurrency Technologies” โดย Arvind Narayanan ผู้ช่วยศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ แห่งมหาวิทยาลัย Princeton
ซึ่งได้อธิบายการทำงานของ Bitcoin และ Blockchain ของ Bitcoin
ผู้อ่านบทความนี้อาจต้องมีความรู้ด้านคอมพิวเตอร์พอสมควร และต้องการรู้การทำงานเบื้องลึกของ Bitcoin และ Blockchain
ในตอนที่ 1 นี้ต้องขออธิบายคำศัพท์เฉพาะทาง 3 คำนี้ก่อน นั่นคือ
Hash Function, Hash Pointer, และ Digital Signature ซึ่งเป็นพื้นฐานของการทำงานของ Bitcoin
หากท่านผู้อ่านทราบการทำงานของสิ่งเหล่านี้แล้ว ก็อาจข้ามหัวข้อเหล่านี้ ไปอ่านต่อในตอนที่ 2 ได้เลยค่ะ
Hash Function
Hash Function คือฟังก์ชันที่ทำหน้าที่แปลงค่าของ x ให้เป็น y เขียนเป็นสัญลักษณ์ทางคณิตศาสตร์ด้วย H(x) = y โดยค่า y ที่ได้ จะไม่ซ้ำกัน
เช่น ถ้า y1 มาจาก H(x1) และ y2 มาจาก H(x2) ถ้า x1 ≠ x2 แล้ว y1 ≠ y2 อย่างแน่นอน
เราเรียกคุณสมบัตินี้ว่า collision free หรือผลลัพธ์ที่ได้ไม่มีทางได้ค่าที่ชนกันนั่นเอง
ในการสร้าง Hash Function จริงๆ เราไม่จำเป็นต้องแน่ใจก็ได้ว่าผลลัพธ์จะไม่ชนกันจริงๆ เราเพียงแน่ใจว่า y ที่ได้จากการแฮช จะมีโอกาสน้อยมากๆที่จะซ้ำกัน
เช่น ถ้าเรากำหนดให้ผลลัพธ์จากการแฮชเป็นตัวเลขขนาด 256 บิต ค่า y ก็จะมีค่าตั้งแต่ ศูนย์ จนถึง (2256 -1) ซึ่งมีจำนวนมากๆๆๆ จึงมีความเป็นไปได้น้อยมากๆๆๆที่จะชนกัน
เราสามารถนำ Hash Function มาประยุกต์ใช้ในการเปรียบเทียบไฟล์
เช่น ไฟล์ใหม่มีเนื้อหาเหมือนไฟล์เก่าหรือไม่ แทนที่จะเทียบทั้งสองไฟล์ทีละบิต ก็ใช้ผลลัพธ์จากการแฮชทั้งสองไฟล์ ซึ่งมีขนาดเล็กกว่าไฟล์ทั้งไฟล์มาก ก็สามารถบอกได้ว่าไฟล์ทั้งสองมีเนื้อหาเหมือนกันหรือไม่
คุณสมบัติที่ 2 ของ Hash Function คือ Hiding นั่นคือ ถ้าเรารู้ผลลัพธ์จากการแฮช y = H(x) จะไม่มีใครสามารถถอดรหัสกลับไปเป็นค่า input x ได้
คุณสมบัติที่ 3 ของ Hash Function คือ Puzzle Friendly หมายความว่า ถ้าเรามีผลลัพธ์จากการแฮช y = H(x) จะไม่มีใครสามารถใช้แนวคิดฉลาด ๆ อะไรเพื่อถอดรหัสกลับไปเป็นค่า input x ได้
นอกเสียจาก ต้องไล่แฮชไปเรื่อยๆ จนกว่าจะเจอค่า x ที่ถูกต้องเท่านั้น
Bitcoin ใช้ SHA-256 เป็น Hash Function ซึ่งทำงานดังนี้
- แบ่งข้อความที่ต้องการซ่อนเป็นบล็อก บล็อกละ 512 บิต หากบล็อกสุดท้ายไม่ครบ 512 บิต ให้นำ 1000…มาเติมจนครบ 512 บิต
- นำค่า IV ขนาด 256 บิตใดๆมาต่อกับข้อความบล็อกแรก จะได้ข้อมูลขนาด 768 บิต
- นำมาผ่านฟังก์ชันแฮช c จะได้เป็นค่าแฮชขนาด 256 บิต
- นำค่าที่ได้ในข้อ 3 ไปเป็น IV ตัวใหม่ ไปดำเนินการกับข้อความบล็อกต่อไปตามที่ระบุในข้อ 2-4 จนครบทุกบล็อก
- เราจะได้ค่าแฮชขนาด 256 บิต ที่ไม่มีการชนกัน ถ้าฟังก์ชัน c เป็นฟังก์ชันที่ไม่มีการชนกัน
โครงสร้างข้อมูลและ Hash Pointer
ก่อนอื่นขออธิบายคำว่า Pointer ก่อนนะคะ ถ้าใครรู้จัก Pointer แล้ว ก็ข้ามย่อหน้านี้ไปได้ค่ะ
Pointer ในทางคอมพิวเตอร์ คือ หน่วยความจำที่เก็บค่า address ของหน่วยความจำอีกที
เราจะมองว่าหน่วยความจำในคอมพิวเตอร์เก็บค่าเป็นช่อง ๆ ดังแสดงในรูปที่ 1 ด้านล่าง
เช่น เราเก็บค่า “x” ไว้ที่ช่องหมายเลข 10 หมายความว่า address ที่เก็บค่า “x” ไว้มีค่าเท่ากับ 10 และค่าที่เก็บไว้ คือค่า “x”
ถ้าหากเราให้ช่องหมายเลข 11 เก็บค่า 10 แปลว่า ช่องที่ 11 เก็บ address ของค่า “x” ไว้ นั่นก็คือช่องที่ 11 ทำหน้าที่เป็น pointer (ตัวชี้) ของค่า “x” นั่นเอง
ช่องที่ | ค่า |
10 | x |
11 | 10 |
รูปที่ 1 หน่วยความจำสมมุติ
ตัวอย่างง่าย ๆ ของการใช้งาน Pointer ได้แก่ การเก็บข้อมูลแบบ Linked List โดย Linked List 1 ตัวจะมีการเก็บข้อมูลและเก็บ address ของตัวถัดไป เพื่อให้สามารถลบข้อมูลตัวที่อยู่ตรงกลาง List ได้ง่ายกว่าการเก็บข้อมูลแบบต่อกันไปเรื่อย ๆ
ช่องที่ | ค่า |
1 | a |
2 | 9 |
3 | c |
4 | 7 |
5 | e |
6 | <<END>> |
7 | d |
8 | 5 |
9 | b |
10 | 3 |
รูปที่ 2 ตัวอย่าง Linked List อย่างง่าย ในรูปแบบช่องตาราง
ซึ่งเราอาจวาดรูป Linked List ในรูปที่ 2 ให้เข้าใจง่าย ๆ ได้ดังนี้

Hash Pointer ของ Blockchain จะนำข้อมูลของบล็อกก่อนหน้ามาผ่าน Hash Function แล้วนำผลลัพธ์ที่แฮชได้มาทำเป็น Hash Pointer ให้กับบล็อกถัดไป
เพื่อให้บล็อกถัดไปอ้างอิงว่าต่อมาจากบล็อกใด ดังนั้น ส่วน Hash Pointer จะทำหน้าที่ 2 อย่างด้วยกันคือ
ดังนั้น การใช้ Merkle Tree จะทำให้การพิสูจน์ว่าบล็อกใด ๆ อยู่ใน Tree หรือไม่จะใช้เวลาเพียง O(log N) ตามความสูงของ Tree
Digital Signature
Digital Signature มีคุณสมบัติเหมือนลายเซ็นในโลกแห่งความจริง กล่าวคือ มีเพียงเจ้าของลายเซ็นเท่านั้นที่เซ็นได้ และเมื่อเซ็นแล้วจะมีผลผูกพันธ์กับเอกสารที่ถูกลงนามนั้นเท่านั้น
การทำงานของ Digital Signature มีขั้นตอนการทำงานดังนี้
และเป็นการพิสูจน์ว่า blockchain ก่อนหน้าเป็นข้อมูลที่ถูกต้องและสามารถพิสูจน์ได้ว่ามีใครแก้ไขข้อมูลในภายหลังหรือไม่
นอกจากนี้ public key ยังถูกใช้เป็น identity เพื่อระบุตัวตนของผู้ใช้ blockchain
ดังนั้นการใช้ secret key เซ็น message ใดๆ จะเป็นการระบุว่าผู้นั้นได้ยอมรับ message นั้นว่าเป็นความจริงอีกด้วย
หากต้องการซ่อนตัวตนของผู้ใช้งาน ผู้ใช้งานควรเปลี่ยน public key/secret key บ่อย ๆ เพราะการใช้ public key/secret key เดิม
จะทำให้ผู้ใช้งาน blockchain คนอื่นเห็นความเกี่ยวเนื่องของการใช้งาน blockchain
และสามารถสืบหาตัวตนของผู้ใช้งานเจ้าของ public key/secret key นั้นๆ ได้
เมื่อเราเข้าใจความรู้พื้นฐานที่ใช้สร้าง Bitcoin กันแล้ว ตอนหน้าเราจะมาลงลึกถึงกลไกการทำงานของ Bitcoin ซึ่งเป็น Cryptocurrency (สกุลเงินเข้ารหัส) ต่อไปนะคะ
ที่มา
ผศ.ดร.เนื่องวงศ์ ทวยเจริญ
ภาควิชาวิศวกรรมคอมพิวเตอร์ วิทยาลัยนวัตกรรมด้านเทคโนโลยีและวิศวกรรมศาสตร์
มหาวิทยาลัยธุรกิจบัณฑิตย์
เพื่อให้บล็อกถัดไปอ้างอิงว่าต่อมาจากบล็อกใด ดังนั้น ส่วน Hash Pointer จะทำหน้าที่ 2 อย่างด้วยกันคือ
- อ้างอิงบล็อกก่อนหน้า
- พิสูจน์ว่าไม่มีการเปลี่ยนแปลงค่าข้อมูลของบล็อกก่อนหน้า (เพราะถ้ามีการเปลี่ยนแปลงค่าในบล็อกก่อนหน้า ค่าแฮชของบล็อกก่อนหน้าและค่าจาก Hash Pointer ก็จะไม่เท่ากัน ทำให้รู้ว่ามีการเปลี่ยนแปลงข้อมูลในบล็อกก่อนหน้า)
ดังนั้น การใช้ Merkle Tree จะทำให้การพิสูจน์ว่าบล็อกใด ๆ อยู่ใน Tree หรือไม่จะใช้เวลาเพียง O(log N) ตามความสูงของ Tree
Digital Signature
Digital Signature มีคุณสมบัติเหมือนลายเซ็นในโลกแห่งความจริง กล่าวคือ มีเพียงเจ้าของลายเซ็นเท่านั้นที่เซ็นได้ และเมื่อเซ็นแล้วจะมีผลผูกพันธ์กับเอกสารที่ถูกลงนามนั้นเท่านั้น
การทำงานของ Digital Signature มีขั้นตอนการทำงานดังนี้
- เจ้าของลายเซ็นสร้าง secret key และ public key ของตนเองขึ้น
- เจ้าของลายเซ็นนำ secret key มาเซ็นลงในเอกสาร message ได้เป็นเอกสารใหม่ชื่อ sig (หมายความว่าเป็นเอกสารที่ผ่านการลงนามเรียบร้อยแล้ว)
- นำเอกสาร sig ส่งให้ฝ่ายอื่นๆ ที่เกี่ยวข้อง
- ฝ่ายที่เกี่ยวข้องนำ public key ของเจ้าของลายเซ็นพร้อมกับ message และเอกสาร sig มาพิสูจน์ หากเอกสาร sig มาจากลายเซ็นที่ถูกต้อง ขั้นตอนนี้ก็จะยอมรับเอกสาร sig นั้นว่าได้ผ่านการลงนามที่ถูกต้อง
และเป็นการพิสูจน์ว่า blockchain ก่อนหน้าเป็นข้อมูลที่ถูกต้องและสามารถพิสูจน์ได้ว่ามีใครแก้ไขข้อมูลในภายหลังหรือไม่
นอกจากนี้ public key ยังถูกใช้เป็น identity เพื่อระบุตัวตนของผู้ใช้ blockchain
ดังนั้นการใช้ secret key เซ็น message ใดๆ จะเป็นการระบุว่าผู้นั้นได้ยอมรับ message นั้นว่าเป็นความจริงอีกด้วย
หากต้องการซ่อนตัวตนของผู้ใช้งาน ผู้ใช้งานควรเปลี่ยน public key/secret key บ่อย ๆ เพราะการใช้ public key/secret key เดิม
จะทำให้ผู้ใช้งาน blockchain คนอื่นเห็นความเกี่ยวเนื่องของการใช้งาน blockchain
และสามารถสืบหาตัวตนของผู้ใช้งานเจ้าของ public key/secret key นั้นๆ ได้
เมื่อเราเข้าใจความรู้พื้นฐานที่ใช้สร้าง Bitcoin กันแล้ว ตอนหน้าเราจะมาลงลึกถึงกลไกการทำงานของ Bitcoin ซึ่งเป็น Cryptocurrency (สกุลเงินเข้ารหัส) ต่อไปนะคะ
ที่มา
- TechTalkThai (November 3, 2016). “ธนาคารกสิกรไทยจับมือ IBM นำ Blockchain มาสร้างบริการระบบจัดเก็บเอกสาร ใช้ยืนยันทางธุรกิจหรือกฎหมายได้แทนเอกสารกระดาษ เปิดให้ทุกองค์กรมาร่วมใช้งาน” . เข้าถึงได้จาก: https://www.techtalkthai.com/kasikorn-bank-and-ibm-offer-new-blockchain-based-service-to-enterprise-in-thailand/
- blognone (September 16, 2016). “ไทยพาณิชย์ลงทุนใน Ripple สตาร์ตอัพระดับโลกด้าน Blockchain สำหรับธนาคาร” . เข้าถึงได้จาก: https://www.blognone.com/node/85570
- Tech Sauce (Feb 12, 2017). “ไมโครซอฟท์ไทยออกคู่มือปฏิบัติสำหรับสถาบันการเงิน ในการใช้งานระบบคลาวด์และบล็อกเชน” . เข้าถึงได้จาก: https://www.blognone.com/node/90293
- Tech Sauce (4 พ.ค. 2016). “ทำความเข้าใจ Blockchain ใน 5 นาที สำคัญอย่างไร และเกี่ยวข้องอย่างไรกับ FinTech” เข้าถึงได้จาก: https://techsauce.co/technology/blockchain/understand-blockchain-in-5-minutes/.
- Arvind Narayanan (April 2017). “Bitcoin and Cryptocurrency Technologies”. เข้าถึงได้จาก: https://www.coursera.org/learn/cryptocurrency/.
- Dan Tapscott and Alex Tapscott (2016). “Blockchain Revolution”. Penguin Random House LLC.
ผศ.ดร.เนื่องวงศ์ ทวยเจริญ
ภาควิชาวิศวกรรมคอมพิวเตอร์ วิทยาลัยนวัตกรรมด้านเทคโนโลยีและวิศวกรรมศาสตร์
มหาวิทยาลัยธุรกิจบัณฑิตย์
Tags: