กลไก
Bitcoin ทำงานยังไงจริง ๆ
ไม่มีศัพท์ที่ไม่จำเป็น ทุกตัวเลขบนหน้านาฬิกาคือค่าจริงของกลไกข้างล่างนี้ตัวใดตัวหนึ่ง หน้านี้คือที่ที่คุณจะรู้ว่าแต่ละตัวกำลังทำอะไรอยู่
ตาม payment หนึ่งรายการ ทีละขั้น
กดเล่น หรือจะคลิกดูเองทีละขั้นก็ได้ แล้วตาม transaction หนึ่งรายการ ตั้งแต่อยู่ใน wallet ไปจนถึง block ที่ไม่มีใครเขียนทับได้อีก
- 01 · คุณ
- 02 · Mempool
- 03 · Miners
- 04 · Blockchain
-
ขั้นที่ 1
คุณเซ็น payment
wallet ของคุณเซ็น transaction ด้วย private key เป็นการพิสูจน์ว่าคุณมีสิทธิ์ใช้เหรียญก้อนนั้น ไม่มีอะไรออกจากเครื่องโดยไม่ได้เซ็น และตัว private key เองไม่เคยออกจากเครื่องเลย
-
ขั้นที่ 2
ถูกกระจายเข้าเครือข่าย
คำสั่งที่เซ็นแล้วถูกส่งต่อไปยัง peer ที่ wallet ของคุณต่ออยู่ ซึ่งอาจอยู่ที่ไหนก็ได้ในโลก ไม่ได้แปลว่าอยู่ใกล้ ๆ ในเชิงกายภาพ แต่ละเครื่องตรวจเองอย่างอิสระว่า ลายเซ็นตรงจริง และเหรียญยังไม่ถูกใช้ไปแล้ว
-
ขั้นที่ 3
รออยู่ใน mempool
transaction ที่ผ่านการตรวจจะมารอที่นี่ เรียงตาม fee ที่เสนอ พื้นที่ใน block มีจำกัด นี่จึงเป็นการประมูล ไม่ใช่คิวตามลำดับเวลาที่มาถึง ตอนนี้มีราว 4,200 รายการรออยู่ และ ราคาสำหรับให้ไปเร็ว ๆ อยู่ที่ประมาณ 9 sat/vB.
-
ขั้นที่ 4
miner แข่งกันปิดผนึกมันลง block
miner รวบ transaction ที่ fee สูงที่สุดมาประกอบเป็น block แล้วเดาตัวเลขไปเรื่อย ๆ จนกว่าลายนิ้วมือของ block จะบังเอิญขึ้นต้นด้วยศูนย์ครบจำนวน มันคือการลองผิดลองถูก ไม่ใช่การคำนวณ — ราว 890 ล้านล้านล้านครั้งต่อวินาที รวมทั้งเครือข่าย นั่นแหละคือ Proof-of-Work
-
ขั้นที่ 5
block ต่อเข้ากับ chain
block ที่ชนะจะอ้างอิงลายนิ้วมือของ block ก่อนหน้า นั่นแหละคือสิ่งที่ทำให้มันเป็น "chain" คุณจะแอบแก้ block เก่าโดยไม่ทำให้ block ที่ตามมาทั้งหมดพังไม่ได้ ทุก node ตรวจ block ใหม่ซ้ำแล้วเก็บสำเนาเดียวกัน ตอนนี้ payment ของคุณมี 1 confirmation
-
ขั้นที่ 6
confirmation ทำให้มันจบ
ทุก block ใหม่ที่ต่อทับจะฝัง block ของคุณลึกลงไปอีก พอถึงราวหกอัน การจะย้อนกลับ ต้องทำงานชนะเครือข่ายที่เหลือทั้งหมด ณ จุดนั้นจึงถือว่า payment จบแล้ว แต่ก่อนจะมี confirmation แรก มันยังไม่จบเลย แค่รออยู่เฉย ๆ
การขุดคือการเดา ไม่ใช่การแก้สมการ
นี่คือจุดที่คำอธิบายเกือบทุกที่พูดผิด miner ไม่ได้กำลังแก้สมการ และไม่ได้ทำงานวิทยาศาสตร์อะไร เขากำลังหมุนรหัสล็อกไปเรื่อย ๆ เฉย ๆ
miner เอา block ที่อยากประกาศไปเข้าฟังก์ชันทางเดียว ซึ่งคายออกมาเป็น "ลายนิ้วมือ" คือสตริงความยาวคงที่ เปลี่ยนอะไรใน block แม้แต่นิดเดียว ลายนิ้วมือจะเปลี่ยนไปทั้งชุด แบบเดาไม่ได้เลย กติกาของเครือข่ายมีแค่ว่า ลายนิ้วมือต้องขึ้นต้นด้วยศูนย์ครบจำนวนที่กำหนด และไม่มีวิธีย้อนกลับไปหาว่าต้องใส่อะไรถึงจะได้ผลแบบนั้น ทางเดียวคือเปลี่ยนเลขทิ้ง ๆ ตัวหนึ่งใน block แล้วดูลายนิ้วมืออันใหม่ แล้วลองใหม่
แล้วทำไปทำไม? เพราะการเดากินไฟ และการเดานั่นแหละคือประเด็นทั้งหมด ถ้าจะเขียนทับ block เก่า คุณต้องเดาใหม่ทั้ง block นั้นและทุก block ที่ตามมา ให้เร็วกว่าที่คนทั้งโลกกำลังต่อ block ใหม่อยู่ ความสิ้นเปลืองนั่นแหละคือตัวล็อก
ชิ้นส่วนที่ขยับ
หกเรื่องนี้ พอเข้าใจครบแล้ว ทุกตัวเลขบนหน้านาฬิกาจะอ่านออกเป็นประโยค
-
Proof-of-Work
การขุดกับรางวัล
miner แข่งกันเดาเลขที่ทำให้ลายนิ้วมือของ block ใช้ได้ คนที่ชนะจะได้ต่อ block แล้วรับรางวัลบวกกับ fee ทั้งหมดที่อยู่ข้างใน ความสิ้นเปลืองที่ตั้งใจให้เกิดนี้ คือสิ่งที่ทำให้การโกงมีราคาแพง
-
Difficulty
ทำไม block ใช้เวลาราวสิบนาที
ค่า difficulty ที่ปรับตัวเองรักษาให้ block ออกมาเฉลี่ยสิบนาทีครั้ง ทุก 2,016 block มันจะคำนวณใหม่ ถ้าช่วงที่ผ่านมาขุดกันเร็วขึ้น โจทย์ก็ยากขึ้น ไม่มีนาฬิกากลาง มีแค่เลขคณิตที่คุมจังหวะไว้
-
Mempool & fees
ทำไม fee ขึ้นตอนคนใช้เยอะ
block มีพื้นที่จำกัด transaction ที่รออยู่จึงต้องเข้าคิวและประมูลกันเป็น sat/vB จ่ายมากกว่าก็แซงคิวได้ วันนี้ราคาสำหรับไปเร็วอยู่ราว 9 ส่วนราคาสำหรับคนไม่รีบอยู่ราว 2.
-
Confirmations
block ทับกัน นั่นแหละคือความปลอดภัย
แต่ละ block รวบ transaction ไว้แล้วอ้างอิงถึง block ก่อนหน้า พอของคุณเข้าไปอยู่ใน block ก็ได้ 1 confirmation ทุก block ที่ทับเพิ่มอีกหนึ่ง และการย้อนกลับยากขึ้นแบบทวีคูณ ตอนนี้ chain ยาว 962,524 block แล้ว
-
Halving
ทำไมถึงมีได้แค่ 21 ล้านเหรียญ
เหรียญใหม่เกิดจากรางวัล block เท่านั้น และรางวัลนั้นถูกหั่นครึ่งทุก 210,000 block เลขคณิตรับประกันว่าอุปทานจะหยุดที่ 21 ล้าน โดยตอนนี้ขุดออกมาแล้ว 94.9% ของทั้งหมด
-
Consensus
ทุกคนตรวจทุกคน
node อิสระหลายพันเครื่องตรวจทุก block ด้วยกติกาชุดเดียวกัน ไม่มีใครคนเดียวเปลี่ยนอุปทาน ย้อน payment หรือแช่แข็ง address ได้ ข้อตกลงร่วมกันนั้นคืออำนาจเดียวที่มีอยู่
ถ้าอยากรู้ลึกกว่านั้น
ทั้งหมดข้างบนคือรูปร่างของมัน ห้าชั้นนี้คือเรื่องเดียวกันแต่เรียกด้วยชื่อจริง สำหรับคนที่อยากไปต่อ เปิดอ่านเฉพาะชั้นที่ต้องการได้เลย
1 · ตัวตนและความเป็นเจ้าของ
ไม่มีชื่อ ไม่มีเลขบัญชีธนาคาร มีแต่วิทยาการรหัสลับ
- Private key
- ความลับ 256 บิตที่สุ่มขึ้นมา ใช้เซ็น transaction เพื่อพิสูจน์ว่าคุณเป็นเจ้าของเหรียญ
- Public key
- คำนวณออกมาจาก private key ด้วยคณิตศาสตร์เส้นโค้งวงรี (secp256k1) และย้อนกลับไม่ได้
- Address
- คือ public key ที่ถูก hash แล้วแปลงเป็นสตริงที่คุณเอาไปให้คนอื่นโอนเข้า — Base58 สำหรับแบบเก่า Bech32 สำหรับ SegWit
2 · transaction กับโมเดล UTXO
มูลค่าเคลื่อนที่เป็นก้อนเหรียญ ไม่ใช่ยอดคงเหลือในบัญชี
- Input กับ output
- transaction หนึ่งรายการใช้เหรียญที่มีอยู่ (input) แล้วสร้างเหรียญใหม่ (output) ให้ผู้รับ บวกเงินทอนกลับมาหาคุณ ไม่มีช่อง "ยอดคงเหลือ" อยู่ที่ไหนเลย
- ล็อกและปลดล็อก
- เหรียญแต่ละก้อนถูกล็อกด้วยสคริปต์ ปกติผูกกับ key ของผู้รับ จะใช้มันได้ต้องใส่ลายเซ็นที่ทำให้สคริปต์นั้นผ่าน
- ลายเซ็นครอบคลุมแค่ไหน
- มีแฟล็กกำหนดว่าลายเซ็นผูกกับส่วนไหนของ transaction บ้าง แบบที่ใช้กันทั่วไปล็อกทั้ง input และ output ทุกตัว จึงแก้อะไรทีหลังไม่ได้
3 · เครือข่ายแบบ peer-to-peer
transaction ที่เซ็นแล้วถูกส่งต่อออกไปทั้งโลก
- Mempool
- ทุก node ตรวจ transaction ว่าลายเซ็นถูกและเหรียญยังไม่ถูกใช้ แล้วเก็บไว้ในหน่วยความจำเพื่อรอ block
- การกระจายต่อ
- node ส่งต่อ transaction และ block ไปยัง peer ของตัวเองต่อไป โดย block จะส่งเป็นรหัสสั้น ๆ แทนข้อมูลเต็มเมื่อทำได้ เพื่อประหยัดแบนด์วิดท์และลดความหน่วง
4 · การขุดกับ Proof-of-Work
transaction ถูกรวบรวมแล้วปิดผนึก
- Coinbase transaction
- transaction แรกของ block ที่ miner เขียนขึ้นเองเพื่อจ่ายรางวัล block บวก fee ทั้งหมดให้ตัวเอง
- Block header
- ข้อมูล 80 ไบต์ที่สรุป block ทั้งอัน: เวอร์ชัน ลายนิ้วมือของ block ก่อนหน้า สรุปของทุก transaction ข้างใน เวลา ค่าเป้า และ nonce
- ตัวงานที่ทำจริง
- miner ตามหา nonce ที่ทำให้ลายนิ้วมือของ header ตกลงมาต่ำกว่าหรือเท่ากับค่าเป้า ซึ่งก็คือกติกา "ขึ้นต้นด้วยศูนย์ครบจำนวน" ข้างบน เขียนแบบเป๊ะ ๆ
- การปรับ difficulty
- ปรับใหม่ทุก 2,016 block หรือราวสองสัปดาห์ เพื่อให้ block ยังเฉลี่ยสิบนาที และขยับได้มากสุดสี่เท่าต่อรอบ ไม่ว่าปรับขึ้นหรือลง
5 · ประวัติชุดไหนคือของจริง
เกิดอะไรขึ้นเมื่อ miner สองคนชนะพร้อมกัน
- การต่อโซ่
- block ที่ขุดได้จะถูก node อื่นตรวจ แล้วต่อท้ายด้วยการอ้างอิงลายนิ้วมือของ block ก่อนหน้า
- กติกาสายที่งานเยอะที่สุด
- ถ้า miner สองคนชนะพร้อมกัน chain จะแตกเป็นสองแขนงชั่วคราว แขนงที่มีงานสะสมมากกว่าเป็นฝ่ายชนะ อีกแขนงถูกทิ้ง
- ความสิ้นสุด
- transaction ใน block ที่ถูกทิ้งจะกลับไปอยู่ใน mempool แล้วรอถูกขุดใหม่ ยิ่งมี block ต่อทับธุรกรรมของคุณมากเท่าไหร่ การย้อนกลับยิ่งแพงขึ้นแบบทวีคูณ
คำที่จะเจอบ่อย
- Miner
เครื่องที่แข่งกันเดาลายนิ้วมือเพื่อแลกกับรางวัล block
- Node
ใครก็ตามที่รันซอฟต์แวร์ของ Bitcoin คอยตรวจ block และเก็บสำเนา chain ไว้เต็ม ๆ
- Hash
ลายนิ้วมือดิจิทัลของข้อมูลชุดหนึ่ง เปลี่ยนข้อมูลไปแค่บิตเดียว ลายนิ้วมือเปลี่ยนทั้งชุด
- Confirmation
มี block ทับ transaction ของคุณอยู่กี่อัน ยิ่งมากยิ่งย้อนกลับยาก
ทีนี้ไปดูของจริง
หน้านาฬิกาคือตัวเลขชุดเดียวกันนี้ อัปเดตแบบสดบนจอเดียว