Dekkapok.Engineering

2026-08-05

Stratum V1 vs V2: โปรโตคอลที่ขุด Bitcoin มาตลอด 10 ปี กับเวอร์ชันที่อยากคืนอำนาจกลับให้นักขุด

#bitcoin #mining #protocol #decentralization

Stratum V1 vs V2: โปรโตคอลที่ขุด Bitcoin มาตลอด 10 ปี กับเวอร์ชันที่อยากคืนอำนาจกลับให้นักขุด
FILE: stratum.md
SIZE: 31.5 KB
SHA256: 0x4106f690
CHARS: 18460
WORDS: 2238
READ TIME: 47 min

สรุปสั้น: Stratum V1 ถูกสร้างในปี 2012 โดย Marek “Slush” Palatinus เพื่อแก้ปัญหาของ getwork protocol เดิม — และมันทำงานได้ดีมากว่า 10 ปี แต่ใต้ความสำเร็จนั้นมีจุดอ่อนสำคัญ 3 อย่าง: ไม่มี encryption (ข้อมูลทั้งหมดเดินทางแบบ plaintext), pool ควบคุม block template ทั้งหมด (นักขุดไม่มีสิทธิ์เลือก transaction), และ hashrate hijacking (ผู้โจมตีสามารถขโมย 1-2% ของ hashrate ไปเงียบๆ) Stratum V2 (2019) แก้ทุกจุดด้วย binary protocol, Noise Framework encryption, และ Job Negotiation Protocol ที่ให้นักขุดสร้าง block template เองได้ครั้งแรก — ลด censorship risk และเพิ่ม efficiency สูงสุด ~7% ณ กลางปี 2026 มี hashrate ~15-20% ที่ใช้ V2 แล้ว และ 7 pool ใหญ่ที่ครอง ~75% ของ global hashrate เพิ่งเข้าร่วม V2 Working Group


สารบัญ


Stratum คืออะไร — และทำไมมันสำคัญ

ทุกครั้งที่ ASIC miner ของคุณ “ขุด” Bitcoin มันกำลังทำอะไรอยู่? มันพยายาม hash header ของ block ซ้ำๆ จนกว่าจะได้ผลลัพธ์ที่ต่ำกว่า target difficulty ที่ network กำหนด — แต่มันจะรู้ได้ยังไงว่าต้อง hash อะไร? ใครเป็นคนส่งข้อมูลนั้นมาให้?

คำตอบคือ Stratum protocol — โปรโตคอลที่ทำหน้าที่เป็นสะพานการสื่อสารระหว่าง mining pool กับ ASIC miner แต่ละตัว มันบอก miner ว่า:

  • ควร hash อะไร (block header data)
  • difficulty target ในตอนนี้คือเท่าไหร่
  • share ที่ submit มาถูกต้องหรือเปล่า

โดยพื้นฐานแล้ว Stratum คือ “ภาษา” ที่ pool กับ miner ใช้คุยกัน — และ “ภาษา” นี้กำหนดว่าใครมีอำนาจตัดสินใจอะไรในกระบวนการขุด Bitcoin ทั้งหมด


Stratum V1: โปรโตคอลที่ขับเคลื่อน Bitcoin Mining มา 12 ปี

Stratum V1 ถูกสร้างในปี 2012 โดย Marek “Slush” Palatinus ผู้ก่อตั้ง Slush Pool (ปัจจุบันคือ Braiins Pool) — pool Bitcoin แรกของโลก เขาสร้างมันขึ้นมาเพื่อแทนที่ getwork protocol เดิมที่ออกแบบสำหรับการขุดด้วย CPU และ GPU ไม่ใช่ ASIC ขนาดใหญ่

โครงสร้างของ V1 เรียบง่ายมาก: JSON-RPC over plain TCP

// Pool → Miner: ส่ง mining job
{
  "id": null,
  "method": "mining.notify",
  "params": [
    "job_id_001",
    "previous_block_hash_here",
    "coinbase_prefix",
    "coinbase_suffix",
    ["merkle_branch_1", "merkle_branch_2"],
    "version",
    "nbits",
    "ntime",
    true
  ]
}

// Miner → Pool: submit share
{
  "id": 4,
  "method": "mining.submit",
  "params": [
    "worker_name",
    "job_id_001",
    "extra_nonce_2",
    "ntime",
    "nonce"
  ]
}

ทุก message เป็น JSON string ที่มนุษย์อ่านได้ — ส่งผ่าน TCP แบบไม่มี encryption ทั้งหมด

ความเรียบง่ายนี้เองที่ทำให้ Stratum V1 ประสบความสำเร็จอย่างล้นหลาม: implement ง่าย, debug ง่าย, และ compatible กับ hardware ทุกรุ่น ภายในเวลาไม่กี่ปี มันกลายเป็น de facto standard ของ Bitcoin mining ทั่วโลก


ปัญหาของ V1: เมื่อ “พอใช้งานได้” ไม่เพียงพออีกต่อไป

ฉบับขำๆ — วิทยุสื่อสารในยุคสมาร์ทโฟน

ลองนึกภาพโรงงานขนาดใหญ่ที่ใช้วิทยุสื่อสารแบบเก่า (walkie-talkie) ในการสื่อสาร — ได้ยินทุกอย่างที่คุยกัน ทั้งออร์เดอร์, รหัสตู้เซฟ, และแผนการทำงาน ใครก็ตามที่มีเครื่องรับความถี่เดียวกันนั่งฟังอยู่ก็จะได้ยินทุกอย่างโดยไม่มีใครรู้

นอกจากนั้น หัวหน้าโรงงาน (pool) เป็นคนตัดสินใจทุกอย่าง — คนงาน (miner) ทำได้แค่ทำตามคำสั่งโดยไม่มีสิทธิ์โต้แย้ง และบางครั้งมีคนแอบสวมรอยเป็น “หัวหน้าปลอม” แล้วเบี่ยงงานของคนงานให้ไปทำงานให้ตัวเองแทน โดยไม่มีใครรู้จนกว่าจะสายเกินไป

นั่นคือ Stratum V1 ในปี 2024

จุดอ่อน 3 ด้าน

1. ไม่มี Encryption — ข้อมูลทุกอย่างเดิน plaintext

ข้อมูลทั้งหมดที่วิ่งอยู่บน Stratum V1 มองเห็นได้ด้วยตาเปล่า:

  • Username / password ของ pool account
  • Wallet address ที่รับรางวัล
  • ทุก share ที่ submit

ผู้โจมตีที่อยู่ระหว่าง miner กับ pool (man-in-the-middle) สามารถอ่านและดัดแปลงข้อมูลเหล่านี้ได้แบบ real-time

2. Hashrate Hijacking — ขโมย hashrate แบบเงียบๆ

เพราะไม่มี authentication ที่แน่นหนา ผู้โจมตีสามารถ “แทรกตัว” เป็น pool ปลอมระหว่าง miner กับ pool จริงได้ แล้วเบี่ยง mining job ให้ miner ไปขุดให้ address ของผู้โจมตีแทน — ขโมยได้ประมาณ 1-2% ของ hashrate โดยที่ operator ไม่รู้ตัวทันที

3. Pool ควบคุม Block Template ทั้งหมด — Centralization ระดับ Protocol

นี่คือปัญหาเชิง decentralization ที่ใหญ่ที่สุด

ใน Stratum V1 pool เป็นคนตัดสินใจทั้งหมดว่า transaction ใดจะถูกใส่เข้าไปใน block นักขุดทำได้แค่รับ job แล้วไปหา nonce — ไม่มีสิทธิ์เลือก ไม่มีสิทธิ์โต้แย้ง

ปัญหาของเรื่องนี้เห็นชัดในเหตุการณ์จริง: ในเดือนพฤษภาคม 2021 Marathon Digital ขุด block ที่จงใจกรอง transaction ที่เกี่ยวข้องกับที่อยู่ในรายการ SDN (Specially Designated Nationals) ออก — พิสูจน์ว่า pool มีอำนาจเซ็นเซอร์ transaction ได้จริงๆ ระดับ protocol

เมื่อรวมกับยุคที่ Ordinals/BRC-20 ระบาด pools บางแห่งก็เริ่มตัดสินใจว่าจะ include หรือ exclude inscription transaction ขึ้นอยู่กับ policy ของตัวเอง — ทั้งหมดนี้เกิดขึ้นโดยที่นักขุดไม่มีทางเลือก

ปัญหาผลกระทบระดับความร้ายแรง
ไม่มี encryptionข้อมูล credential, wallet address, shares เปิดเผยทั้งหมดสูง
Hashrate hijackingสูญเสีย 1-2% hashrate โดยไม่รู้ตัวกลาง-สูง
Pool controls block templateCensorship, centralization ระดับ protocolสูงมาก
JSON overheadbandwidth เสีย 30-40% เกินจำเป็นกลาง
Latency สูงjob delivery ~228ms ทำให้ stale shares เพิ่มกลาง

Stratum V2: สถาปัตยกรรมใหม่ทั้งหมด

Stratum V2 ถูก spec ในเดือนพฤศจิกายน 2019 โดยทีมจาก Braiins — Jan Capek และ Pavel Moravec — ร่วมกับ Matt Corallo นักพัฒนา Bitcoin Core ที่รู้จักกันดีในวงการ

เป้าหมายไม่ใช่แค่ “patch” V1 แต่เป็น redesign จากศูนย์ เพื่อแก้ปัญหาเชิงสถาปัตยกรรมทั้งหมดในครั้งเดียว

Binary Protocol — ลาก่อน JSON

ทุก message ใน V2 เป็น compact binary format แทน JSON:

// V1 JSON message (human-readable, ~200 bytes)
{"id":4,"method":"mining.submit","params":["worker","job01","00000000","5e4d3b2a","1a2b3c4d"]}

// V2 Binary message (~50-60 bytes equivalent)
[header 6 bytes][job_id 4 bytes][nonce2 4 bytes][ntime 4 bytes][nonce 4 bytes]

ผลลัพธ์: bandwidth ลดลง ~70% สำหรับ message ขนาดเล็ก, job delivery latency หล่นจาก ~228ms เหลือ <2.5ms

Noise Protocol Framework — Encryption + Authentication

V2 ใช้ Noise_NX handshake pattern ซึ่งให้ทั้ง:

  • Confidentiality — ข้อมูลทุกอย่างถูก encrypt (ChaCha20-Poly1305 หรือ AES-256-GCM)
  • Authentication — miner ยืนยัน identity ของ pool ได้ผ่าน Schnorr signature certificate
  • Message integrity — ตรวจจับการดัดแปลงข้อมูลระหว่างทาง
  • Hashrate hijacking protection — cryptographically impossible เมื่อ authentication สมบูรณ์

ตารางเปรียบเทียบหลัก

คุณสมบัติStratum V1Stratum V2
Wire formatJSON plaintextBinary encrypted
Encryptionไม่มีNoise Framework (ChaCha20/AES-256)
Authenticationไม่มีCertificate-based (Schnorr)
Block constructionPool เท่านั้นMiner หรือ pool
Bandwidthฐาน 100%ลดลง ~70%
Job latency~228ms<2.5ms
Hashrate hijackingเสี่ยงป้องกันได้
Stale share rateสูงกว่าต่ำกว่า

3 Sub-protocols ของ V2

สิ่งที่ทำให้ V2 ยืดหยุ่นกว่า V1 มากคือมันถูกออกแบบเป็น 3 sub-protocols ที่แยกกัน ซึ่ง deploy ได้อิสระหรือรวมกัน:

1. Mining Protocol (Core Layer)

Foundation ของทุกอย่าง — รับผิดชอบ:

  • การส่ง mining job จาก pool ไป miner
  • การ submit shares กลับ
  • การปรับ difficulty อัตโนมัติ

นี่คือส่วนที่ให้ประโยชน์ด้าน encryption, bandwidth, และ latency ทันที โดยไม่ต้องเปลี่ยนส่วนอื่น pool ส่วนใหญ่ที่รองรับ V2 เริ่มจาก layer นี้ก่อน

2. Job Negotiation Protocol (Decentralization Layer)

หัวใจของการเปลี่ยนแปลง — ให้ miner สร้าง block template เองแล้ว “negotiate” กับ pool แทนที่จะรับ template จาก pool ฝ่ายเดียว (รายละเอียดในหัวข้อถัดไป)

3. Template Distribution Protocol (Efficiency Layer)

แทนที่ getblocktemplate interface เก่าด้วย mechanism ที่ optimize สำหรับ V2’s binary format โดยเฉพาะ ทำหน้าที่แจกจ่าย block template จาก Bitcoin node ไปยัง mining software อย่างมีประสิทธิภาพ

Bitcoin Core v28.0+ มี experimental support สำหรับ Template Distribution Protocol แล้ว


Job Negotiation: หัวใจของ V2 ที่เปลี่ยนเกม

ถ้า encryption และ binary format คือการ “upgrade hardware” ของ protocol แล้ว Job Negotiation Protocol คือการ “เปลี่ยน power dynamics” ของ Bitcoin mining ทั้งหมด

ใน V1 (ปัจจุบัน)

Pool → สร้าง block template (เลือก transactions เอง)
Pool → ส่ง job ให้ Miner
Miner → iterate nonces
Miner → submit shares
Pool → จ่าย reward

นักขุดไม่มีส่วนร่วมในการตัดสินใจเรื่อง transaction เลย

ใน V2 ด้วย Job Negotiation

Miner → รัน Bitcoin full node (มี mempool copy)
Miner → สร้าง block template เอง (เลือก transaction เอง)
Miner → submit template ไปให้ Pool ผ่าน V2
Pool → ตรวจแค่ coinbase output (ว่า reward allocation ถูกต้องไหม)
Pool → approve template (ไม่แตะ transaction list)
Miner → ขุดตาม template ของตัวเอง
Miner → ถ้าเจอ block → broadcast เอง

ความแตกต่างที่สำคัญ: pool ไม่สามารถ reject template เพราะ transaction content ได้อีกต่อไป (ในทางทฤษฎี) — ทำได้แค่ verify ว่า coinbase reward allocation ถูกต้องหรือเปล่า

Fallback Mechanism

ถ้า pool reject template ด้วยเหตุผลที่ไม่สมเหตุสมผล Job Declarator Client จะ automatically fallback ไปยัง pool อื่นหรือ solo mining — ป้องกันการถูก force ให้ participate ใน censorship

ผลลัพธ์ด้าน Decentralization

ก่อน V2: ถ้า 4 pool ใหญ่ถูก compromise พร้อมกัน ความสามารถในการเซ็นเซอร์ transaction จะกระจุกอยู่ที่ pool operators ทั้ง 4 คน

หลัง V2 + Job Negotiation: นักขุดแต่ละคนคือ “ด่านตรวจ” ของตัวเอง — ถ้า pool เริ่ม reject valid templates นักขุดจะรู้ทันที และสามารถย้าย pool หรือ solo mine ได้ก่อนที่การ attack จะมีผล

สิ่งที่ Job Negotiation ปกป้องโดยตรง: Lightning force-close transactions, HTLC timeout claims, และ justice transactions ทั้งหมดที่ layer-2 ต้องพึ่งพาการ confirm บน Bitcoin — ถ้า pool สามารถเซ็นเซอร์ได้ ความ “trustless” ของ Lightning Network จะพัง

ข้อจำกัดของ Job Negotiation

Job Negotiation ไม่ใช่ magic bullet — มันมีต้นทุนจริง:

  • นักขุดต้องรัน Bitcoin full node (storage ~600+ GB, bandwidth, compute)
  • ต้อง maintain mempool copy ที่ sync อยู่ตลอดเวลา
  • ต้องมี connectivity ที่ดีพอเพื่อ propagate template ได้เร็ว

สำหรับ miner บ้านขนาดเล็กที่รัน 1-2 ตัว ต้นทุนนี้อาจสูงเกินไป — ทำให้ Job Negotiation ในทางปฏิบัติยังเป็นของ industrial miners เป็นส่วนใหญ่


OCEAN’s DATUM Protocol: เส้นทางคู่ขนาน

ในขณะที่ Stratum V2 เลือกแก้ปัญหาด้วยการ redesign protocol ใหม่ทั้งหมด OCEAN Mining เลือกเส้นทางต่าง: DATUM (Decentralized Alternative Templates for Universal Mining)

DATUM ทำงานยังไง?

Miner → รัน Bitcoin full node + DATUM Gateway
Miner → สร้าง block template เอง (เลือก transactions)
Miner → submit งานไป OCEAN สำหรับ reward coordination
OCEAN → จัดการเรื่อง variance smoothing เท่านั้น

ผลลัพธ์เหมือนกัน: นักขุดเลือก transaction เอง — แต่วิธีต่างกัน

เปรียบเทียบ V2 Job Negotiation กับ DATUM

คุณสมบัติStratum V2 Job NegotiationOCEAN DATUM
Protocol baseV2 binary (ต้องเปลี่ยน firmware)V1 compatible (ไม่ต้องเปลี่ยน firmware)
Hardware requirementV2-compatible firmwareไม่ต้องเปลี่ยน
Node requirementต้องรัน full nodeต้องรัน full node + DATUM Gateway
Adoption barrierสูงกว่าต่ำกว่า
Pool compatibilityหลาย poolOCEAN only
First block-30 กันยายน 2024

DATUM เป็น “pragmatic path” — ไม่ต้องรอให้ทุก pool adopt V2 แต่ก็ tie อยู่กับ OCEAN เท่านั้น


Timeline

วันที่เหตุการณ์
2012Marek “Slush” Palatinus สร้าง Stratum V1 สำหรับ Slush Pool — แก้ปัญหา getwork protocol เดิม
2012–2020Stratum V1 กลายเป็น de facto standard ของ Bitcoin mining ทั่วโลก
2019-11Jan Capek, Pavel Moravec (Braiins) + Matt Corallo (Bitcoin Core) เผยแพร่ Stratum V2 specification
2020Braiins เผยแพร่ SRI (Stratum Reference Implementation) — open-source reference implementation
2021-05Marathon Digital ขุด filtered block (เซ็นเซอร์ SDN addresses) — proof of concept ว่า pool ควบคุม censorship ได้จริง
2022–2023Ordinals/BRC-20 boom — pools เริ่มมี policy ต่างกันว่าจะ include/exclude inscriptions
2023DEMAND Pool ก่อตั้งเป็น V2-native pool แรก
2024-09-30OCEAN Mining ขุด block แรกด้วย DATUM protocol
2025-11DEMAND Pool เปิดตัว production-ready
2026 ต้นปี~15-20% ของ global hashrate ย้ายมาใช้ V2
2026-057 pool ใหญ่ (Foundry, AntPool, F2Pool, SpiderPool, MARA, Block Inc., DMND) เข้าร่วม V2 Working Group — รวม ~75% ของ global hashrate
2026 (คาด)V2 เป็น default protocol ใน ASIC firmware ใหม่ — คาดแตะ 40-60% ของ hashrate

Adoption ในปี 2026: ใกล้แล้วแต่ยังไม่ถึง

Pool ที่รองรับ V2 แล้ว (Production)

Poolสถานะ
Braiins PoolFull V2 production — ผู้สร้าง protocol
DEMAND PoolV2-native ตั้งแต่วันแรก (เปิดตัว Nov 2025)
OCEANDATUM protocol (V1-based แต่ decentralized template)

Pool ที่อยู่ระหว่าง Testing

Foundry USA (34% hashrate), AntPool (~14%), F2Pool (~11%), SpiderPool (~10.5%), MARA Pool, Block Inc. — ทั้งหมดเข้าร่วม V2 Working Group ใน พฤษภาคม 2026 แต่ยังอยู่ในขั้นทดสอบ ไม่ใช่ production

Hardware Support

อุปกรณ์สถานะ V2
Antminer S21 / S23Native V2 support
Whatsminer รุ่นใหม่Native V2 support
Auradine TerafluxNative V2 support
Antminer S19ผ่าน BraiinsOS+ firmware
Legacy hardwareผ่าน SRI Translator Proxy (bridge V1 → V2 pool)
Bitaxe (AxeOS v2.14.0+)Native V2 support

ความเป็นจริงในการ Adopt

ตัวเลข “15-20% hashrate” ที่ใช้ V2 ส่วนใหญ่ใช้แค่ Mining Protocol (encryption + performance) — ยังไม่ได้ใช้ Job Negotiation จริงๆ เพราะต้องรัน full node เอง

Decentralized block construction ที่เป็น “killer feature” ของ V2 ยังอยู่ในขั้น early stage ในทางปฏิบัติ


ผลกระทบต่อ Bitcoin Decentralization

ประสิทธิภาพที่เพิ่มขึ้น (ตัวเลขจริง)

แหล่งที่มาของการเพิ่มประสิทธิภาพค่าประมาณ
Eliminating hashrate hijacking~1-2%
Transaction selection optimization (เลือก high-fee transactions เอง)a few %
Stale share reduction (latency ต่ำลง)~1-2%
รวมสูงสุดภายใต้ ideal conditions~7%

ผลต่อ Censorship Resistance

ในโลกที่ Job Negotiation ใช้งานกันทั่วไป:

  • ไม่มี pool เดี่ยวที่มีอำนาจ block transaction ได้
  • แม้ regulators กดดัน pool operator, นักขุดสามารถเลือก template เองได้
  • Lightning Network, covenant-based smart contracts, และ DLC ทั้งหลายได้รับ censorship protection เพิ่มขึ้น

แต่ระหว่างทาง มีจุดหักมุมสำคัญ:

  • Pool ยังควบคุม payout — ถ้า pool ไม่จ่ายสำหรับ block ที่มี “transaction ต้องห้าม” นักขุดก็ยังมีแรงจูงใจทางการเงินที่จะหลีกเลี่ยง transaction เหล่านั้น
  • Adoption gap — ถ้า 80% ของ hashrate ยังใช้แค่ Mining Protocol ไม่ใช่ Job Negotiation decentralization benefit จะยังไม่เกิด

บทเรียน

1. Protocol Design = Power Design

การออกแบบ protocol ไม่ใช่แค่เรื่องเทคนิค — มันกำหนดว่าใครมีอำนาจตัดสินใจอะไร Stratum V1 ให้อำนาจทั้งหมดกับ pool operators โดยไม่ตั้งใจ V2 พยายามคืนอำนาจส่วนหนึ่งให้นักขุด แต่ต้องแลกกับ complexity ที่เพิ่มขึ้น

2. Backwards Compatibility มีราคา

Stratum V1 และ V2 เป็น wire-incompatible ทั้งหมด — V1 client ไม่สามารถต่อกับ V2 pool ได้โดยตรง (ต้องผ่าน SRI Translator Proxy) นั่นทำให้ adoption ช้ากว่าที่ควรเพราะต้องรอ hardware refresh cycles

DATUM เลือกตรงกันข้าม: ยอมแลก feature บางส่วนเพื่อ V1 compatibility — ทำให้ adopt ได้เร็วกว่า

3. “Decentralized” ต้องการ Active Participation

Job Negotiation ให้ power กับนักขุด — แต่นักขุดต้องรัน full node เอง ต้องลงทุน storage, bandwidth, และ maintenance ถ้าไม่มีใครใช้ Job Negotiation “decentralized block construction” เป็นแค่ feature บนกระดาษ

Decentralization ไม่ใช่ free lunch — มันต้องการคนที่ยอมแบกต้นทุน

4. Security by Default ดีกว่า Security by Choice

Stratum V1 ไม่มี encryption มาตลอด 10 กว่าปี เพราะมันไม่ “บังคับ” ให้ใช้ — มันปล่อยให้เป็น choice ของแต่ละ operator V2 ทำ encryption บังคับตั้งแต่ต้น ทำให้ทุกคนที่ใช้ V2 ได้รับ protection อัตโนมัติ

สรุปเปรียบเทียบสุดท้าย

มิติStratum V1Stratum V2
Encryptionไม่มีมี (Noise Framework)
Block template controlPool 100%Miner (ถ้าใช้ Job Negotiation)
BandwidthJSON overhead-70%
Job latency~228ms<2.5ms
Hardware supportUniversalต้องการ firmware update
Adoption (mid-2026)~80-85% hashrate~15-20% hashrate
Full node requirementไม่ต้องต้องสำหรับ Job Negotiation
Censorship resistanceต่ำสูง (ถ้าใช้ Job Negotiation)

อ้างอิง


เอกสารนี้รวบรวมจากรายงานสาธารณะและ specification หลายแหล่งเพื่อวัตถุประสงค์ทางการศึกษา ตัวเลข adoption และ hashrate อาจเปลี่ยนแปลงได้ตลอดเวลา กรุณาตรวจสอบ stratumprotocol.org และ BIP110 Monitor สำหรับข้อมูลล่าสุด

SYSTEM LOG: TERMINAL CURL ACCESS ONLINE

Retrieve the raw markdown file or structured JSON of this post directly in your command line:

curl -sL https://dekkapok.engineering/blogs/stratum.txt
curl -sL https://dekkapok.engineering/blogs/stratum.json

← blogs ทั้งหมด