§ ถาม-ตอบ · การพิสูจน์

ผมจะ verify supply cap 21 ล้านของ Bitcoin ด้วยตัวเองได้ยังไง?

คำตอบสั้นๆ

รัน Bitcoin node มัน validate ทุก block ตั้งแต่ genesis block อย่างอิสระ บังคับใช้ supply cap 21 ล้านในโค้ด consensus และจะปฏิเสธ block ใดๆ ที่เกิน ไม่ต้องเชื่อบุคคลที่สามใดๆ

อัปเดตล่าสุด · 23 เมษายน 2569

EN version →
21M Emission Curve · Supply Schedule94.8% mined
Now (2026)19.92M BTC94.8% mined
05M10M15M21M20092014201920242029203420392044204921,000,000 BTC limit50% · 201390% · 202399% · 2036TodayBTC Mined (cumulative)

Computed from Bitcoin halving schedule: 210,000 blocks per epoch, 144 blocks/day average. Hover or tap to explore any year. Supply asymptotes at ≈20,999,999.9769 BTC around year 2140.

รัน Bitcoin node นั่นคือคำตอบสั้นๆ และมันคือคำตอบที่ถูก Bitcoin full node ดาวน์โหลดทุก block จาก genesis block ในเดือนมกราคม 2009 ถึงปัจจุบัน validate ทุกธุรกรรมตามกฎ consensus ของ Bitcoin และบังคับใช้ supply cap 21 ล้านตรงๆ ในโค้ด ไม่มี mining pool ไม่มี exchange ไม่มีรัฐบาล และไม่มีนักข่าวที่จะบอกคุณได้ว่า supply คือ 21 ล้าน — node ของคุณบอกคุณเพราะมันเช็คทุก block ด้วยตัวเอง

Supply cap ไม่ใช่คำกล่าวอ้างทางการตลาด มันไม่ใช่สัญญาจาก CEO มันเป็นผลลัพธ์ทางคณิตศาสตร์ของฟังก์ชันในโค้ด consensus ของ Bitcoin ที่เรียกว่า GetBlockSubsidy() ฟังก์ชันนั้นตัดสินว่า miner ได้รับ bitcoin ใหม่กี่เหรียญเมื่อเจอ block ที่ valid ฟังก์ชัน halve output ทุก 210,000 block ถ้า miner พยายามอ้างมากกว่า subsidy ที่อนุญาต node อื่นๆ ทุกตัวบนเครือข่ายปฏิเสธ block นั้นทันที — มันไม่เข้า chain เลย กฎบังคับตัวเอง ร่วมกัน ข้าม node อิสระประมาณ 20,000 ตัวทั่วโลก

ถ้าคุณอยากถือ Bitcoin และอยากรู้แน่ชัดว่า cap 21 ล้านเป็นจริงไม่ใช่คำกล่าวอ้างที่คุณรับมาด้วยศรัทธา คุณไม่ต้องอ่านบทอธิบาย — คุณต้อง verify หน้านี้แสดงวิธี

กลไก: GetBlockSubsidy() และ halving

source code ที่บังคับใช้ supply cap ของ Bitcoin อยู่ใน validation.cpp ใน repository ของ Bitcoin Core ฟังก์ชันที่เกี่ยวข้องคือ GetBlockSubsidy() นี่คือ logic ในภาษาธรรมดา:

Block subsidy เริ่มต้นคือ 50 BTC ต่อ block ทุก 210,000 block subsidy นั้นถูก halve โดยใช้ operation right-bit-shift Block 0 ถึง block 209,999: subsidy 50 BTC Block 210,000 ถึง block 419,999: 25 BTC Block 420,000 ถึง 629,999: 12.5 BTC และต่อไปเรื่อยๆ

ถ้าคุณรวม bitcoin ทั้งหมดที่จะถูก issue ตลอดทุก epoch ของตาราง halving คณิตศาสตร์ออกมาเป็น geometric series:

ผลรวมของ series: 10,500,000 + 5,250,000 + 2,625,000 + … ลู่เข้าที่ 21,000,000 BTC แม่นยำกว่านั้น เพราะ integer arithmetic ที่ใช้ใน Bitcoin Core (ทำงานในหน่วย satoshi โดย 1 BTC = 100,000,000 satoshi) ทำให้เศษเล็กๆ หายไปในแต่ละขั้น halving supply สุดท้ายที่จะถูกขุดจริงๆ คือประมาณ 20,999,999.9769 BTC — น้อยกว่า 21 ล้านเล็กน้อย satoshi สุดท้ายจะถูกขุดราวปี 2140

Operation bit-shift ไม่ใช่อุบัติเหตุ มันออกแบบให้แม่นยำและ deterministic ทุก node ที่รันโค้ดนี้ให้ผลลัพธ์เดียวกัน ถ้า block ของ miner ใดอ้างมากกว่าที่ GetBlockSubsidy() อนุญาต block นั้น invalid และทุก node อื่นปฏิเสธมันอย่างอิสระ

ผมอ่านโค้ดนี้มาแล้ว คุณก็อ่านได้ — เปิด GitHub repository และค้น GetBlockSubsidy คุณไม่ต้องเชื่อผมว่ามันทำตามที่ผมบอก

วิธีที่ 1: รัน node ของคุณเอง

วิธีที่เป็นกลางที่สุดในการ verify supply ของ Bitcoin คือรัน node ของคุณเอง เวลาผมทำแบบนี้ ผมไม่ได้ query database ของคนอื่น ผมกำลังสร้างสำเนา ledger ของตัวเองด้วยการ validate ทุก block จากจุดเริ่มต้น

Bitcoin Core (ผู้ใช้ทางเทคนิค) ดาวน์โหลด Bitcoin Core จาก bitcoincore.org ฟรี เป็น software open-source รัน bitcoind บนเครื่องที่มีพื้นที่ดิสก์อย่างน้อย 600 GB (สำหรับ chain เต็ม) หรือใช้โหมด pruning ถ้าพื้นที่จำกัด Initial Block Download (IBD) ใช้เวลาหนึ่งถึงสามวันบนการเชื่อมต่ออินเทอร์เน็ตบ้านทั่วไป เมื่อ sync เสร็จ node ของคุณ validate ทุกธุรกรรมและทุกการอ้าง subsidy ตั้งแต่ปี 2009 คุณ query node ได้ด้วย bitcoin-cli gettxoutsetinfo แล้วมันจะรายงาน supply รวมปัจจุบันในชุด UTXO

Umbrel ถ้าคุณมี Raspberry Pi หรือคอมพิวเตอร์สำรอง Umbrel เป็น operating system เซิร์ฟเวอร์บ้านที่รัน Bitcoin Core พร้อม interface แบบกราฟิก ตั้งค่าใช้เวลาประมาณ 30 นาที sync ใช้เวลาไม่กี่วัน หลัง sync มันแสดง block height, supply และสุขภาพเครือข่ายบน dashboard ผมรัน Umbrel node ที่บ้าน

Start9 คล้าย Umbrel Start9 เป็น platform self-hosting ที่รวม Bitcoin Core และบริการอื่น ทางเทคนิคกว่า Umbrel แต่เน้น operational security แข็งกว่า

myNode อีกตัวเลือก node ที่บ้าน มีทั้งแบบอุปกรณ์สำเร็จรูปและ software ตัวเลือกดีถ้าคุณชอบอะไรที่ plug-and-play กว่า

เมื่อ node ใดๆ ข้างต้น sync เสร็จ supply ไม่ใช่คำกล่าวอ้างที่คุณยอมรับ — มันเป็นตัวเลขที่ software ของคุณเองคำนวณโดยการเช็คทุก block

วิธีที่ 2: Verify ผ่าน mempool.space

ถ้าคุณอยาก verify supply โดยไม่รัน full node ตอนนี้ mempool.space ให้กราฟ supply และสถิติปัจจุบันจาก node ของพวกเขาเอง นี่ยังคงเชื่อ node ของพวกเขาแทน node ของคุณเอง แต่ mempool.space เป็น software open-source — node ของพวกเขารันโค้ด validation เดียวกับ Bitcoin Core และคุณเช็ค GitHub repository ของพวกเขาเพื่อยืนยันได้

กราฟ supply บน mempool.space แสดงการเพิ่มขึ้นแบบขั้นบันไดของ bitcoin รวมที่ขุดได้ตามเวลา โดยมี halving เห็นชัดเป็นจุดเปลี่ยนที่อัตราการเพิ่ม supply ช้าลง คุณเห็น supply หมุนเวียนปัจจุบันและเทียบกับตารางทางทฤษฎีได้

วิธีนี้ต้องการความเชื่อน้อยกว่าการอ่านข่าว แต่มากกว่าการรัน node ของคุณเอง ผมใช้มันเช็คตัวเลขของ node ตัวเองให้อยู่ในช่วงที่คาดไว้

ทำไมจำนวน node สำคัญ: 20,000 ผู้บังคับใช้กฎเดียวกัน

Supply cap ของ Bitcoin ไม่ได้บังคับใช้โดยเซิร์ฟเวอร์เดียวหรือบริษัทเดียว มันบังคับใช้โดย full node ที่เข้าถึงได้ประมาณ 20,000 ตัวทั่วโลก — และจำนวน node ไม่ listening (node ที่ validate แต่ไม่รับ connection ขาเข้า) ที่ไม่รู้จำนวน ตาม bitnodes.io ที่ทำแผนที่ node Bitcoin ที่เข้าถึงได้ node เหล่านี้กระจายอยู่ในหลายร้อยประเทศ

ทุก node นั้นรันฟังก์ชัน GetBlockSubsidy() เดียวกัน ทุกตัวเช็คการอ้าง subsidy ของ miner แต่ละตัวอย่างอิสระกับกฎเดียวกัน ถ้า miner พยายาม issue ตัวเอง 100 BTC ใน block แทนที่จะเป็นจำนวนที่อนุญาต node ทั้ง 20,000 ตัวคำนวณอย่างอิสระว่า block invalid และปฏิเสธการเพิ่มเข้า chain ของตัวเอง Block ไม่แพร่กระจาย

นี่คือข้อโต้แย้ง “การกระจายศูนย์คือประเด็น” ที่เป็นรูปธรรม ไม่มีผู้มีอำนาจเดียวที่คุณบังคับ จ่าย หรือ hack เพื่อเปลี่ยน supply ของ Bitcoin ได้ คุณต้องชักชวนผู้ดำเนินการ node อิสระ 20,000 คนทั่วโลกพร้อมกันให้รับ software ที่เพิ่ม supply — ซึ่งพวกเขาจะไม่ทำ เพราะมันจะลดมูลค่า holding ของพวกเขาเอง โครงสร้างแรงจูงใจบังคับใช้ cap อย่างน้อยพอๆ กับโค้ด

ผมคิดเรื่องนี้แบบที่ผมคิดถึงกฎหมายรัฐธรรมนูญที่บังคับใช้โดยคนหลายล้านที่แต่ละคนได้ประโยชน์จากการมีอยู่ของมัน คุณติดสินบนสถาบันไม่ได้เมื่อสถาบันคือทุกคน

จะเกิดอะไรถ้ามีคนพยายามทำลาย cap 21 ล้าน

สมมติว่า miner หรือกลุ่ม miner ปล่อย software Bitcoin เวอร์ชันที่ลบขีดจำกัด subsidy และให้พวกเขา issue 1,000 BTC ต่อ block จะเกิดอะไร?

  1. พวกเขาเจอ block ภายใต้ชุดกฎที่แก้ไขแล้ว
  2. พวกเขา broadcast block ไปยังเครือข่าย
  3. ทุก node อื่น — รัน Bitcoin Core มาตรฐาน — รับ block และ validate การเช็ค GetBlockSubsidy() ล้มเหลว Block ถูกปฏิเสธ
  4. Chain ส่วนน้อยมีอยู่เฉพาะในหมู่ miner ที่รับกฎที่แก้ไข มันไม่ใช่ Bitcoin ในความหมายทางเศรษฐศาสตร์ใดๆ
  5. ใครก็ตามที่ใช้ chain มาตรฐาน — ซึ่งรวมทุก exchange ทุก wallet ทุกผู้ใช้ที่ไม่รับการแก้ไข — ไม่ได้รับผลกระทบเลย

นี่คือสิ่งที่เกิดขึ้นกับ hard fork ของ Bitcoin Cash ในปี 2017 กลุ่ม miner และ developer เปลี่ยนกฎ block size ของ Bitcoin แล้ว fork chain ใหม่ออก เครือข่าย Bitcoin ดำเนินต่อภายใต้กฎเดิม สอง chain แยกจากกัน Supply cap ของ Bitcoin ไม่ได้รับผลกระทบ Chain ส่วนน้อยมีอยู่เป็นเครือข่ายแยกต่างหาก แต่ไม่ใช่ Bitcoin

การละเมิด supply cap รุนแรงกว่าการเปลี่ยน block size มาก — มันเป็นอันตรายโดยตรงต่อผู้ถือ Bitcoin ทุกคน ซึ่งหมายความว่าแรงจูงใจทางเศรษฐกิจต่อต้านการรับมันท่วมท้น แม้แต่ miner ที่อาจได้ประโยชน์จาก subsidy พิเศษในระยะสั้นก็จะทำลายมูลค่า holding ของตัวเองโดยทำให้ cap ไร้ความหมาย

Verify เร็วๆ ตอนนี้เลย

คุณเช็ค supply หมุนเวียนปัจจุบันได้เลยโดยไม่ต้องใช้ software:

  1. เปิด mempool.space/graphs/supply ใน browser
  2. จด supply ปัจจุบันและ block height
  3. Cross-check: ที่ block height ใดก็ตาม supply สูงสุดทางทฤษฎีคือผลรวมของ output GetBlockSubsidy() สำหรับทุก block จนถึง height นั้น Supply จริงควรใกล้เคียง — แต่น้อยกว่าเล็กน้อย — ตัวเลขนั้น เพราะ block แรกๆ บางตัวขุดด้วย subsidy น้อยกว่าเต็ม และเพราะ bitcoin บางส่วนถูกสูญหายถาวร

Supply ปัจจุบัน ณ กลางปี 2024 (หลัง halving ครั้งที่สี่) คือประมาณ 19.7 ล้าน BTC ที่ขุดได้จากสูงสุดทางทฤษฎี 21 ล้าน Block subsidy ปัจจุบันคือ 3.125 BTC ต่อ block Halving ครั้งถัดไปจะเกิดที่ block 1,050,000 ซึ่งตอนนั้น subsidy ลดเป็น 1.5625 BTC

ตัวเลขเหล่านี้ไม่ใช่ประกาศจากผู้มีอำนาจกลาง พวกมันคือ output ของโค้ด consensus เดียวกันที่ทุก full node รัน node ของคุณ เมื่อ sync แล้ว จะคำนวณตัวเลขเดียวกัน

นั่นคือสิ่งที่ “don’t trust, verify” หมายถึงในทางปฏิบัติ ไม่ใช่ “ผมจะเชื่อแหล่งนี้มากกว่าแหล่งนั้น” มันหมายถึง “ผมจะคำนวณคำตอบด้วยตัวเอง”


แหล่งอ้างอิงหลัก

  1. Bitcoin Core — validation.cpp (GetBlockSubsidy) [1]
  2. bitcoin.org — Running a full node [2]
  3. mempool.space — Bitcoin supply graphs [3]
  4. Bitcoin: A Peer-to-Peer Electronic Cash System [4]