Block Chain เทคโนโลยีเปลี่ยนโลก

Untitled-1

    ช่วงปีทีผ่านมานี้มีการพูดถึงเทคโนโลยี Block Chain กันอย่างกว้างขวาง แม้แต่ในระดับของธนาคารพาณิชย์ซึ่งแต่แรกมีแนวโน้มจะมอง Block Chain และ Digital Currency อย่าง Bitcoin เป็นคู่แข่ง ก็ต้องมีการศึกษา Block Chain  อย่างจริงจัง ทำนองว่า ถ้าเทคโนโลยีนี้มันเกิดจริงๆ อย่างน้อยตัวเองก็จะต้องไม่ตกเทรนด์ แล้วเทคโนโลยีนี้มันคืออะไร และ มันทำอะไรได้บ้าง?

Bitcoin สกุลเงินดิจิทัล

บางคนอาจจะสับสนว่า Bitcoin กับ Block Chain คือสิ่งเดียวกันหรือเปล่า ผมอยากให้คำนิยามสั้นๆว่า “Bitcoin คือ สกุลเงินดิจิทัล ที่ใช้ Block Chain เป็นสมุดบัญชี” ซึ่งจะเห็นภาพชัดขึ้น ว่า มันเกี่ยวข้องกัน แต่ไม่ใช่สิ่งเดียวกัน การใช้ Block Chain ทำให้ Bitcoin มีลักษณะพิเศษคือไม่จำเป็นต้องมีคนกลางหรือหน่วยงานกลางในการเก็บรักษาบัญชีเลย จุดนี้เป็นจุดที่น่าสนใจมากของ Block Chain คือมันสามารถรักษาความเชื่อถือได้ของบัญชี ลำดับก่อนหลังของการบันทึกบัญชี และตรวจสอบย้อนกลับได้ โดยอาศัยเครือข่ายที่มีลักษณะ Peer-to-Peer คือ ผู้ร่วมในเครือข่ายเป็นผู้ร่วมกันรักษาข้อมูล และร่วมกันสร้างความเชื่อถือได้ของเครือข่ายโดยรวม โดยไม่มีใครผู้ใดผู้หนึ่งหรือหน่วยงานใดหน่วยงานหนึ่งเป็นเจ้าของข้อมูลเหล่านั้นโดยเฉพาะ

ตัวกลางที่น่าเชื่อถือ

ในการโอนเงินให้กันระหว่างบุคคล ที่เกิดขึ้นในระบบธนาคาร เช่น กนก ต้องการโอนเงินให้ ขจร จำนวน 1,000 บาท

  • กนก มีเงินในบัญชีธนาคารกรุงธน มากกว่าหรือเท่ากับ 1,000 บาท ขจร มีบัญชีเงินฝากอยู่กับธนาคารไทยวานิช
  • กนก ส่งคำสั่งให้ธนาคารกรุงธน ว่าต้องการโอนเงินไปหมายเลขบัญชีของ ขจร
  • ธนาคารกรุงธน ลดจำนวนเงินในบัญชีของ กนก ลง 1,000 บาท สร้างรายการไปยังธนาคารไทยวานิช ธนาคารไทยวานิชทำการเพิ่มเงินในบัญชีของ ขจร 1,000 บาท และตอบรับรายการไปยังธนาคารกรุงธน
  • ธนาคารกรุงธนได้รับการตอบรับรายการ และถือว่า transaction นั้นเสร็จสิ้น
  • หากมีกระบวนการใดกระบวนการหนึ่งในนี้ขัดข้องระบบทั้งสองธนาคารจะทำการย้อนกระบวน การ (rollback transaction) ไปยังสถานะก่อนจะทำรายการ บัญชีทั้งสองจะยังคงมียอดเท่าเดิมเสมือนไม่มีการทำรายการเกิดขึ้น

กรณีเช่นนี้จะเห็นว่า คุณสมบัติของการทำรายการระหว่างธนาคารคือ

  1. ผู้ใช้งานต้องเชื่อถือระบบของธนาคาร ว่าเก็บค่าจำนวนเงินของบัญชีตนเองถูกต้อง และดำเนินการตามคำสั่งอย่างถูกต้อง (Integrity / Trustfullness)
  2. การทำรายการในแต่ละรายการ จะสำเร็จครึ่งๆกลางๆไม่ได้ (Atomicity) กล่าวคือ ถ้าสำเร็จ จะต้องสำเร็จทั้งหมด ถ้าไม่สำเร็จ จะต้องเสมือนไม่เคยเกิดขึ้นเลย นั่นคือ เงินในบัญชีของทั้งสองฝ่ายจะต้องเท่าเดิมก่อนที่จะทำรายการ
  3. รายการที่ทำจะต้องเกิดขึ้นเป็นลำดับ จะมี 2 รายการเกิดขึ้นพร้อมกันในระหว่างที่อีกรายการหนึ่งยังดำเนินการไม่เสร็จสิ้นไม่ได้ เช่น กรณีที่เงินในบัญชีของ กนก มีอยู่ 10,000 บาท ถ้ากนก โอนเงินให้ ขจร 1,000 บาทก่อน กนกจะไม่สามารถโอนเงินให้ คณิต จำนวน 9,500 บาทได้ ในขณะเดียวกัน ถ้า รายการโอนเงินจาก กนก ให้ คณิต 9,500 บาท เกิดก่อน รายการที่กนก โอนเงินให้ ขจร 1,000 บาทก็จะเกิดขึ้นไม่ได้ เพราะเงินในบัญชีมีไม่พอ เป็นต้น

Block Chain – ฐานข้อมูลแบบไร้ศูนย์กลาง

ในกรณีของ Bitcoin สมมติว่า กนก ต้องการโอนเงินให้ ขจร จำนวน 1.00 BTC (สกุลเงินบิตคอยน์ ซึ่ง ณ ขณะวันที่เขียน 1 BTC มีมูลค่าประมาณ 36,000 บาท)

  • กนก และ ขจร ต่างก็สร้าง Bitcoin Address ของตัวเองขึ้นมา โดย Address นี้จะมี ID เฉพาะตัว เช่น WgWVAuZB….. ซึ่งมีรูปแบสตริงที่เป็นไปได้เยอะมาก (เป็นไปไม่ได้ที่ใครจะเดาได้ว่า Bitcoin Address ที่จะสร้างขึ้นมาใหม่ของคนๆนี้จะเป็นเลขใด และแทบเป็นไปไม่ได้เลยที่จะซ้ำกัน)
  • ขจร ส่ง Bitcoin Address พร้อมทั้ง “public key” ประจำ bitcoin address  นี้ ให้กนก
  • กนกทำการสร้าง message โดยอ้างอิง bitcoin transaction เดิมของกนก (อาจมากกว่า 1 transaction รวมกันก็ได้) ว่า กนก มีเงินอยู่มากกว่าหรือเท่ากับ 1.00 BTC จริง สมติกนกอ้างอิง Transaction เดิมว่าตนมีอยู่ 1.75 BTC ก็จะสร้าง message ว่า “โอนเงินให้ Address ของขจร 1.00 BTC และ โอนเงินกลับให้ Address เดิมของกนก 0.74940 BTC ส่วนอีก 0.0006 BTC (ประมาณ 21 บาท) ให้เป็นรางวัลแก่คนที่มายืนยัน transaction นี้”

Unconfirmed-transaction

  • Message นี้ถูก broadcast ลงใน Bitcoin Network โดยมีสถานะเป็น “unconfirmed transaction”
  • คณิต คนึง และคำนวณ เป็นผู้ที่ร่วมใน Bitcoin Network ทำการ “ขุดเหมือง” (mining) ซึ่งเป็นเหมือนการ “แข่งกัน  verify transaction” โดยผู้ที่ทำการ mining จะรวบรวม unconfirmed transaction ที่ถูก broadcast ใน network ณ ขณะนั้น (ซึ่งในที่นี้มี transaction ของกนกและขจรเป็นส่วนประกอบ) เข้าเป็นส่วนประกอบของ “Block” ใหม่ ซึ่งในการผนวก Block นี้ ผู้ทำการ mining จะแข่งกัน “หาคำตอบของอสมการอันหนึ่ง” ได้เป็นค่าที่เรียกว่า “nonce” ซึ่งผู้ที่หาคำตอบได้ จะเป็นผู้ที่ “ชนะ” และเป็นผู้ทำการ “merge transaction” (ซึ่งรวมทั้งค่าของ nonce) ลงใน Block Chain โดยการอ้างอิงกับ Block ก่อนหน้า

blockchain

  • สมมติว่า คณิต เป็นผู้ชนะในการ mining ข้างต้น BitCoin Address ของ คณิต จะเป็นผู้ได้รับ “รางวัล” 0.0006 BTC ตามที่ตั้งไว้
  •  เมื่อถึงขั้นตอนนี้ transaction ของ กนก และ ขจร อยู่ใน Confirmed Transaction เรียบร้อยแล้ว ดังนั้น Bitcoin Address ของขจร จึงมีจำนวน BitCoin ที่ได้รับจาก กนก ไว้ใช้งานต่อไป การดำเนินการเสร็จสิ้น
  • ขจร เป็นผู้เดียวที่จะสามารถใช้เงินสกุล BitCoin จาก Transaction นี้ได้ เนื่องจาก เป็นผู้ที่ถือ private key ของ BitCoin Address นี้ หาก ขจร ทำ private key ที่ผูกอยู่กับ address นั้นๆหาย (เช่น ขจรทำ notebook หาย หรือ harddisk เสีย แล้วไม่ได้ backup เก็บ private key ไว้) ขจรจะไม่สามารถใช้เงินใน address นั้นๆได้อีกเลย และไปเรียกคืนกับใครไม่ได้ เท่ากับว่า เงินสกุล Bitcoin จำนวนนั้น สูญหายตลอดไป
  • หากมีใครพยายามแก้ไขเปลี่ยนแปลง transaction ระหว่างคณิตและขจร เช่น เปลี่ยนแปลงยอดเงินว่า คณิต โอนเงินให้ ขจร แค่ 0.001BTC จะมีผลให้ nonce ที่คณิตคำนวณได้ กลายเป็นค่าที่ไม่ถูกต้อง ซึ่งใครก็ตามที่ทำการ verify block นี้จะทราบได้ทันทีว่าเป็น invalid block

การสร้างความน่าเชื่อถือโดย “บุคคลนิรนาม”

    จะเห็นว่าระบบ BlockChain นั้น ก็คือ การให้ “ใครก็ได้” (ซึ่งถือว่าเป็นบุคคลนิรนาม) เข้ามายืนยัน transaction โดยอาศัยหลักการ “Proof of Work” ซึ่งก็คือ “การพิสูจน์ว่าสามารถทำงานบางอย่างสำเร็จ” ซึ่งหลักการสำคัญก็คือ

  1. ใครก็ได้ที่อยู่ร่วมใน network สามารถเข้าร่วมแข่งขัน Proof of Work นี้ได้
  2. ไม่มีใครคาดการณ์ล่วงหน้าได้ว่าใครจะเป็นผู้ทำงานนี้สำเร็จ

    ซึ่งเมื่อเป็นเช่นนี้ สมมติว่า ใครก็ตามตั้งใจจะโกง BitCoin Network โดยเปลี่ยนแปลงตัวเลขใน transaction เช่น กนก สร้างรายการโอนเงินให้ขจร 1.00 BTC แต่ผู้ที่ทำการ Mining ตั้งใจจะเอื้อประโยชน์แก่ขจร โดยแก้ตัวเลขเป็นโอนเงินให้ขจร 1.50 BTC คนผู้นี้จะต้องชนะการ Mining ใน transaction นี้ ซึ่งในทางปฏิบัติแล้ว แทบจะเป็นไปไม่ได้ที่ใครจะคาดการณ์ได้ว่าตนเองชนะเสมอ ดังนั้น เมื่อใดก็ตามที่มีใคร (หรือกลุ่มบุคคลใด) กุม “พลังการประมวลผล” (processing power) ในระบบไว้มากกว่า 50%ขึ้นไป ระบบ Block Chain ใน network นั้นจะมีความน่าเชื่อถือลดลง ซึ่งในกรณีนี้เรียกว่า“51% attack”(https://learncryptography.com/cryptocurrency/51-attack)

“Hash Function” : กลไกเบื้องหลังความน่าเชื่อถือ

ในทางคณิตศาสตร์คอมพิวเตอร์ เราเรียกฟังก็ชั่นที่รับค่าเป็น “ข้อมูลใดๆที่มีความยาวเท่าไรก็ได้” แล้วให้คำตอบออกมาเป็นข้อมูลชุดหนึ่งซึ่งมีความยาวคงที่เสมอว่า “แฮชฟังก์ชั่น”

แฮชฟังก์ชั่นมีอยู่หลายรูปแบบ แต่ในที่นี้ เราจะพูดถึงแฮชฟังก์ชั่นแบบพิเศษที่เรียกว่า “คริปโทกราฟิคแฮชฟังก์ชั่น” หรือบางทีก็เรียกว่า “เมสเสจไดเจสท์” (Message Digest)

Message Digest

    คริปโทกราฟิคแฮชฟังก์ชั่น มีลักษณะพิเศษคือ เป็น “ฟังก์ชั่นทางเดียว” (One-way function) กล่าวคือ สมมติเรามี Input เป็นข้อมูลชุดหนึ่ง เราสามารถหาผลลัพธ์ของแฮชฟังก์ชั่น (ซึ่งในที่นี้เรียกว่า “ไดเจสท์”) ได้ง่าย โดยทำการคำนวณตามวิธีการของแฮชฟังก์ชั่นเพียงครั้งเดียว แต่ถ้าเรารู้เพียงค่าของไดเจสท์ ที่ต้องการ แล้วถามว่า “ข้อมูล Input ใดที่จะให้ค่าของ Digest ตามต้องการ” จะทำไม่ได้โดยตรง แต่ ต้องใช้วิธีลองแทนค่า Input ไปเรื่อยๆ ซึ่งมีเป็นล้านๆๆๆๆๆกรณี ซึ่งอาจจะเจอหรือไม่เจอข้อมูลที่ให้ค่าแฮชตามที่ต้องการก็ได้ ด้วยเหตุนี้ผู้ที่ทำการ “ขุดเหมือง” bitcoin (ซึ่งก็คือการ verify transaction ก่อนที่จะผนวกลงใน Block Chain) จึงเป็นการแก้ “อสมการ” ที่ว่า จงหาค่าของ nonce ที่จะเติมลงท้ายบล็อค แล้วทำให้ค่าแฮชของบล็อคนั้นมีค่าน้อยกว่าค่าคงที่ค่าหนึ่ง (ซึ่งใน BitCoin Network จะกำหนดเป็นค่าของ “Difficulties” เช่น แฮชจะต้องน้อยกว่า 0x0000 0000 ffff ffff.....) ซึ่งต้องใช้พลังการประมวลผลมหาศาล กล่าวคือต้องทดลองเปลี่ยนค่าของ “nonce” (สตริงใดๆก็ตามที่จะเพิ่มลงไปในท้ายบล็อคของข้อมูล) ไปเรื่อยๆ จนกว่าค่าแฮชที่ได้จะน้อยกว่า Difficulties ซึ่ง ณ เวลาก่อกำเนิด BitCoin Network ตัว Initial Block แรกของระบบจะถูกกำหนด Difficulties เป็น 0xffff ffff ffff.... ซึ่งหมายความว่า “ค่า nonce ใดๆก็ทำให้อสมการนี้เป็นจริง” และ Difficulties จะถูกลดลงโดยอัตโนมัติเมื่อเวลาผ่านไป ดังนั้นในปัจจุบัน การหาค่าของ nonce ที่ “ชนะการแข่งขัน” จึงยากมาก แต่ก็เป็นไปได้ด้วยความก้าวหน้าของชิปประมวลผลที่เพิ่มขึ้น ซึ่งปัจจุบันผู้ขุดเหมือง Block Chain ไม่นิยมใช้ CPU หรือ GPU คำนวณแฮชกันแล้ว แต่นิยมใช้ “ASIC Chip” ที่สร้างขึ้นพิเศษและสามารถคำนวณแฮชได้ในระดับ TeraHash/Sec (ล้านล้านแฮชต่อวินาที) ในการคำนวณแทน

กลไกป้องกันการทุจริต หรือการปลอมแปลง Transaction

    ถึงตอนนี้ คุณผู้อ่านคงจะพอเห็นภาพบ้างว่า ระบบ Block Chain มีการ “ตั้งกำแพง” เพื่อป้องกันไม่ให้ใครชนะการขุดเหมืองได้ง่ายๆ ทีนี้ตัว “Transaction” เองล่ะจะป้องกันการปลอมแปลงได้อย่างไรว่า Transaction นั้นเป็นของจริง และลำดับก่อนหลังของ Transaction ต่างๆ เกิดขึ้นเช่นนั้นจริงๆ

  1. Transaction ต้องอ้างอิง Transaction ก่อนหน้า เช่น ถ้าเราจะโอนเงิน 1.00 BTC เราจะต้องอ้างอิง Transaction ของเราเอง ที่มีคนโอน BitCoin ให้เรา อาจจะ 1 หรือหลาย Transaction รวมกันก็ได้ แต่ทุก Transaction ที่อ้างอิง รวมกันต้องมีเงินมากกว่า 1.00 BTC (รวม “รางวัล” ที่จะให้ “ผู้ชนะการขุดเหมืองด้วย)
  2. ผู้ที่สร้าง Transaction ต้องมี “Private Key” ของ BitCoin Address ฝั่ง “ผู้รับ” ใน transaction นั้นๆ มิฉะนั้นเขาจะไม่สามารถสร้าง transaction ใหม่ที่ “Valid” (ด้วยการพิสูจน์ Digital Signature) ได้
  3. ผู้ที่ชนะการขุดเหมืองและทำการ “ผนวก Block ลงใน Block Chain” จะทำการอ้างอิง “ค่าแฮชของบล็อคก่อนหน้า” ดังนั้นเมื่อเวลาผ่านไปนานขึ้น การย้อนกลับไปแก้ไข Block ก่อนหน้าที่ถูกอ้างอิงไปแล้ว จะยิ่งยากจนแทบเป็นไปไม่ได้ เนื่องจากจะมีผลทำให้ต้องคำนวณ Nonce ของ Block อื่นๆ ที่ตามหลัง Block นั้นๆใหม่หมดทุก Block

สถานกาณ์​ BitCoin ในปัจจุบัน

    ในขณะที่ปัจจุบัน Bitcoin ยังมีการใช้งานในวงจำกัด และยังไม่ได้รับการยอมรับตามกฎหมายในบางประเทศ รวมทั้งประเทศไทยด้วย (อ่านข่าว ธนาคารแห่งประเทศไทยชี้แจง ระงับ Bitcoin เพราะห่วงเก็งกำไรค่าบาท https://www.blognone.com/node/46985 ) และยังมีความกังวลว่าในปัจจุบัน พลังประมวลผลที่ใช้ในการขุดเหมืองกว่า 50% มาจากประเทศจีน ซึ่งอาจทำให้ในอนาคตจีนกลายเป็นผู้กุมอำนาจในการเลือกปฏิบัติบางอย่างได้ เช่น เลือกที่จะแบนบาง address ไม่นำเข้ามารวมใน block (ซึ่งก็คือการไม่ยอมโอนเงินให้นั่นเอง) หรือทำการเปลี่ยนแปลง หรือย้อนกลับฐานข้อมูล (Revert transaction) เพื่อจ่ายเงินซ้ำอีกครั้งได้

Block Chain – เทคนิคที่ถูกนำไปต่อยอด

    แม้ว่า Bitcoin เองอาจไม่ใช่สกุลเงินที่ทั่วโลกยอมรับ และยังมีความผันผวนเรื่องอัตราแลกเปลี่ยนอยู่มาก แต่การที่มันได้พิสูจน์ว่าการบันทึกรายการผ่าน Block Chain เป็นฐานข้อมูลแบบไร้ศูนย์กลาง (Decentralized) ที่มีความเชื่อถือได้และใช้งานได้จริง ทำให้มีผู้สนใจที่จะนำ Block Chain ไปประยุกต์ใช้กับกระบวนการอื่นๆอีกมาก เช่นการ ทำสัญญาในรูปแบบดิจิทัล” (Digital Contract) หรือในการซื้อขายแลกเปลี่ยนระหว่างกันในรูปแบบอื่น เช่นระบบที่ชื่อ Ethereum (www.ethereum.org) และ Hyperledger (www.hyperledger.org) เป็นต้น ซึ่งเริ่มมีธนาคารพาณิชย์ของไทยให้ความสนใจที่จะนำไปพัฒนาเป็นแพลตฟอร์มที่จะรองรับบริการด้านต่างๆบ้างแล้ว(อ่านต่อ: http://finiwise.com/2016/11/04/kasikorn-hyperledger-ibm-blockchain/ https://www.blognone.com/node/77644 )

โลกของเทคโนโลยีการเงินจะเปลี่ยนไป

    บางคนอ่านๆมาถึงจุดนี้จะเริ่มตั้งคำถามว่า โอ้โห การทำ Block Chain transaction มันไม่ได้ง่ายเลยนะ แล้วมันจะมีต้นทุนต่ำกว่าระบบธนาคารจริงๆหรือเปล่า คำตอบคือ ต้นทุนด้านความยุ่งยากของ Block Chain ก็แลกมาด้วยการที่ธนาคารไม่ต้องเสี่ยงกับการเก็บรักษาสิ่งต่างๆไว้ที่เดียว สมมติว่า ธนาคารเก็บ transaction และบัญชีทั้งหมดไว้บนระบบคอมพิวเตอร์ขนาดใหญ่เพียงระบบเดียว หากใคร hack เข้าสู่ฐานข้อมูลในระบบนั้นแล้วทำการเปลี่ยนแปลงรายการได้ก็จบเลย ทุกคนก็จะเชื่อถือว่า รายการนี้ถูกต้อง (เพราะมาจากธนาคาร) จนกว่าจะมีการฟ้องร้อง อะไรต่างๆ ซึ่งธนาคารก็จะเสียความน่าเชื่อถือไปด้วย ฯลฯ เป็นต้น ดังนั้นการไม่มีศูนย์กลางเลย ก็ทำให้การโจมตีระบบต่างๆ ยากขึ้น เพราะไม่มีใครกุมเอา “พลังการประมวลผล” (computing power) ทั้งหมดในระบบได้ และยิ่งระบบมีขนาดใหญ่มากขึ้น มีผู้ร่วม “mining” ในระบบมากขึ้น และถ้าสามารถดูแลไม่ให้มีใครกลุ่มใดกลุ่มหนึ่งกุมพลังการประมวลผลไว้ในมือมากถึง 51% ได้ ระบบก็จะยิ่งมีความน่าเชื่อถือมากขึ้นตามไปด้วยนั่นเองครับ

คุณฉัตรเฉลิม นามวงศ์พรหม
ผู้ชำนาญการด้านวิศวกรรม
บริษัท ซีเอส ล็อกซอินโฟ จำกัด (มหาชน)

Ref :
51% Attack
https://learncryptography.com/cryptocurrency/51-attack

Cryptographic Hash Functions [Wikipedia]
https://en.wikipedia.org/wiki/Cryptographic_hash_function

How Bitcoin Works Under the Hood
http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html

BitCoin (อีกสักรอบ): การใช้งานและเหตุผลการออกแบบ
https://www.blognone.com/node/47074

Ethereum: เมื่อ Blockchain ก้าวมาเป็นเทคโนโลยีแกนกลางของโลก FinTech
https://www.blognone.com/node/77644

ธนาคารแห่งประเทศไทยชี้แจง ระงับ Bitcoin เพราะห่วงเก็งกำไรค่าบาท
https://www.blognone.com/node/46985

กสิกรไทย, Hyperledger, IBM Blockchain
http://finiwise.com/2016/11/04/kasikorn-hyperledger-ibm-blockchain/

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>