วิธีการทำงานของบล็อกเชน: คำอธิบายทีละขั้นตอน
การทำความเข้าใจวิธีการทำงานของบล็อกเชนจำเป็นต้องติดตามธุรกรรมตั้งแต่เริ่มต้นจนถึงการยืนยันขั้นสุดท้าย แม้ว่าเทคโนโลยีพื้นฐานเกี่ยวข้องกับการเข้ารหัสที่ซับซ้อนและวิศวกรรมระบบแบบกระจายตัว กระบวนการหลักนั้นสง่างามในความเรียบง่าย: ธุรกรรมจะถูกสร้าง แพร่ออกไป ตรวจสอบ รวมกลุ่มเป็นบล็อก และบันทึกถาวรบนบัญชีแบบสาธารณะ
คู่มือนี้จะอธิบายขั้นตอนแต่ละส่วนของกระบวนการบล็อกเชนโดยใช้ Bitcoin เป็นตัวอย่างหลัก พร้อมทั้งระบุว่าบล็อกเชนอื่นๆ เช่น Ethereum แตกต่างกันอย่างไร เมื่อจบบทความนี้ คุณจะเข้าใจว่าเกิดอะไรขึ้นจากการคลิก "ส่ง" จนกว่าธุรกรรมของคุณจะกลายเป็นส่วนที่ไม่อาจกลับได้ของบล็อกเชน
ขั้นตอนที่ 1: การสร้างธุรกรรม
ปฏิสัมพันธ์ทุกครั้งบนบล็อกเชนเริ่มต้นด้วยการสร้างธุรกรรม เมื่อคุณตัดสินใจที่จะส่งสกุลเงินดิจิทัล ซอฟต์แวร์กระเป๋าเงินของคุณจะสร้างข้อความธุรกรรมที่มีข้อมูลหลายชิ้น
อินพุตและเอาต์พุตของธุรกรรม
Bitcoin ใช้รุ่น Unspent Transaction Output (UTXO) ลองคิดถึง UTXO ว่าเป็นแบงค์ดิจิทัลในกระเป๋าเงินของคุณ หากคุณได้รับ 0.5 BTC และ 0.3 BTC ในสองธุรกรรมแยกต่างหาก คุณจะมี UTXO สองอันรวมเป็น 0.8 BTC เมื่อคุณต้องการส่ง 0.6 BTC กระเป๋าเงินของคุณจะ:
- เลือก UTXO ที่รวมกันครอบคลุมจำนวนเงิน (0.5 + 0.3 = 0.8 BTC)
- สร้างธุรกรรมโดยใช้ที่อยู่ของผู้รับเป็นเอาต์พุตหนึ่ง (0.6 BTC)
- สร้างเอาต์พุตการเปลี่ยนแปลงกลับไปยังที่อยู่ของคุณเอง (0.2 BTC ลบด้วยค่าธรรมเนียมการทำธุรกรรม)
- UTXO ที่เลือกจะกลายเป็น "ถูกใช้ไป" และเอาต์พุตใหม่จะกลายเป็น UTXO ใหม่
Ethereum ใช้ แบบจำลองตามบัญชี ที่แตกต่างกัน คล้ายกับบัญชีธนาคารดั้งเดิม แต่ละที่อยู่มียอดคงเหลือ และธุรกรรมจะหักจากผู้ส่งและเครดิตให้กับผู้รับ
การลงชื่ออย่างดิจิทัล
ก่อนที่ธุรกรรมจะแพร่ออกไป จะต้องลงชื่อด้วย ส่วนกุญแจส่วนตัว ของผู้ส่ง นี่คือจุดที่ความปลอดภัยของ seed phrase ของคุณมีความสำคัญ — ส่วนกุญแจส่วนตัวของคุณได้มาจาก seed phrase ของคุณ และผู้ใดที่มีส่วนกุญแจนั้นสามารถลงนามในธุรกรรมในนามคุณได้
กระบวนการลงนามทำงานดังนี้:
- ข้อมูลธุรกรรมจะถูกแฮชโดยใช้ SHA-256 (Bitcoin) หรือ Keccak-256 (Ethereum)
- แฮชจะถูกลงชื่อโดยใช้ส่วนกุญแจส่วนตัวของผู้ส่งผ่านอัลกอริทึม ECDSA
- ลายเซ็นดิจิทัลที่ได้จะถูกเพิ่มเข้าไปในธุรกรรม
- ใครก็ตามสามารถตรวจสอบลายเซ็นโดยใช้ส่วนกุญแจสาธารณะของผู้ส่ง โดยยืนยันว่าธุรกรรมได้รับการอนุมัติจากผู้ถือกุญแจโดยไม่ต้องเห็นส่วนกุญแจส่วนตัว
นี่คือหลักการพื้นฐาน: การลงนามพิสูจน์การเป็นเจ้าของ ส่วนกุญแจส่วนตัวของคุณจะไม่ออกจากอุปกรณ์ของคุณในระหว่างกระบวนการนี้ มีเพียงลายเซ็นเท่านั้น — ซึ่งไม่สามารถใช้เพื่อวิศวกรรมแบบย้อนกลับส่วนกุญแจส่วนตัว — จะแบ่งปันกับเครือข่าย
ขั้นตอนที่ 2: การแพร่ออกของธุรกรรม
เมื่อลงชื่อแล้ว ธุรกรรมจะถูกแพร่ออกไปยังเครือข่ายบล็อกเชน กระเป๋าเงินของคุณจะเชื่อมต่อกับ โหนด หนึ่งตัวหรือมากกว่า (คอมพิวเตอร์ที่เรียกใช้ซอฟต์แวร์บล็อกเชน) และส่งข้อมูลธุรกรรม
การแพร่ระหว่างผู้ใช้ (Peer-to-Peer)
เครือข่ายบล็อกเชนทำงานบน โทโพโลยี peer-to-peer (P2P) ไม่มีเซิร์ฟเวอร์กลาง เมื่อโหนดรับธุรกรรมของคุณ มันจะดำเนินการตรวจสอบความถูกต้องขั้นเบื้องต้นและหากถูกต้อง จะส่งต่อไปยังผู้ใช้ที่เชื่อมต่อ ผู้ใช้เหล่านั้นจะตรวจสอบและส่งต่อเพิ่มเติม ภายในไม่กี่วินาที ธุรกรรมของคุณจะแพร่ไปทั่วเครือข่าย — โดยทั่วไปแล้วจะถึงโหนดส่วนใหญ่ภายใน 2 ถึง 15 วินาที
Mempool
หลังจากแพร่ออก ธุรกรรมของคุณจะเข้าสู่ mempool (memory pool) — พื้นที่รอคิวของธุรกรรมที่ยังไม่ได้ยืนยันซึ่งโหนดแต่ละตัวดำเนิน Mempool ไม่ใช่พูลเดียวที่ใช้ร่วมกัน โหนดแต่ละตัวจะดำเนินการเวอร์ชันของตัวเองซึ่งอาจแตกต่างกันเล็กน้อยเนื่องจากความล่าช้าของเครือข่ายและนโยบายของโหนดแต่ละตัว
ธุรกรรมใน mempool จะจัดลำดับไปตามอัตราค่าธรรมเนียม **ส่วนใหญ่ (satoshis ต่อไบต์ใน Bitcoin หรือราคาแก๊สใน Ethereum) ผู้ขุดและผู้ตรวจสอบจะเลือกธุรกรรมค่าธรรมเนียมสูงสุดก่อน เนื่องจากสิ่งนี้จะเพิ่มรายได้ของพวกเขา ในช่วงอุปสงค์เครือข่ายสูง mempool อาจขยายได้อย่างมีนัยสำคัญ และธุรกรรมค่าธรรมเนียมต่ำอาจรอการยืนยันเป็นชั่วโมงหรือแม้แต่วัน
ค่าธรรมเนียมการทำธุรกรรม
ค่าธรรมเนียมการทำธุรกรรมมีสองวัตถุประสงค์:
- สนับสนุนผู้ขุดหรือผู้ตรวจสอบ ให้รวมธุรกรรมของคุณในบล็อก
- ป้องกันสแปม โดยทำให้คุณต้องเสียค่าใช้จ่ายในการท่วมเครือข่ายด้วยธุรกรรมที่ไร้ความหมาย
ใน Bitcoin ค่าธรรมเนียมจะคำนวณตามขนาดของธุรกรรมเป็นไบต์ (ไม่ใช่จำนวนเงินที่ถูกส่ง) ธุรกรรมที่ส่ง 10 BTC อาจมีค่าธรรมเนียมเท่ากับธุรกรรมที่ส่ง 0.001 BTC หากมีขนาดไบต์เท่ากัน
ใน Ethereum ค่าธรรมเนียมจะปฏิบัติตามแบบจำลอง EIP-1559 ด้วย ค่าธรรมเนียมพื้นฐาน (ถูกเผา) และ คำแนะนำลำดับความสำคัญ (จ่ายให้ผู้ตรวจสอบ) ค่าธรรมเนียมพื้นฐานปรับเปลี่ยนแบบไดนามิกตามความแออัดของเครือข่าย
ขั้นตอนที่ 3: การตรวจสอบความถูกต้องของธุรกรรม
ก่อนที่ธุรกรรมสามารถรวมเข้าในบล็อกได้ โหนดต่างๆ จะต้องตรวจสอบความถูกต้องอย่างอิสระตามกฎของโปรโตคอล การตรวจสอบความถูกต้องนี้มีความสำคัญอย่างยิ่งต่อการรักษาความสมบูรณ์ของบล็อกเชน
การตรวจสอบ
โหนดแต่ละตัวจะทำการตรวจสอบหลายครั้งในทุกธุรกรรมที่ได้รับ:
- ความถูกต้องทางวากยสัมพันธ์: ธุรกรรมจัดรูปแบบอย่างถูกต้องตามข้อกำหนดโปรโตคอลหรือไม่
- การตรวจสอบลายเซ็น: ลายเซ็นดิจิทัลตรงกับส่วนกุญแจสาธารณะของผู้ส่งหรือไม่ สิ่งนี้ยืนยันว่าธุรกรรมได้รับการอนุมัติจากผู้ถือกุญแจส่วนตัว
- การตรวจสอบการใช้จ่ายสองครั้ง: UTXO ที่อ้างถึง (Bitcoin) ยังคงไม่ได้ใช้หรือไม่ หรือบัญชี (Ethereum) มียอดคงเหลือเพียงพอหรือไม่
- การตรวจสอบสคริปต์: สคริปต์การล็อคและปลดล็อคถูกดำเนินการอย่างถูกต้องหรือไม่ (Bitcoin ใช้ภาษาสคริปต์ที่เรียกว่า Script เพื่อกำหนดเงื่อนไขการใช้จ่าย)
- ความเพียงพอของค่าธรรมเนียม: ธุรกรรมรวมถึงค่าธรรมเนียมเพียงพอหรือไม่ที่จะตรงตามเกณฑ์ผ่านเครือข่ายขั้นต่ำของโหนด
- ขีดจำกัดขนาด: ธุรกรรมอยู่ในข้อจำกัดขนาดของโปรโตคอลหรือไม่
หากธุรกรรมล้มเหลวในการตรวจสอบใดๆ มันจะถูกปฏิเสธและไม่ส่งต่อไปยังโหนดอื่น การตรวจสอบความถูกต้องแบบกระจายตัวนี้คือสิ่งที่ทำให้บล็อกเชนทนต่อธุรกรรม欺ที่ — โหนดทุกตัวตรวจสอบธุรกรรมทุกตัวอย่างอิสระตามชุดกฎเดียวกัน
ขั้นตอนที่ 4: การสร้างบล็อก
ผู้ขุด (ในระบบ proof-of-work) หรือผู้ตรวจสอบ (ในระบบ proof-of-stake) จะรวบรวมธุรกรรมที่ได้รับการตรวจสอบแล้วจาก mempool และรวบรวมเป็นบล็อกคำสั่งซื้อตัวเลือก
โครงสร้างบล็อก
บล็อกทั่วไปประกอบด้วย:
ส่วนหัวบล็อก:
- เวอร์ชัน: เวอร์ชันโปรโตคอล
- แฮชบล็อกก่อนหน้า: แฮช SHA-256 ของส่วนหัวบล็อกก่อนหน้า นี่คือสิ่งที่สร้าง "โซ่" ในบล็อกเชน
- รูตของต้นไม้ Merkle: แฮชเดียวที่สรุปธุรกรรมทั้งหมดในบล็อก
- เวลา: เวลาโดยประมาณที่สร้างบล็อก
- เป้าหมายความยาก (PoW): ขีดจำกัดที่แฮชบล็อกต้องต่ำกว่าเพื่อให้บล็อกถูกต้อง
- Nonce (PoW): ตัวนับที่ผู้ขุดเพิ่มขึ้นขณะค้นหาแฮชที่ถูกต้อง
เนื้อหาบล็อก:
- นับธุรกรรม: จำนวนธุรกรรมที่รวมเข้าไป
- รายการธุรกรรม: ข้อมูลธุรกรรมจริง
- ธุรกรรม Coinbase: ธุรกรรมแรกพิเศษที่สร้างเหรียญใหม่เป็นรางวัลบล็อก และจัดเก็บค่าธรรมเนียมธุรกรรมทั้งหมด นี่คือธุรกรรมเดียวในบล็อกที่ไม่มีอินพุต — มันสร้างสกุลเงินใหม่จากไม่มี ตามตารางการออกโปรแกรมของโปรโตคอล
การเลือกธุรกรรม
ผู้ขุดโดยทั่วไปเลือกธุรกรรมเพื่อเพิ่มรายได้สูงสุด โดยให้ความสำคัญกับธุรกรรมที่มีอัตราค่าธรรมเนียมสูงสุด อย่างไรก็ตาม พวกเขาต้องเคารพ ขีดจำกัดขนาดบล็อก (น้ำหนักบล็อก 4 MB ใน Bitcoin) หรือ ขีดจำกัดแก๊สบล็อก (ประมาณ 30 ล้านแก๊สใน Ethereum) สิ่งนี้สร้างตลาดธรรมชาติสำหรับพื้นที่บล็อก — ในช่วงอุปสงค์สูง ผู้ใช้มีการแข่งขันโดยเสนอค่าธรรมเนียมที่สูงขึ้น
ผู้ขุดบางคนอาจมีนโยบายเพิ่มเติม เช่น การรวมธุรกรรมประเภทใดประเภทหนึ่งโดยไม่คำนึงถึงค่าธรรมเนียม หรือไม่รวมธุรกรรมที่โต้ตอบกับที่อยู่ที่อยู่ภายใต้การคว่ำบาตร
การสร้างต้นไม้ Merkle
ต้นไม้ Merkle สร้างขึ้นโดยการแฮชคู่ของแฮชธุรกรรมซ้ำๆ:
- แต่ละธุรกรรมจะแฮชอย่างแยกตัว
- แฮชที่อยู่ติดกันจะถูกจับคู่และแฮชเข้าด้วยกัน
- กระบวนการนี้จะทำซ้ำตามต้นไม้จนกว่าจะเหลือแฮชเดียว: รูต Merkle
รูต Merkle จัดให้มีสรุปกระชับของธุรกรรมทั้งหมด หากมีการเปลี่ยนแปลงธุรกรรมใดๆ รูต Merkle จะเปลี่ยนไป ซึ่งเปิดเผยการปลอมแปลงทันที โครงสร้างนี้ยังช่วยให้ Simplified Payment Verification (SPV) ซึ่งไคลเอนต์ที่มีน้ำหนักเบาสามารถตรวจสอบการรวมธุรกรรมโดยไม่ต้องดาวน์โหลดบล็อกเต็มรูปแบบ
ขั้นตอนที่ 5: ฉันทามติและการผลิตบล็อก
บล็อคลำดับซื้อตัวเลือกต้องผ่าน กลไกฉันทามติ ของเครือข่ายเพื่อได้รับการยอมรับจากเครือข่าย นี่คือจุดที่บล็อกเชนที่แตกต่างกันแตกต่างกันอย่างมีนัยสำคัญ
Proof of Work (Bitcoin)
ใน proof-of-work ผู้ขุดจะแข่งขันเพื่อค้นหา nonce ที่เมื่อรวมกับข้อมูลส่วนหัวบล็อกและแฮช จะสร้างแฮชต่ำกว่า เป้าหมายความยาก ของเครือข่าย นี่คือการค้นหาแบบ brute-force โดยพื้นฐาน:
- ผู้ขุดสร้างส่วนหัวบล็อกด้วยฟิลด์ที่จำเป็นทั้งหมด
- ผู้ขุดแฮชส่วนหัวโดยใช้ SHA-256 (ใช้สองครั้งใน Bitcoin)
- หากแฮชที่เป็นผลลัพธ์อยู่ต่ำกว่าเป้าหมายความยาก บล็อกจะถูกต้อง
- หากไม่ใช่ ผู้ขุดจะเพิ่มขึ้น nonce และลองอีกครั้ง
- กระบวนการนี้ซ้ำหลายพันล้านครั้งต่อวินาทีในผู้ขุดทั้งหมด
เป้าหมายความยากปรับเปลี่ยนทุกๆ 2,016 บล็อก (ประมาณสองสัปดาห์) เพื่อรักษาเวลาบล็อกเฉลี่ย 10 นาที โดยไม่คำนึงถึงพลังการขุดรวมที่อยู่บนเครือข่าย
เมื่อผู้ขุดค้นหาแฮชที่ถูกต้อง พวกเขาได้แก้ "ปริศนา" และสามารถแพร่ออกบล็อกของพวกเขาไปยังเครือข่าย ผู้ขุดที่ค้นหาวิธีแก้ปัญหาที่ถูกต้องเป็นคนแรกจะชนะ รางวัลบล็อก (ปัจจุบัน 3.125 BTC หลังจากการลดลงครึ่งหนึ่งในเมษายน 2024) บวกกับค่าธรรมเนียมธุรกรรมทั้งหมดในบล็อก
Proof of Stake (Ethereum)
Ethereum ใช้ proof of stake โดยตัวตรวจสอบจะถูกเลือกแบบสุ่มเพื่อเสนอบล็อกตามจำนวน ETH ที่พวกเขาทำการ staking (ล็อคเป็นหลักประกัน) กระบวนการนั้นแตกต่างกันโดยพื้นฐาน:
- ตัวตรวจสอบจะถูกเลือกแบบสุ่มเพื่อเสนอบล็อกสำหรับแต่ละช่วง 12 วินาที
- ผู้เสนอสร้างบล็อกและแพร่ออกไป
- คณะตัวตรวจสอบ ยืนยัน (โหวต) ว่าบล็อกถูกต้อง
- เมื่อรวบรวมการยืนยันเพียงพอ บล็อกจะถูกพิจารณาว่ายุติธรรมและในที่สุดก็ขุดขลัง
Proof of stake ขจัดการคำนวณแฮชที่ใช้พลังงานมากมายของ proof of work ขณะเดียวกันยังคงรักษาความปลอดภัยผ่านแรงจูงใจทางเศรษฐกิจ — ตัวตรวจสอบมีความเสี่ยงในการสูญเสีย ETH ที่ได้รับการ stake (slashing) หากพวกเขากระทำการอย่างเจsvng
สำหรับการเปรียบเทียบที่ลึกซึ้งกว่า โปรดดู คู่มือกลไกฉันทามติของเรา