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

กลไกของ Blockchain ใน BitCoin : เทคโนโลยี ผสมพฤติกรรมผู้บริโภค...เปลี่ยนโลกได้ (ตอนที่ 2)
ในตอนที่ 1 เราได้เรียนรู้ถึงความรู้พื้นฐานที่ใช้สร้าง Bitcoin กันแล้ว ไม่ว่าจะเป็น Hash Function, Hash Pointer, และ Digital Signatureในตอนที่ 2 นี้จะขออธิบายถึงกลไกการทำงานของ Bitcoin ซึ่งเป็น Cryptocurrency (สกุลเงินเข้ารหัส) กันนะคะ
Bitcoin: Cryptocurrency
การทำงานของระบบสกุลเงินดิจิทัลอย่าง Bitcoin หรือที่เรียกว่า Crytocurrency ทำงานดังนี้
- ผู้ใช้สามารถสร้างเหรียญของตนเองได้ (ซึ่งต้องเป็นไปตามกฏของ Bitcoin)
- โดยสร้างด้วย Transaction ที่เรียกว่า CreateCoins แล้วระบุผู้รับเหรียญเป็นตัวเอง
- จากนั้นเซ็นชื่อ (Digital Signature) เพื่อกำกับความถูกต้อง

รูปที่ 1 ตัวอย่าง CreateCoins Transaction
- ผู้ใช้ที่มีเหรียญ สามารถจ่ายเหรียญให้ผู้อื่น
- โดยการสร้าง Transaction ที่เรียกว่า PayCoins ระบุเหรียญที่จะใช้จ่าย(Consumed coins) ในรูปของ transactionID(IDเหรียญ) โดยค่าของเหรียญที่ใช้จ่าย ต้องมีค่ามากกว่าหรือเท่ากับเหรียญที่ถูกสร้างขึ้น(Coins created)ด้านล่าง
- จากนั้นระบุการใช้จ่ายด้านล่างว่าจะสร้างเหรียญให้ใครเท่าไร
- สุดท้ายเจ้าของเหรียญ Consumed coins ทุกคนเซ็นชื่อ (Digital Signature) เพื่อกำกับความถูกต้อง
- เมื่อเครื่องคอมพิวเตอร์โหนดใดในเน็ตเวิร์กของ Bitcoin ได้รับ PayCoins Transaction ก็จะตรวจสอบว่าค่าของเหรียญใน Comsumed Coin เพียงพอกับ Coins created หรือไม่
- ถ้าเพียงพอ จะถือว่า Transaction นี้ถูกต้อง

รูปที่ 2 ตัวอย่าง PayCoins Transaction
โดยต้อง publish transaction ทั้งหมดลงใน blockchain เพื่อให้ผู้ใช้งานทั้งหมดในระบบตรวจสอบได้
โดย transaction ทั้งหมดใน blockchain จะถูกเก็บในบล็อกซึ่งเก็บแบบ Merkle Tree
และแต่ละ transaction ที่อยู่ต่างบล็อกแต่เกี่ยวข้อกันจะถูกร้อยเรียงเข้าด้วยกันด้วย Hash Pointer
และ มี Digital Signature กำกับเพื่อป้องกันการเปลี่ยนแปลงข้อมูลในภายหลัง
Decentralization: Distributed Consensus
Distributed Consensus เป็นโปรโตคอลที่ใช้เพื่อกำจัดการทำงานแบบรวมศูนย์ (Centralization)
ด้วยการใช้เครือข่ายแบบ peer-to-peer ที่มีเครื่องคอมพิวเตอร์หลายโหนดของอาสาสมัครติดตั้งและรันโปรแกรม Bitcoin
เพื่อเก็บข้อมูล ledger (บัญชีต่างๆที่อยู่บน blockchain) และคำนวณในการ mining (เครื่องคอมพิวเตอร์ที่คำนวณในการ mining ซึ่งเป็นการแก้ puzzle จะถูกเรียกว่า miner node)
โปรโตคอล Distributed Consensus จะกระจายข้อมูลที่ถูกต้องไปยังโหนดต่าง ๆ ในเน็ตเวิร์กของ Bitcoin
และเมื่อกระจายครบก็จะจบการทำงานแต่ละโหนดในเน็ตเวิร์กของ Bitcoin จะทำหน้าที่ดังนี้
โหนด miner นั้นจะนำ transaction ที่ถูกต้องที่สะสมไว้มาสร้างบล็อกใหม่ลงใน blockchain โดยแต่ละบล็อกมีขนาดไม่เกิน 1MB
จากนั้นนำบล็อกใหม่ไปต่อที่สายของบล็อกซึ่งมีจำนวนบล็อกที่ต่อเนื่องกันยาวที่สุด ( Longest Consensus Branch) แล้วส่งต่อบล็อกใหม่นั้นให้โหนดอื่นต่อไป
ในระบบแบบ Distributed Systems แต่ละโหนดจะได้รับ transaction ที่มีลำดับไม่ตรงกัน
เนื่องจากตำแหน่งของโหนดในเน็ตเวิร์กต่างกัน และอาจทำให้มี transaction ที่สะสมไว้ไม่เหมือนกัน
แต่สำหรับเน็ตเวิร์กของ Bitcoin สิ่งนี้ไม่ใช่ปัญหา เพราะถึงแม้ว่า miner จะยังไม่ได้รับ transaction ของเรา
แต่สร้างบล็อกใหม่ไปแล้ว แต่วันหนึ่งก็จะมี miner ที่ได้รับ transaction ของเราแล้วมีสิทธิ์สร้างบล็อกใหม่ ดังนั้น transaction ของเราจะไปอยู่ใน Blockchain ในที่สุดนั่นเอง
คำถามต่อมาก็คือ ถ้ามี Double Spending Attack เกิดขึ้น โดยมี transaction ที่ขัดแย้งกัน(เช่น เราจ่ายเงินเหรียญเดียวกันให้คนสองคน)ถูกวางบนสายบล็อกที่แยกกัน
แล้วระบบ blockchain จะรู้ได้อย่างไรว่า transaction ไหนเป็น transaction ที่ถูกต้อง คำตอบก็คือ blockchain ไม่มีทางรู้ (อ้าว?)
ผู้รับเงินของ transaction นั้นอาจรอจนกระทั่ง transaction ของตนขึ้นไปอยู่บน blockchain แล้วมีบล็อกอื่นมาต่อไปเรื่อยๆ
งานวิจัยได้เสนอว่า หากมีบล็อกมาต่อจากบล็อกที่มี transaction ของเราจำนวน 6 บล็อก ก็สามารถแน่ใจได้ว่า transaction ของเราได้รับการ confirm ความถูกต้องเรียบร้อยแล้ว
นอกจากนี้ Bitcoin ยังฝังระบบเพื่อส่งเสริมพฤติกรรมที่ดีของ miner ให้วางบล็อกใหม่ไว้ที่สายบล็อกที่ยาวที่สุด
กล่าวคือ เมื่อมีโหนด miner ที่แก้ puzzle ได้ จะได้เงินรางวัล(เป็นเงิน 25 Bitcoin หรือประมาณ 15,000 US Dollars และลดลงครี่งหนี่งทุกๆ 4 ปี)
และจะได้เป็นผู้วางบล็อกใหม่ลงใน blockchain และยังได้ transaction fee สำหรับทุก transaction ที่อยู่บนบล็อกใหม่นั้นอีกด้วย
แต่จะได้เงินรางวัลก็ต่อเมื่อวางบล็อกบนสายบล็อกที่ยาวที่สุดเท่านั้น
Puzzle ที่ miner ต้องแก้ถูกเรียกว่า Hash Puzzles นั่นคือ miner ต้องหาตัวเลข (เรียกว่า nonce) ที่เมื่อใส่ลงในบล็อกใหม่ดังรูปที่ 3
แล้วนำไปผ่าน Hash Function จะทำให้ได้ค่าผลลัพธ์ค่าน้อย ๆ ซึ่ง puzzle ดังกล่าว ต้องใช้การไล่สุ่มตัวเลขมารวมกับค่าข้อมูลในบล็อกไปเรื่อยๆ
จนกว่าจะได้ค่าผลลัพธ์ที่ต้องการ ซึ่งต้องใช้การคำนวณอย่างมาก (คำนวณแฮชประมาณ 1020 ครั้ง)
โดยระบบของ Bitcoin จะทำให้การคำนวณยากขึ้นเรื่อย ๆ และความยากจะถูก reset ทุก 2 สัปดาห์ เพื่อให้มีการค้นพบบล็อกใหม่ทุก ๆ 10 นาที
- ผู้ใช้คนที่ 2 ที่รับเหรียญไป สามารถจ่ายเหรียญให้ผู้อื่นได้อีก
- โดยการสร้าง transaction PayCoins ระบุคนรับเหรียญแล้ว
- จากนั้นผู้ใช้คนที่ 2 เซ็นชื่อ (Digital Signature) เพื่อกำกับความถูกต้อง
โดยต้อง publish transaction ทั้งหมดลงใน blockchain เพื่อให้ผู้ใช้งานทั้งหมดในระบบตรวจสอบได้
โดย transaction ทั้งหมดใน blockchain จะถูกเก็บในบล็อกซึ่งเก็บแบบ Merkle Tree
และแต่ละ transaction ที่อยู่ต่างบล็อกแต่เกี่ยวข้อกันจะถูกร้อยเรียงเข้าด้วยกันด้วย Hash Pointer
และ มี Digital Signature กำกับเพื่อป้องกันการเปลี่ยนแปลงข้อมูลในภายหลัง
Decentralization: Distributed Consensus
Distributed Consensus เป็นโปรโตคอลที่ใช้เพื่อกำจัดการทำงานแบบรวมศูนย์ (Centralization)
ด้วยการใช้เครือข่ายแบบ peer-to-peer ที่มีเครื่องคอมพิวเตอร์หลายโหนดของอาสาสมัครติดตั้งและรันโปรแกรม Bitcoin
เพื่อเก็บข้อมูล ledger (บัญชีต่างๆที่อยู่บน blockchain) และคำนวณในการ mining (เครื่องคอมพิวเตอร์ที่คำนวณในการ mining ซึ่งเป็นการแก้ puzzle จะถูกเรียกว่า miner node)
โปรโตคอล Distributed Consensus จะกระจายข้อมูลที่ถูกต้องไปยังโหนดต่าง ๆ ในเน็ตเวิร์กของ Bitcoin
และเมื่อกระจายครบก็จะจบการทำงานแต่ละโหนดในเน็ตเวิร์กของ Bitcoin จะทำหน้าที่ดังนี้
- คอยสอดส่องและสะสม transaction ใหม่ๆที่ถูก publish ออกมา
- ตรวจสอบความถูกต้องของ transaction เช่น ค่าของ consumed coins ต้องมากกว่า created coins
- ส่งต่อ transaction ให้โหนดใกล้เคียง
โหนด miner นั้นจะนำ transaction ที่ถูกต้องที่สะสมไว้มาสร้างบล็อกใหม่ลงใน blockchain โดยแต่ละบล็อกมีขนาดไม่เกิน 1MB
จากนั้นนำบล็อกใหม่ไปต่อที่สายของบล็อกซึ่งมีจำนวนบล็อกที่ต่อเนื่องกันยาวที่สุด ( Longest Consensus Branch) แล้วส่งต่อบล็อกใหม่นั้นให้โหนดอื่นต่อไป
ในระบบแบบ Distributed Systems แต่ละโหนดจะได้รับ transaction ที่มีลำดับไม่ตรงกัน
เนื่องจากตำแหน่งของโหนดในเน็ตเวิร์กต่างกัน และอาจทำให้มี transaction ที่สะสมไว้ไม่เหมือนกัน
แต่สำหรับเน็ตเวิร์กของ Bitcoin สิ่งนี้ไม่ใช่ปัญหา เพราะถึงแม้ว่า miner จะยังไม่ได้รับ transaction ของเรา
แต่สร้างบล็อกใหม่ไปแล้ว แต่วันหนึ่งก็จะมี miner ที่ได้รับ transaction ของเราแล้วมีสิทธิ์สร้างบล็อกใหม่ ดังนั้น transaction ของเราจะไปอยู่ใน Blockchain ในที่สุดนั่นเอง
คำถามต่อมาก็คือ ถ้ามี Double Spending Attack เกิดขึ้น โดยมี transaction ที่ขัดแย้งกัน(เช่น เราจ่ายเงินเหรียญเดียวกันให้คนสองคน)ถูกวางบนสายบล็อกที่แยกกัน
แล้วระบบ blockchain จะรู้ได้อย่างไรว่า transaction ไหนเป็น transaction ที่ถูกต้อง คำตอบก็คือ blockchain ไม่มีทางรู้ (อ้าว?)
ผู้รับเงินของ transaction นั้นอาจรอจนกระทั่ง transaction ของตนขึ้นไปอยู่บน blockchain แล้วมีบล็อกอื่นมาต่อไปเรื่อยๆ
งานวิจัยได้เสนอว่า หากมีบล็อกมาต่อจากบล็อกที่มี transaction ของเราจำนวน 6 บล็อก ก็สามารถแน่ใจได้ว่า transaction ของเราได้รับการ confirm ความถูกต้องเรียบร้อยแล้ว
นอกจากนี้ Bitcoin ยังฝังระบบเพื่อส่งเสริมพฤติกรรมที่ดีของ miner ให้วางบล็อกใหม่ไว้ที่สายบล็อกที่ยาวที่สุด
กล่าวคือ เมื่อมีโหนด miner ที่แก้ puzzle ได้ จะได้เงินรางวัล(เป็นเงิน 25 Bitcoin หรือประมาณ 15,000 US Dollars และลดลงครี่งหนี่งทุกๆ 4 ปี)
และจะได้เป็นผู้วางบล็อกใหม่ลงใน blockchain และยังได้ transaction fee สำหรับทุก transaction ที่อยู่บนบล็อกใหม่นั้นอีกด้วย
แต่จะได้เงินรางวัลก็ต่อเมื่อวางบล็อกบนสายบล็อกที่ยาวที่สุดเท่านั้น
Puzzle ที่ miner ต้องแก้ถูกเรียกว่า Hash Puzzles นั่นคือ miner ต้องหาตัวเลข (เรียกว่า nonce) ที่เมื่อใส่ลงในบล็อกใหม่ดังรูปที่ 3
แล้วนำไปผ่าน Hash Function จะทำให้ได้ค่าผลลัพธ์ค่าน้อย ๆ ซึ่ง puzzle ดังกล่าว ต้องใช้การไล่สุ่มตัวเลขมารวมกับค่าข้อมูลในบล็อกไปเรื่อยๆ
จนกว่าจะได้ค่าผลลัพธ์ที่ต้องการ ซึ่งต้องใช้การคำนวณอย่างมาก (คำนวณแฮชประมาณ 1020 ครั้ง)
โดยระบบของ Bitcoin จะทำให้การคำนวณยากขึ้นเรื่อย ๆ และความยากจะถูก reset ทุก 2 สัปดาห์ เพื่อให้มีการค้นพบบล็อกใหม่ทุก ๆ 10 นาที

รูปที่ 3 ตัวอย่างบล็อกที่ใช้ในการคำนวณ Hash puzzles
นอกจาก nonce, Previous Hash Pointer, transaction ต่าง ๆ แล้ว ในบล็อกยังอาจใส่สคริปต์เพื่อการทำงานพิเศษบางอย่างและข้อมูลอื่น ๆ ได้
ดังนั้นผู้ใช้งานอาจนำข้อมูลอื่น ๆ ที่ต้องการมาใส่ไว้ใน Blockchain ของ Bitcoin ได้อีกด้วย
ในตอนหน้า เราจะพักเรื่องกลไกหนัก ๆ ไปพูดถึงเรื่องเบา ๆ เช่นการใช้งาน Bitcoin การสร้างรายได้จาก Bitcoin และการดำรงอยู่ของ Bitcoin กันค่ะ อย่าพลาดนะคะ
ที่มา
บทความโดย
ผศ.ดร.เนื่องวงศ์ ทวยเจริญ
ภาควิชาวิศวกรรมคอมพิวเตอร์ วิทยาลัยนวัตกรรมด้านเทคโนโลยีและวิศวกรรมศาสตร์
มหาวิทยาลัยธุรกิจบัณฑิตย์
นอกจาก nonce, Previous Hash Pointer, transaction ต่าง ๆ แล้ว ในบล็อกยังอาจใส่สคริปต์เพื่อการทำงานพิเศษบางอย่างและข้อมูลอื่น ๆ ได้
ดังนั้นผู้ใช้งานอาจนำข้อมูลอื่น ๆ ที่ต้องการมาใส่ไว้ใน Blockchain ของ Bitcoin ได้อีกด้วย
ในตอนหน้า เราจะพักเรื่องกลไกหนัก ๆ ไปพูดถึงเรื่องเบา ๆ เช่นการใช้งาน Bitcoin การสร้างรายได้จาก Bitcoin และการดำรงอยู่ของ Bitcoin กันค่ะ อย่าพลาดนะคะ
ที่มา
- 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.
บทความโดย
ผศ.ดร.เนื่องวงศ์ ทวยเจริญ
ภาควิชาวิศวกรรมคอมพิวเตอร์ วิทยาลัยนวัตกรรมด้านเทคโนโลยีและวิศวกรรมศาสตร์
มหาวิทยาลัยธุรกิจบัณฑิตย์