บิทคอยน์คืออะไร
Bitcoin ซึ่งเป็นจุดเริ่มต้นของการนำเทคโนโลยี Blockchain มาใช้อย่างเป็นรูปธรรมและเป็นที่นิยมอย่างแพร่หลาย บทความนี้เลยจะขอพูดถึงเทคโนโลยี Blockchain ด้วยการยกตัวอย่างการใช้ Blockchain ใน Bitcoin แล้วค่อยย้อนกลับมาพูดถึงเทคโนโลยี Blockchain ว่ามีองค์ประกอบอะไรบ้าง เอาไปใช้ทำอะไรได้บ้าง มีการนำไปใช้ทำอะไรแล้วบ้าง และน่าสนใจอย่างไร
แนวการเขียนบทความจะแบ่งเป็นหลาย Episode โดยแบ่งตามสาระสำคัญ ยกตัวอย่างเช่น
- Episode 1 หลักการของ Transaction ของ Bitcoin
- Episode 2 Blockchain ของ Bitcoin และคอนเซ็ป Proof-of-Work
- Episode 3 หลักการอื่นๆของ Bitcoin เช่น Transaction Fee และตัวอย่างประโยชน์ใหม่ๆของ bitcoin
- Episode 4 Blockchain beyond Bitcoin
- …
เป็นต้นซึ่งบทความคาดว่าน่าจะรวมแล้วไม่ต่ำกว่า 5–6 Episode รวมกัน
Disclaimer Note: บทความ series นี้มีเนื้อหาบางส่วนที่ต้องอาจจะต้องใช้พื้นฐานความรู้เกี่ยวกับ Cryptography โดยเฉพาะ Public Key Cryptography บ้างถ้าหากจะเข้าใจอย่างลึกซึ้ง ผู้เขียนแนะนำให้อ่านพื้นฐานจาก wikipedia ก่อน หรือกระโดดข้ามเนื้อหาส่วนนั้นแล้วเชื่อตามคำอธิบายแทนก็ได้
จุดเริ่มต้นคือ Bitcoin
Blockchain กำเนิดขึ้นจาก whitepaper ของ Satoshi Nakamoto ชื่อ “Bitcoin: A Peer-to-Peer Electronic Cash System” ในปี 2008 โดย Satoshi Nakamoto (นามสมมติ) ได้นำเสนอคอนเซ็ปของ electronic cash ชื่อ bitcoin และได้ทำการ opensource implementation แรก โดยส่วนหนึ่งของเทคโนโลยีนี้คือการใช้เทคโนโลยี Blockchain เป็นองค์ประกอบหลักในการทำให้เกิด electronic cash ที่มี value และสามารถแก้ปัญหาการ double spend (หรือการใช้เงินซ้ำ) ได้โดยไม่จำเป็นต้องมีฐานข้อมูลกลาง (Centralized database) โดยการใช้ Blockchain เป็น Distributed storage เพื่อให้ทุกคนในกลุ่มเก็บฐานข้อมูลไว้และสมาชิกทุกคนสามารถยืนยันความถูกต้องของทุก transaction ได้เองทำให้สามารถป้องกันการที่บุคคลใดในระบบจะใช้เงินซ้ำสองครั้งได้
Bitcoin ทำงานอย่างไร
Bitcoin เป็น peer-to-peer network ที่ร่วมกันทำงานเพื่อสร้างระบบการจัดการ transaction ให้มีความน่าเชื่อถือ โดยแกนของ bitcoin คือการกำหนดหน่วยของมูลค่าที่ชื่อ Bitcoin (BTC) หรือ satoshi (100,000,000 satoshis = 1 BTC) ในระบบ โดยที่ตัว BTC หรือ satoshi เองไม่ใช่ไฟล์ หากแต่เป็นเพียง มูลค่าที่ถูกจัดเก็บใน blockchain (วิธีการทำงานของ blockchain อยู่ใน episode 2) ที่กำหนดที่มาและที่ไปของมูลค่านี้เป็นประวัติการใช้จ่าย (เรียกว่า transaction history) โดยทุก Bitcoin มีจุดกำเนิด (Generation Transaction) ขึ้นมาในระบบ และหลังจากที่กำเนิดขึ้นมานั้น จะถูกแลกเปลี่ยนไปมาระหว่างผู้ใช้ในระบบ โดยทุก Transaction จะถูกบันทึกไว้ ดังนั้น Bitcoin จริงๆแล้ว ไม่มีตัวตน แต่เป็นมูลค่า (ตัวเลข) ที่ถูกจดที่มาที่ไปเรียบเรียงไว้ใน data structure ที่เรียกว่า Transaction แล้วถูกนำไปรวบรวมไว้ใน blockchain นั่นเอง
จะอธิบายให้เข้าใจง่ายขึ้น ลองมามองดูว่า ถ้าเราจะใช้จ่ายมูลค่า (เงิน) บางอย่างที่ไม่มีรูปร่างให้จับต้องได้เราจะทำอย่างไร สมมติว่า นาย A มีเงินอยู่ 30 BTC และอยากจะจ่ายให้นาย B เป็นมูลค่า 25 BTC นาย A จะทำอย่างไร? ตัวอย่างที่ยกง่ายที่สุดที่เรามีกันในสังคม คือการเขียนเช็คสั่งจ่าย โดยนาย A อาจจะเขียนเช็คว่า
A อยากจะจ่ายเงินมูลค่า 25 BTC ให้นาย B จากบัญชีของนาย A เลขที่ 123–4567–8 เซ็นชื่อ (A)
เขียนเป็นภาษากึ่งคอมพิวเตอร์ได้ประมาณนี้
Cheque-number: 0000001234
From-Account: 123–4567–8
Value: 2500000000
Paid-to: นาย B
By: ลายเซ็น นาย A
(สังเกตว่า Value นั้นเขียนเป็นหน่วย satoshi ซึ่งเท่ากับ 2.5 พันล้าน หรือ 25 BTC นั่นเอง)
ซึ่งจะแลกมูลค่าของเช็คนี้ได้ ต้องนำไปขึ้นที่ธนาคารเจ้าของบัญชี (ปัจจุบันธนาคารอื่นๆสามารถรับเช็คมาแลกให้เราได้เพื่ออำนวยความสะดวก แต่ธนาคารยังต้องนำเช็คของเราส่งไปให้ธนาคารเจ้าของบัญชียืนยันอีกที) แต่ในระบบของ Bitcoin เราไม่ต้องการมีธนาคาร (ตัวกลางที่ทำการแลกเปลี่ยนเงิน) ฉะนั้น เราจะต้องเปลี่ยนเลขบัญชี (สิ่งที่เราใช้ยืนยันว่าเรามีเงินมูลค่าไม่น้อยกว่า 25BTC เพื่อใช้จ่าย) เป็นสิ่งอื่นบางสิ่งที่ยืนยันได้ว่าเรามีเงินนี้จริง สมมติว่านาย A ได้รับเช็คจากนาย C มาก่อนหน้านี้เป็นมูลค่า 10 BTC และอีกเช็คจากนาย D เป็นมูลค่า 20 BTC งั้น เราก็น่าจะสามารถเอามูลค่าของเช็คสองใบนั้นมาใช้เป็นหลักฐานยืนยันมูลค่าของเช็คใบนี้ได้
เราจึงเปลี่ยนวิธีการเขียนการแลกเปลี่ยนนี้เป็นเช็ครูปแบบใหม่ คือ
A อยากจะจ่ายเงินมูลค่า 25BTC ให้นาย B โดยใช้เงินจากเช็ค 0000001001 และเช็ค 0000000989 เซ็นชื่อ (A)
หรือเขียนเป็นภาษากึ่งคอมพิวเตอร์ได้ว่า
Cheque-number: 0000001234
Input:
From-Cheque-number: 0000001001
From-Cheque-number: 0000000989
Output:
Value: 2500000000
Paid-to: นาย B
By: ลายเซ็นนาย A
โดยผู้รับเช็คนี้ สามารถย้อนกลับไปดู Cheque หมายเลข 1001 กับ 989 ได้ ว่าในรายละเอียดเช็คดังกล่าว นาย A ได้รับเงินจากนาย C กับ นาย D จริง รวมมูลค่าไม่น้อยกว่า 25 BTC (ในตัวอย่างนี้ มูลค่ารวม 30BTC) โดยเราจะมั่นใจได้อย่างไรว่า C กับ D มีเงินมาจ่ายนาย A จริง เราก็สามารถเช็คย้อนกลับไปจากเช็คสองใบนั้น ว่านาย C กับ D มีที่มาของเงินจริง ทำอย่างนี้ไล่ไปเรื่อยๆ จนถึงต้นตอของเงินที่ถูกสร้างขึ้น หรือเรียกได้ว่า Generation Transaction หรือจุดเริ่มต้นของเงิน BTC แต่ละเหรียญ (ซึ่งจะกล่าวถึงใน Episode ที่ 2 ในส่วนของ Proof-of-Work)
ข้อสังเกตจาก transaction ข้างต้น
- มีปัญหาคือ A ใช้เงิน 30BTC ไปจ่ายมูลค่า 25 BTC แล้วอีก 5 BTC หายไปไหน
- เราจะป้องกันไม่ให้ A เอาเช็ค 1001 กับ 989 ไปใช้ยืนยันการจ่ายเงินให้คนอื่นได้อย่างไร? (Double Spend)
- เราจะป้องกันไม่ให้บุคคลอื่นเช่น นาย K สร้าง transaction เพื่อใช้เงินของ นาย A ได้อย่างไร? (Forgery หรือการปลอมแปลงข้อมูล)
ข้อ 1 คือ เงินอีก 5 BTC ในกรณีนี้ ถือว่าสูญหายไป เพราะ Input = 30 แต่ Output = 25 แต่ในระบบ Bitcoin นั้น เงินที่หาย จะสามารถถูกเก็บไปใช้ได้โดยบุคคลที่ทำการยืนยัน Transaction นั้นเข้าไปใน Block โดยเรียกว่า Transaction Fee (อ่านต่อในส่วนของ Transaction Fee) โดยถ้า A ไม่อยากให้เงินหาย ก็สามารถเติม Output ไปอีกว่า “Value: 500000000 Paid-to: นาย A” ต่อท้ายก่อนเซ็นได้ ในกรณีนี้ ก็จะมี Input=Output=30 แปลว่าไม่มี Transaction Fee ซึ่งอาจจะเป็นปัญหาได้ (ดู Episode 3: Transaction Fee)
ข้อ 2 การป้องกันการ Double Spend นั้น เราจะกล่าวถึงใน section ถัดไปที่จะพูดถึง Blockchain
ข้อ 3 การป้องกันปัญหา Forgery ถ้าในเช็คที่เราใช้กันในปัจจุบัน เราก็ตรวจสอบลายเซ็น โดยจากตัวอย่างที่ใช้ในบทความนี้ เราเซ็นเช็คเพื่อแสดงตัวตนกับธนาคารเจ้าของเช็ค ว่าเรามีอำนาจออกเงินจากบัญชีตามเช็คนี้ ในโลกดิจิทัลของ Bitcoin เราก็ใช้ลายเซ็นดิจิทัล หรือ Digital Signature ซึ่งเป็นเทคโนโลยี Cryptography โดย A ใช้ private-key ของตนเอง เซ็นยืนยันว่า A เป็นเจ้าของเงินที่ C และ D ต้องการโอนให้ A ในเช็ค 989 และ 1001 นี้ ซึ่งถ้าใครขโมยกุญแจนี้ไปได้ ก็สามารถปลอมแปลง ลายเซ็น ของ A ได้ เสมือนเขาสามารถขโมยกระเป๋าเงินของ A ไปได้นั่นเอง และคนที่อยากจะตรวจสอบเช็ค นี้ ก็เพียงแค่หยิบ public-key ของ A ซึ่ง A ใส่ไว้ในเช็ค 1234 เดียวกันนี้ มาตรวจสอบลายเซ็นได้ (โดย Public Key นี้จะต้องตรงกับที่ใส่ไว้ใน ช่องระบุชื่อผู้รับ ของเช็ค 989 และ 1001)
ในกรณีนี้ เหมือนกับการที่เราจะยืนยันเช็ค 1234 ว่ามีมูลค่ามาจาก เช็ค 1001 & 989 ได้ เราก็ดูค่าที่ C จ่ายให้ A ในเช็ค 1001 โดยในนั้นมี public-key ของ A อยู่ ถ้า A จะใช้เงินดังกล่าว A จะต้องมี private-key ที่สามารถเซ็นยืนยันการรับเงินที่ได้มาจาก C ที่ยืนยันได้ด้วย public-key ของ A ที่อยู่ในเช็ค 1001 (เช่นเดียวกัน เช็ค 989 ก็มี public-key ของ A (และ A ต้องเซ็นรับในเช็ค 1234) และในเช็ค 1234 ก็มี public-key ของ B เพื่อบังคับให้ B ต้องแสดงลายเซ็นด้วย private-key ของ B ก่อน B นำไปใช้นั่นเอง)
ทั้งหมดนี้ ทำให้ทุก transaction ถูกผูกกันเป็นเหมือน graph อันใหญ่ๆ ที่กำหนดที่มาที่ไปของเงินทั้งหมดในระบบอยู่
ตัวอย่างง่าย ๆ ที่ยกมากับการใช้เช็คส่งเงินผ่านไปมาแทนการใช้ธนาคารนี้ ก็คล้ายๆกับวิธีการที่ Bitcoin ใช้ หากแต่ Bitcoin Transaction นั้น ไม่ใช้ Cheque number แต่ใช้ Transaction ID และ ไม่ใช้ชื่อคนรับเงินแต่ใช้ PubKeyHash ซึ่งก็คือ Hash ของ Public Key (หรือ Hash(Public Key)) ของผู้รับ (บุคคลที่ไม่รู้จัก Public Key ของ ผู้รับ ก็ไม่รู้ว่าผู้รับเป็นใคร ผู้รับและคนรู้จักเท่านั้นที่รู้ว่าคือใคร) และต่างจากเช็คที่เราใช้กันในปัจจุบันที่เราใช้วิธีเซ็นเช็คเพื่อจ่าย ใน Bitcoin Transaction ใช้วิธีเซ็นรับ (ผู้รับเช็คจะนำไปใช้ต้องแสดงตนก่อนว่าคือผู้รับตัวจริงด้วยการมี Private Key และ Public Key ที่ตรงกัน (Hash(Public Key) = PubKeyHash และ Private Key Signature นั้น verify ได้โดย Public Key)) และ Bitcoin มีรายละเอียดมากกว่าอีกนิดหน่อยและเอาไปทำได้หลายอย่างกว่าการส่งเช็คเฉยๆ ตัวอย่างจริงของ Bitcoin นั้นไม่ได้ส่ง PubKeyHash เฉยๆแต่เป็นการใช้ Script พิเศษที่ทำให้สามารถบังคับได้ว่าผู้รับเงินนั้น ต้องเป็นนาย X หรือ เป็น นาย I, หรือ J หรือ K ก็ได้ หรือผู้รับเป็น สองในสามคนระหว่าง M, N และ O ก็ได้เป็นต้น ซึ่งการใช้ในรูปแบบอื่นนั้น จะยกตัวอย่างให้ดูใน Episode ถัด ๆ ไป
ข้อสังเกตของ bitcoin network ที่กล่าวไปแล้วในภาพรวมคือ สมาชิกทุกคนของ peer-to-peer network นี้ จะต้องทำการเก็บ transaction history ทั้งหมดของทุก transaction ที่เกิดขึ้นในทั้งระบบ เพื่อให้ทุกคนสามารถยืนยันความถูกต้องของ transaction เองได้ ข้อดีคือระบบนี้โปร่งใสมาก สามารถตรวจสอบได้ว่าเงินไหลเวียนอย่างไร แต่ข้อเสียคือ privacy/confidentiality ของการใช้จ่ายเงินสูญเสียไประดับหนึ่ง (ต่างจากการใช้เงินสดซึ่งนอกจากผู้จ่ายกับผู้รับ ไม่มีใครรู้ว่าจ่ายเงินกันเท่าไหร่ ใน Bitcoin ทุกคนเห็นvolume ของทุก transaction แม้จะไม่รู้ว่าผู้รับผู้จ่ายเป็นใคร แต่ถ้าใครรู้จัก ก็สามารถย้อนกลับไปดูได้) นอกจากข้อนี้ ยังมีประเด็นอื่นๆที่เกี่ยวข้องอีก ซึ่งเราจะมาสรุปพูดถึงข้อสังเกตที่น่าสนใจใน Episode 3 ในส่วนของข้อสังเกต ประโยชน์ และ คำถามที่เกิดขึ้น เกี่ยวกับ bitcoin
เมื่ออ่านมาถึงจุดนี้ หลายคนอาจจะรู้สึกว่า ทำไมการใช้เงินใน bitcoin ช่างยุ่งยาก จะใช้หรือจะรับเงิน ต้องย้อนกลับไปตรวจประวัติที่มาของเงินว่า valid ตลอดมาก่อนหน้านี้เลยหรือไม่ ประเด็นนี้ ใน Episode 2 จะช่วยตอบว่าไม่จำเป็นถ้าเราเชื่อมั่นในความถูกต้องของข้อมูลได้ด้วยเทคโนโลยี blockchain
เช่นกัน หลาย ๆ คนก็อาจจะงงว่า แปลว่าถ้าเราจะใช้เงินใน bitcoin เราจะต้องจดรายการรับเช็คที่ส่งให้ตัวเราเก็บไว้ แล้วมาเลือกใช้ตอนจะจ่ายออกไปเอง ซึ่งดูเยอะและยุ่งยาก ซึ่งถ้ามองรายละเอียดทางเทคนิค ก็ใช่ การใช้จ่าย bitcoin มีรายละเอียดเยอะ แต่ผู้ใช้ไม่ต้องดูแลรายละเอียดเหล่านี้เอง เพราะโปรแกรม bitcoin wallet หลายๆตัวสามารถทำการติดตามพวก unspent transaction ที่มีคนส่งให้เราในอดีต เก็บไว้ และรวมมูลค่าเหล่านั้นมาเป็น bitcoin balance ให้เรา และเมื่อเราต้องการใช้จ่าย wallet ก็จะจัดการเลือกและเซ็นเพื่อสร้าง transaction ให้เรา โดยเราไม่ต้องทราบรายละเอียดเลยถ้าไม่ต้องการ ทั้งหมดนี้เกิดขึ้นโดยอัตโนมัติ โดยมีเงื่อนไขว่า wallet จะต้องมี private key ของเรา เพื่อสร้าง และเซ็น transaction ซึ่ง ถ้าเราดูแล wallet ไม่ดี ปล่อยให้มีคนร้ายล้วงมาในกระเป๋าเราได้ มาขโมย private key ไป เขาก็สามารถเอาเงินทั้งหมดของเราไปใช้ได้เช่นกัน รายละเอียดอื่นๆที่เกี่ยวกับ wallet นี้ จะพูดถึงอีกทีใน Episode 3
ท้ายที่สุดนี้ หลายคนที่ไม่ได้เคยสนใจ bitcoin อาจจะเริ่มสงสัยแล้ว ว่า bitcoin มีมูลค่าเท่าไหร่ ณ เวลาที่เขียนนี้ 1 BTC มีอัตราแลกเปลี่ยนในตลาดที่ประมาณ 454 USD หรือประมาณ 16,000 บาท โดยเราสามารถดูสถิติที่เกี่ยวกับ bitcoin network ปัจจุบันได้ที่เวบ blockchain.info และสามารถดูข้อมูลต่างๆที่เกี่ยวข้องเช่นกราฟอัตราแลกเปลี่ยนย้อนหลัง หรือ browse ดูข้อมูลของทุก Transaction และทุก Block ใน Bitcoin Network ได้เพื่อการเรียนรู้
สรุป
หลักการที่อธิบายในบทความ Episode 1 นี้คือตัวอย่างของการเก็บ Transaction ของ Bitcoin เพื่อให้สามารถตรวจสอบที่มาที่ไปของมูลค่าที่เรียกว่า Satoshi หรือ Bitcoin ได้ แต่ยังมีปัญหาที่ชวนคิดต่อคือ
- เราจะแก้ปัญหาการที่คนร้ายจะนำเช็คไปใช้ซ้ำได้อย่างไร
- Bitcoin แต่ละเหรียญ มีที่ต้นกำเนิดอย่างไรในระบบ bitcoin transaction
- ทำไม Bitcoin ถึงมีคุณค่าให้มีคนอยากมาแลกเปลี่ยน (ณ วันที่เขียน 1 BTC มีมูลค่ากว่า 16,000 บาท ในตลาดแลกเปลี่ยน!)
- จากภาพของเครือข่ายของ Transaction ที่เกิดขึ้นในอดีต เราจะป้องกันไม่ให้ใครย้อนกลับไปแก้ Transaction ที่เกิดขึ้นไปแล้วได้อย่างไร?
ข้อ 1&4 จะมาตอบใน Episode 2 ในส่วนของ Blockchain ข้อ 2&3 จะพูดถึงใน Episode 2 ในส่วนของ Proof of Work
บิทคอยน์คืออะไร
Reviewed by SuPerGuRuMan
on
September 21, 2017
Rating:
No comments: