สรุป:
Delphi Digital ปล่อยรายงานล่าสุดเรื่อง “The Dawn of Bitcoin Programmability: Paving the Way for Rollups” ซึ่งกล่าวถึงแนวคิดหลักที่เกี่ยวข้องกับ Bitcoin Rollups รวมถึงชุด BitVM, ข้อจำกัดของ OP_CAT และ Covenant, ชั้น DA ในระบบ Bitcoin สะพาน และสี่โซลูชันชั้นที่ 2 ที่ใช้ BitVM: Bitlayer, Citrea, Yona, และ Bob ในขณะที่รายงานเป็นภาพรวมเกี่ยวกับเทคโนโลยีชั้นที่ 2 ของ Bitcoin แต่ยังคงเป็นส่วนใหญ่และขาดคำอธิบายอย่างละเอียด ซึ่งทำให้เข้าใจยากไปบ้าง Geek Web3 ขยายของรายงาน Delphi เพื่อช่วยให้มีคนมากขึ้นที่เข้าใจเทคโนโลยีอย่าง BitVM อย่างเป็นระบบ
เราจะร่วมงานกับทีมวิจัย Bitlayer และชุมชนชาวจีน BitVM เพื่อเปิดตัวชุดรายการที่เรียกว่า 'การเข้าสู่ BTC' ซีรีส์นี้จะเน้นไปที่หัวข้อสำคัญ เช่น BitVM, OP_CAT, และสะพานเชื่อมต่อ Bitcoin cross-chain ซึ่งมีเป้าหมายที่จะเปิดเผยเทคโนโลยี Bitcoin Layer 2 ให้เข้าใจได้ง่ายขึ้นสำหรับผู้ชมอย่างกว้างขวางและเป็นทางเท่าที่จะเป็นที่สนใจมากขึ้น
เมื่อไม่กี่เดือนก่อน โรบิน ไลนัส ผู้นำของ ZeroSync ได้เผยแพร่บทความที่เรียกว่า 'BitVM: Compute Anything on Bitcoin' ซึ่งเป็นการเสนอแนะทางการที่ BitVM และเปิดตัวเทคโนโลยี Bitcoin Layer 2 อย่างเป็นทางการ ซึ่งถือเป็นหนึ่งในนวัตกรรมที่น่าทึ่งที่สุดในนิเวศ Bitcoin ซึ่งกระตุ้นความสนใจและกิจกรรมที่สำคัญในพื้นที่ Bitcoin Layer 2 มันได้ดึงดูดโครงการที่มีชื่อเสียงอย่าง Bitlayer, Citrea, และ BOB มาสู่ตลาด ตลอดจนมีนักวิจัยมากขึ้นมาร่วมด้วยกันเพื่อปรับปรุง BitVM ซึ่งผลิตให้เกิดเวอร์ชันที่เป็นการวนไปเช่น BitVM1, BitVM2, BitVMX, และ BitSNARK ภาพรวมทั่วไปดังต่อไปนี้:
ในปัจจุบันการสร้างระบบนิเวศของนักพัฒนาที่เกี่ยวข้องกับ BitVM มีความชัดเจนมากขึ้นและการปรับปรุงเครื่องมือต่อพ่วงซ้ํา ๆ ก็สามารถมองเห็นได้ด้วยตาเปล่า เมื่อเทียบกับปีที่แล้วระบบนิเวศ BitVM ในปัจจุบันได้กลายเป็น "มองเห็นได้ชัดเจน" จาก "ปราสาทในอากาศ" เริ่มต้นซึ่งดึงดูดผู้คนมากขึ้นเรื่อย ๆ นักพัฒนาและ VCs จํานวนมากขึ้นกําลังวิ่งเข้าสู่ระบบนิเวศของ Bitcoin
สำหรับคนส่วนใหญ่การเข้าใจ BitVM และคำศัพท์ทางเทคนิคที่เกี่ยวข้องกับ Bitcoin Layer 2 ไม่ง่าย มันต้องการความเข้าใจระบบเป็นระบบของความรู้มูลฐานโดยเฉพาะสคริปต์ Bitcoin และ Taproot ทราบ Existing online resources มักจะยาวเกินไปและมีรายละเอียดที่ไม่เกี่ยวข้องหรือสรุปเร็วเกินไปไม่ชัดเจน เรามีเป้าหมายที่จะแก้ปัญหาเหล่านี้โดยใช้ภาษาที่ชัดเจนและกระชับเพื่อช่วยให้คนเข้าใจแนวคิดพื้นฐานของ Bitcoin Layer 2 และสร้างความเข้าใจอย่างเป็นระบบของระบบ BitVM
MATT และข้อผูกพัน: แนวคิดหลักของ BitVM
แนวคิดหลักของ BitVM หมุนรอบ MATT ซึ่งหมายถึง Merkleize All The Things แนวทางนี้ใช้โครงสร้างการจัดเก็บข้อมูลชั้นลำดับเพื่อแสดงการปฏิบัติของโปรแกรมที่ซับซ้อน มีจุดมุ่งหมายที่จะเป็นไปได้ในการยืนยันการทุจริตด้วยตนเองบนเครือข่าย Bitcoin MATT สามารถจับรายละเอียดของโปรแกรมที่ซับซ้อนและกิจกรรมประมวลผลข้อมูลของมันได้ แต่มันไม่เผยแพร่ข้อมูลที่เป็นระบบอย่างเป็นทางการโดยตรงบนบล็อกเชน Bitcoin เนื่องจากขนาดของมันใหญ่มาก แทนที่นั้น แนวทาง MATT จัดเก็บข้อมูลนี้ในต้นไม้ Merkle นอกเส้นและเผยแพร่เฉพาะราก Merkle (สรุปสุดยอดของต้นไม้ Merkle) บนบล็อกเชน ต้นไม้ Merkle ประกอบไปด้วยส่วนประกอบสำคัญสามอย่าง
(แผนภาพแบบง่ายของต้นไม้เมอร์เกิล รากเมอร์เกิลของมันถูกคำนวณจากชิ้นส่วนข้อมูล 8 ชิ้นที่ด้านล่างของภาพผ่านการแฮชหลายชั้น)
ในโครงการ MATT มีเพียง Merkle Root ขนาดเล็กมากที่จัดเก็บบนเชนเท่านั้น และชุดข้อมูลทั้งหมดที่อยู่ใน Merkle Tree จะถูกเก็บนอกเชน นี้ใช้ไอเดียที่เรียกว่า "การสร้างความมั่นใจ" นี่คือคำอธิบายเกี่ยวกับ "การสร้างความมั่นใจ"
คำสัญญาคล้ายกับคำโดยสรุป เราสามารถเข้าใจว่าเป็น “ลายนิ้วมือ” ที่ได้หลังจากบีบอัดข้อมูลจำนวนมาก โดยทั่วไปคนที่ออก “คำสัญญา” บนเชื่อมโยงจะประกาศว่าข้อมูลบางอย่างที่เก็บไว้นอกเชื่อมโยงเป็นข้อมูลที่ถูกต้อง ข้อมูลนอกเชื่อมโยงเหล่านี้ควรสอดคล้องกับคำโดยสรุปและคำโดยสรุปนี้คือ “คำสัญญา”
เมื่อถึงจุดหนึ่ง ค่าแฮชของข้อมูลสามารถใช้เป็น "การสัญญา" กับข้อมูลเอง โครงการสัญญาอื่น ๆ รวมถึงการสัญญา KZG หรือ Merkle Tree ในโปรโตคอลพิสูจน์การปกป้องข้อมูลที่ผิดปกติของ Layer2 ผู้จัดจำหน่ายข้อมูลจะเผยแพร่ชุดข้อมูลทั้งหมดออฟไลน์และการสัญญาที่จะเผยแพร่ชุดข้อมูลบนเชื่อมโยงถ้ามีใครค้นพบข้อมูลที่ไม่ถูกต้องในชุดข้อมูลออฟไลน์ การสัญญาข้อมูลบนเชื่อมโยงจะถูกท้าทาย
ผ่านความมุ่งมั่นชั้นที่สองสามารถบีบอัดข้อมูลจำนวนมากและเผยแพร่ "การสัญญา" เท่านั้นบนโซ่บิทคอยน์ แน่นอนว่า จำเป็นต้องให้แน่ใจว่าชุดข้อมูลทั้งหมดที่เผยแพร่ออกจากโซ่สายสายสามารถสังเกตเห็นได้โดยโลกนอก
ในปัจจุบัน โครงการ BitVM ชั้นนำ เช่น BitVM0, BitVM1, BitVM2, และ BitVMX ทั้งหมดปฏิบัติตามโครงสร้างนามธรรมที่คล้ายกัน
การเข้าใจ Bitcoin อาจท้าทายกว่า Ethereum เนื่องจาก แม้กระทั่งธุรกรรมที่ง่ายที่สุดก็มีหลายแนวคิดสำคัญ ซึ่งรวมถึง UTXO (Unspent Transaction Output) สคริปต์ล็อค (ที่เรียกอีกชื่อว่า ScriptPubKey) และสคริปต์ปลดล็อค (ที่เรียกอีกชื่อว่า ScriptSig) มาช่วยในการแยกแยะแนวคิดพื้นฐานเหล่านี้ก่อน
(ตัวอย่างของรหัสสคริปต์ Bitcoin ประกอบด้วย opcodes ระดับต่ำเมื่อเปรียบเทียบกับภาษาระดับสูง) วิธีการแสดงสินทรัพย์ของ Ethereum เหมือนกับระบบเช่น Alipay หรือ WeChat ที่ทุกครั้งที่มีธุรกรรมจะปรับปรุงยอดคงเหลือของบัญชีต่าง ๆ โดยเพียงแค่ปรับปรุงเท่านั้น มุมมองที่เชื่อมโยงกับบัญชีนี้จะมองเหมือนกับตัวเลขที่เกี่ยวข้องกับบัญชี ในทวีปตรงข้าม การแสดงสินทรัพย์ของ Bitcoin เป็นเหมือนกับการจัดการกับทองคำ ที่ทุกชิ้นของทองคำ (UTXO) ถูกแท็กกับเจ้าของ การทำธุรกรรมของ Bitcoin ก็ในส่วนใหญ่ทำลาย UTXO เก่าและสร้างใหม่ โดยมีการเปลี่ยนแปลงเจ้าของในขั้นตอนนี้ Bitcoin UTXO ประกอบด้วยสองส่วนสำคัญ:
(สคริปต์ปลดล็อคต้องตรงกับสคริปต์ล็อค) ในการทําธุรกรรม Bitcoin แต่ละธุรกรรมประกอบด้วยอินพุตและเอาต์พุตหลายรายการ อินพุตแต่ละรายการจะระบุ UTXO เพื่อปลดล็อกและให้สคริปต์การปลดล็อกเพื่อทําเช่นนั้น ซึ่งจะปลดล็อกและทําลาย UTXO ผลลัพธ์ของธุรกรรมจะแสดง UTXOs ที่สร้างขึ้นใหม่และแสดงสคริปต์การล็อกที่เกี่ยวข้องต่อสาธารณะ ตัวอย่างเช่นในการป้อนข้อมูลของธุรกรรมคุณพิสูจน์ว่าคุณเป็นแซมโดยการปลดล็อก UTXOs หลายตัวที่คนอื่นส่งให้คุณทําลายพวกเขาในกระบวนการ จากนั้นคุณสร้าง UTXOs ใหม่หลายตัวและระบุว่า xxx สามารถปลดล็อกได้ในอนาคต
โดยเฉพาะในข้อมูลอินพุตของธุรกรรมคุณต้องประกาศว่า UTXOs ใดที่คุณต้องการปลดล็อกและระบุ "ตําแหน่งที่เก็บข้อมูล" ของข้อมูล UTXO เหล่านี้ สิ่งสําคัญคือต้องเข้าใจว่า Bitcoin และ Ethereum จัดการกับสิ่งนี้แตกต่างกัน Ethereum ใช้บัญชีสัญญาและบัญชีที่เป็นเจ้าของภายนอก (EOAs) เพื่อจัดเก็บข้อมูล โดยบันทึกยอดคงเหลือของสินทรัพย์เป็นตัวเลขภายใต้บัญชีเหล่านี้ ข้อมูลทั้งหมดนี้จะถูกเก็บไว้ในฐานข้อมูลที่เรียกว่า "สถานะโลก" เมื่อธุรกรรมเกิดขึ้น "สถานะโลก" จะอัปเดตยอดคงเหลือของบัญชีเฉพาะโดยตรงทําให้ง่ายต่อการค้นหาข้อมูล ในทางตรงกันข้าม Bitcoin ไม่มี "สถานะโลก" แต่ข้อมูลสินทรัพย์จะถูกกระจายไปทั่วบล็อกก่อนหน้าเป็น UTXOs ที่ไม่ได้ใช้ซึ่งจัดเก็บแยกกันในเอาต์พุตของแต่ละธุรกรรม
หากคุณต้องการปลดล็อค UTXO ที่แน่นอน คุณต้องระบุว่าข้อมูล UTXO นั้นอยู่ใน Output ของธุรกรรมใดในอดีตและแสดง ID ของธุรกรรม (ซึ่งเป็น hash ของมัน) ให้โหนด Bitcoin มองหาในประวัติ หากคุณต้องการสอบถามยอดเงิน Bitcoin ของที่อยู่ที่แน่นอน คุณต้องทำการหา UTXO ที่ถูกปลดล็อคที่เกี่ยวข้องกับที่อยู่ xx โดยการท่องทวนบล็อกทั้งหมดตั้งแต่เริ่มต้น
เมื่อคุณใช้บัญชีบิตคอยน์โดยปกติ คุณสามารถตรวจสอบยอดเงินบิตคอยน์ที่เป็นเจ้าของโดยที่อยู่บางประการได้เร็ว ส่วนใหญ่นี้เป็นเพราะบริการของกระเป๋าเงินเองทำดัชนีทุกที่อยู่โดยการสแกนบล็อก ทำให้เราสามารถสอบถามได้อย่างรวดเร็ว
(เมื่อคุณสร้างธุรกรรมเพื่อโอน UTXO ของคุณไปยังบุคคลอื่นคุณต้องระบุตําแหน่งของ UTXO นั้นในประวัติการทําธุรกรรมของ Bitcoin โดยอ้างอิงแฮช / ID ธุรกรรมที่เป็นของ) ที่น่าสนใจคือผลการทําธุรกรรม Bitcoin จะถูกคํานวณนอกห่วงโซ่ เมื่อผู้ใช้สร้างธุรกรรมบนอุปกรณ์ท้องถิ่นพวกเขาจะต้องสร้างอินพุตและเอาต์พุตทั้งหมดล่วงหน้าเพื่อคํานวณผลลัพธ์ของธุรกรรมอย่างมีประสิทธิภาพ จากนั้นธุรกรรมจะถูกออกอากาศไปยังเครือข่าย Bitcoin ตรวจสอบโดยโหนดและเพิ่มลงในบล็อกเชน โมเดล "off-chain computation — on-chain verification" นี้แตกต่างจาก Ethereum อย่างสิ้นเชิง บน Ethereum คุณจะต้องระบุพารามิเตอร์อินพุตธุรกรรมและผลลัพธ์การทําธุรกรรมจะถูกคํานวณและส่งออกโดยโหนด Ethereum นอกจากนี้ยังสามารถปรับแต่งสคริปต์ล็อคของ UTXO ได้ คุณสามารถตั้งค่า UTXO เป็น "ปลดล็อคได้โดยเจ้าของที่อยู่ Bitcoin เฉพาะ" โดยกําหนดให้เจ้าของต้องให้ลายเซ็นดิจิทัลและคีย์สาธารณะ (P2PKH) ในธุรกรรม Pay-to-Script-Hash (P2SH) คุณสามารถเพิ่ม Script Hash ลงในสคริปต์การล็อกของ UTXO ได้ ทุกคนที่สามารถส่งสคริปต์ที่สอดคล้องกับแฮชนี้และตรงตามเงื่อนไขที่ระบุไว้ในสคริปต์สามารถปลดล็อก UTXO ได้ สคริปต์ Taproot ซึ่ง BitVM ใช้คุณสมบัติที่คล้ายกับใน P2SH
เพื่อให้เข้าใจกลไกการทริกเกอร์ของสคริปต์ Bitcoin เราจะเริ่มต้นด้วยตัวอย่าง P2PKH ซึ่งย่อมาจาก "Pay to Public Key Hash" ในการตั้งค่านี้สคริปต์การล็อกของ UTXO มีแฮชคีย์สาธารณะและเพื่อปลดล็อกจะต้องระบุคีย์สาธารณะที่เกี่ยวข้อง กลไกนี้สอดคล้องกับกระบวนการมาตรฐานของธุรกรรม Bitcoin ในบริบทนี้ โหนด Bitcoin ต้องตรวจสอบว่าคีย์สาธารณะในสคริปต์การปลดล็อกตรงกับแฮชคีย์สาธารณะที่ระบุในสคริปต์การล็อก โดยพื้นฐานแล้วจะตรวจสอบว่า "คีย์" ที่ผู้ใช้ให้มานั้นเหมาะกับ "ล็อค" ที่กําหนดโดย UTXO ในรายละเอียดเพิ่มเติมภายใต้รูปแบบ P2PKH เมื่อโหนด Bitcoin ได้รับธุรกรรมจะรวมสคริปต์การปลดล็อกของผู้ใช้ (ScriptSig) เข้ากับสคริปต์การล็อค (ScriptPubKey) ของ UTXO ที่จะปลดล็อคแล้วรันสคริปต์ที่รวมกันนี้ในสภาพแวดล้อมการดําเนินการสคริปต์ Bitcoin ภาพด้านล่างแสดงให้เห็นถึงผลลัพธ์ที่เชื่อมต่อกันก่อนดําเนินการ:
ผู้อ่านอาจไม่คุ้นเคยกับสภาพแวดล้อมการดําเนินการสคริปต์ BTC ดังนั้นเรามาแนะนําสั้น ๆ สคริปต์ Bitcoin ประกอบด้วยสององค์ประกอบ: ข้อมูลและ opcodes องค์ประกอบเหล่านี้จะถูกผลักลงบนสแต็คตามลําดับจากซ้ายไปขวาและดําเนินการตามตรรกะที่ระบุเพื่อสร้างผลลัพธ์สุดท้าย (สําหรับคําอธิบายว่าสแต็คคืออะไรผู้อ่านสามารถปรึกษา ChatGPT) ในตัวอย่างด้านบนด้านซ้ายจะแสดงสคริปต์ปลดล็อค (ScriptSig) ที่จัดทําโดยใครบางคนซึ่งรวมถึงลายเซ็นดิจิทัลและคีย์สาธารณะ ด้านขวาแสดงสคริปต์ล็อค (ScriptPubKey) ซึ่งมีชุดของ opcodes และชุดข้อมูลโดยผู้สร้าง UTXO เมื่อสร้าง UTXO นั้น (การทําความเข้าใจแนวคิดทั่วไปก็เพียงพอแล้วเราไม่จําเป็นต้องเจาะลึกความหมายของ opcode แต่ละตัว) opcodes ในสคริปต์การล็อกด้านขวา เช่น DUP, HASH160 และ EQUALVERIFY จะแฮชคีย์สาธารณะจากสคริปต์การปลดล็อกด้านซ้าย และเปรียบเทียบกับแฮชคีย์สาธารณะที่กําหนดไว้ล่วงหน้าในสคริปต์การล็อก หากตรงกันจะเป็นการยืนยันว่าคีย์สาธารณะในสคริปต์การปลดล็อกตรงกับแฮชคีย์สาธารณะในสคริปต์การล็อกโดยผ่านการตรวจสอบครั้งแรก อย่างไรก็ตาม มีปัญหา: เนื้อหาของสคริปต์การล็อกจะปรากฏต่อสาธารณะบนบล็อกเชน ซึ่งหมายความว่าทุกคนสามารถดูแฮชคีย์สาธารณะได้ ดังนั้นทุกคนสามารถส่งคีย์สาธารณะที่เกี่ยวข้องและแอบอ้างว่าเป็นผู้มีอํานาจ เพื่อแก้ไขปัญหานี้หลังจากตรวจสอบคีย์สาธารณะและแฮชคีย์สาธารณะแล้วระบบจะต้องตรวจสอบด้วยว่าผู้ริเริ่มธุรกรรมควบคุมคีย์สาธารณะจริงหรือไม่ซึ่งเกี่ยวข้องกับการตรวจสอบลายเซ็นดิจิทัล CHECKSIG opcode ในสคริปต์การล็อกจะจัดการการตรวจสอบนี้ โดยสรุปภายใต้โครงการ P2PKH สคริปต์การปลดล็อกของผู้ริเริ่มธุรกรรมจะต้องมีคีย์สาธารณะและลายเซ็นดิจิทัล คีย์สาธารณะต้องตรงกับแฮชคีย์สาธารณะที่ระบุในสคริปต์การล็อก และลายเซ็นดิจิทัลต้องถูกต้อง ต้องปฏิบัติตามเงื่อนไขเหล่านี้เพื่อปลดล็อก UTXO ได้สําเร็จ
(นี่คือภาพประกอบแบบไดนามิก: แผนภาพของสคริปต์การปลดล็อคบิตคอยน์ภายใต้โครงสร้าง P2PKH
แหล่งที่มา: https://learnmeabitcoin.com/technical/script)
สำคัญที่จะระบุว่าเครือข่ายบิตคอยน์รองรับประเภทธุรกรรมต่าง ๆ ที่เกินจากการจ่ายถึงคีย์สาธารณะ/คีย์แฮช เช่น P2SH (จ่ายถึงสคริปต์แฮช) ประเภทของธุรกรรมที่เฉพาะเจาะจงขึ้นอยู่กับว่าสคริปต์ล็อกถูกกำหนดอย่างไรเมื่อ UTXO ถูกสร้าง
สิ่งสําคัญคือต้องเข้าใจว่าภายใต้รูปแบบ P2SH สคริปต์การล็อกสามารถตั้งค่าแฮชสคริปต์ล่วงหน้าได้และสคริปต์การปลดล็อกจะต้องให้เนื้อหาสคริปต์ที่สมบูรณ์ซึ่งสอดคล้องกับแฮชสคริปต์นี้ โหนด Bitcoin สามารถรันสคริปต์นี้ได้ และหากมีตรรกะการตรวจสอบหลายลายเซ็น ก็จะเปิดใช้งานกระเป๋าเงินหลายลายเซ็นบนบล็อกเชน Bitcoin ได้อย่างมีประสิทธิภาพ ในรูปแบบ P2SH ผู้สร้าง UTXO จําเป็นต้องแจ้งให้บุคคลที่จะปลดล็อก UTXO ในอนาคตเกี่ยวกับเนื้อหาสคริปต์ที่สอดคล้องกับ Script Hash ตราบใดที่ทั้งสองฝ่ายตระหนักถึงเนื้อหาสคริปต์เราสามารถใช้ตรรกะทางธุรกิจที่ซับซ้อนยิ่งกว่าเพียงแค่หลายลายเซ็น นอกจากนี้ยังเป็นที่น่าสังเกตว่าบล็อกเชน Bitcoin ไม่ได้บันทึกโดยตรงว่า UTXOs ใดเชื่อมโยงกับที่อยู่ใด แต่จะบันทึกว่า UTXOs ใดที่สามารถปลดล็อกได้โดยแฮชคีย์สาธารณะหรือแฮชสคริปต์ อย่างไรก็ตามเราสามารถรับที่อยู่ที่เกี่ยวข้องได้อย่างรวดเร็ว (สตริงอักขระที่ดูเหมือนไม่ชัดเจนที่แสดงในอินเทอร์เฟซกระเป๋าเงิน) จากแฮชคีย์สาธารณะหรือแฮชสคริปต์
เหตุผลที่คุณสามารถดูจํานวน Bitcoin ที่เกี่ยวข้องกับที่อยู่เฉพาะบนเครื่องมือสํารวจบล็อกและอินเทอร์เฟซกระเป๋าเงินคือบริการเหล่านี้แยกวิเคราะห์และตีความข้อมูลบล็อกเชนสําหรับคุณ พวกเขาสแกนบล็อกทั้งหมดและตามแฮชคีย์สาธารณะหรือแฮชสคริปต์ที่ประกาศในสคริปต์การล็อกให้คํานวณ "ที่อยู่" ที่เกี่ยวข้อง สิ่งนี้ช่วยให้พวกเขาแสดงจํานวน Bitcoin ที่เกี่ยวข้องกับที่อยู่นั้น
การเข้าใจ P2SH ทำให้เราเข้าใกล้ Taproot ซึ่งเป็นส่วนสำคัญสำหรับ BitVM อย่างมีความสำคัญ อย่างไรก็ตามก่อนที่จะลงไปใน Taproot จำเป็นต้องเข้าใจแนวคิดของ Witness และ Segregated Witness (SegWit) การทบทวนสคริปต์การปลดล็อคและล็อค รวมถึงกระบวนการปลดล็อคของ UTXO ย้ำให้เห็นปัญหา: ลายเซ็นดิจิทัลสำหรับธุรกรรมถูกรวมอยู่ในสคริปต์การปลดล็อค เมื่อสร้างลายเซ็นเหล่านี้ สคริปต์การปลดล็อคเองไม่สามารถเป็นส่วนหนึ่งของข้อมูลที่ถูกลงลายเซ็น (เนื่องจากพารามิเตอร์ที่ใช้สำหรับสร้างลายเซ็นไม่สามารถรวมลายเซ็นเองได้)
ดังนั้นลายเซ็นดิจิทัลจึงสามารถครอบคลุมเฉพาะบางส่วนของข้อมูลธุรกรรมนอกสคริปต์การปลดล็อกซึ่งหมายความว่าไม่สามารถปกป้องข้อมูลธุรกรรมทั้งหมดได้อย่างสมบูรณ์ สิ่งนี้นําไปสู่ช่องโหว่ที่ตัวกลางสามารถแก้ไขสคริปต์การปลดล็อกได้เล็กน้อยโดยไม่ส่งผลกระทบต่อการตรวจสอบลายเซ็น ตัวอย่างเช่น โหนด Bitcoin หรือพูลการขุดสามารถแทรกข้อมูลเพิ่มเติมลงในสคริปต์การปลดล็อกได้ แม้ว่าการเปลี่ยนแปลงนี้จะไม่ส่งผลกระทบต่อการตรวจสอบและผลลัพธ์ของธุรกรรม แต่ก็เปลี่ยนแปลงข้อมูลธุรกรรมเล็กน้อย ซึ่งจะเปลี่ยนแปลงแฮช/รหัสธุรกรรมที่คํานวณได้ ปัญหานี้เรียกว่าความอ่อนตัวของธุรกรรม
ปัญหาของสิ่งนี้คือถ้าคุณวางแผนที่จะเริ่มต้นดำเนินการธุรกรรมต่อเนื่องหลายรายการที่ขึ้นอยู่กัน (เช่น ธุรกรรม 3 อ้างอิงออกมาจากธุรกรรม 2 และธุรกรรม 2 อ้างอิงออกมาจากธุรกรรม 1) ธุรกรรมที่เกิดขึ้นต่อมาจะต้องอ้างอิงไปยังแฮชของธุรกรรมก่อนหน้าทุกครั้ง อุปสรรคที่เป็นตัวกลาง เช่น พูลขุดหรือโหนดบิตคอยน์ อาจทำการปรับปรุงสคริปต์การปลดล็อคเล็กน้อย ซึ่งทำให้แฮชของธุรกรรมต่างจากที่คุณคาดหวังเมื่อมันอยู่บนบล็อกเชน
ความไม่สอดคล้องนี้อาจทำให้ลำดับของธุรกรรมที่มีความสัมพันธ์กันล้มเหลวได้ ปัญหานี้มีความสำคัญโดยเฉพาะในบริบทของสะพาน DLC และ BitVM2 ที่มีการสร้างกลุ่มของธุรกรรมที่เกี่ยวข้องต่อเนื่องกันอย่างต่อเนื่อง ซึ่งทำให้สถานการณ์เช่นนี้เป็นเรื่องที่พบได้บ่อย
ในคำจำกัดความง่าย ปัญหาความสามารถในการเปลี่ยนแปลงธุรกรรมเกิดขึ้นเนื่องจากการคำนวณ ID/hash ของธุรกรรมรวมถึงข้อมูลจากสคริปต์การปลดล็อค ผู้กลาง เช่น โหนด Bitcoin สามารถทำการปรับปรุงเล็กน้อยในสคริปต์การปลดล็อค ซึ่งทำให้ ID ของธุรกรรมไม่ตรงกับความคาดหวังของผู้ใช้ ปัญหานี้มาจาก ข้อจำกัดในการออกแบบ Bitcoin ตั้งแต่แรก การอัพเกรด Segregated Witness (SegWit) แสดงให้เห็นว่าปัญหานี้ โดยการแยก ID ของธุรกรรมจากสคริปต์การปลดล็อค ด้วย SegWit การคำนวณ hash ของธุรกรรมไม่รวมข้อมูลสคริปต์การปลดล็อค สคริปต์การล็อค UTXO ภายใต้ SegWit เริ่มต้นด้วยคำสั่ง "OP_0" เป็นเครื่องหมาย และสคริปต์การปลดล็อคที่เกี่ยวข้องถูกเปลี่ยนชื่อจาก SigScript เป็น Witness
ด้วยการปฏิบัติตามกฎ Segregated Witness (SegWit) ปัญหาความอ่อนตัวของธุรกรรมจะได้รับการแก้ไขอย่างมีประสิทธิภาพขจัดความกังวลเกี่ยวกับข้อมูลธุรกรรมที่ถูกดัดแปลงโดยโหนด Bitcoin ฟังก์ชันการทํางานของ P2WSH (Pay to Witness Script Hash) นั้นเหมือนกับ P2SH (Pay to Script Hash) คุณสามารถตั้งค่าแฮชสคริปต์ล่วงหน้าในสคริปต์การล็อก UTXO และบุคคลที่ส่งสคริปต์การปลดล็อกจะให้เนื้อหาสคริปต์ที่เกี่ยวข้องแก่เชนสําหรับการดําเนินการ อย่างไรก็ตามหากเนื้อหาสคริปต์ที่คุณต้องการมีขนาดใหญ่มากและมีโค้ดจํานวนมากวิธีการทั่วไปอาจไม่อนุญาตให้คุณส่งสคริปต์ทั้งหมดไปยังบล็อกเชน Bitcoin (เนื่องจากการ จํากัด ขนาดบล็อก) ในกรณีเช่นนี้ Taproot เข้ามามีบทบาท Taproot ช่วยให้สามารถบีบอัดเนื้อหาสคริปต์แบบ on-chain ทําให้สามารถจัดการสคริปต์ขนาดใหญ่ได้ BitVM ใช้ประโยชน์จาก Taproot เพื่อสร้างโซลูชันที่ซับซ้อนมากขึ้น ในบทความถัดไปของซีรีส์ "Approaching BTC" เราจะให้คําอธิบายโดยละเอียดเกี่ยวกับ Taproot ลายเซ็นล่วงหน้าและเทคโนโลยีขั้นสูงอื่น ๆ ที่เกี่ยวข้องกับ BitVM คอยติดตาม!
Пригласить больше голосов
สรุป:
Delphi Digital ปล่อยรายงานล่าสุดเรื่อง “The Dawn of Bitcoin Programmability: Paving the Way for Rollups” ซึ่งกล่าวถึงแนวคิดหลักที่เกี่ยวข้องกับ Bitcoin Rollups รวมถึงชุด BitVM, ข้อจำกัดของ OP_CAT และ Covenant, ชั้น DA ในระบบ Bitcoin สะพาน และสี่โซลูชันชั้นที่ 2 ที่ใช้ BitVM: Bitlayer, Citrea, Yona, และ Bob ในขณะที่รายงานเป็นภาพรวมเกี่ยวกับเทคโนโลยีชั้นที่ 2 ของ Bitcoin แต่ยังคงเป็นส่วนใหญ่และขาดคำอธิบายอย่างละเอียด ซึ่งทำให้เข้าใจยากไปบ้าง Geek Web3 ขยายของรายงาน Delphi เพื่อช่วยให้มีคนมากขึ้นที่เข้าใจเทคโนโลยีอย่าง BitVM อย่างเป็นระบบ
เราจะร่วมงานกับทีมวิจัย Bitlayer และชุมชนชาวจีน BitVM เพื่อเปิดตัวชุดรายการที่เรียกว่า 'การเข้าสู่ BTC' ซีรีส์นี้จะเน้นไปที่หัวข้อสำคัญ เช่น BitVM, OP_CAT, และสะพานเชื่อมต่อ Bitcoin cross-chain ซึ่งมีเป้าหมายที่จะเปิดเผยเทคโนโลยี Bitcoin Layer 2 ให้เข้าใจได้ง่ายขึ้นสำหรับผู้ชมอย่างกว้างขวางและเป็นทางเท่าที่จะเป็นที่สนใจมากขึ้น
เมื่อไม่กี่เดือนก่อน โรบิน ไลนัส ผู้นำของ ZeroSync ได้เผยแพร่บทความที่เรียกว่า 'BitVM: Compute Anything on Bitcoin' ซึ่งเป็นการเสนอแนะทางการที่ BitVM และเปิดตัวเทคโนโลยี Bitcoin Layer 2 อย่างเป็นทางการ ซึ่งถือเป็นหนึ่งในนวัตกรรมที่น่าทึ่งที่สุดในนิเวศ Bitcoin ซึ่งกระตุ้นความสนใจและกิจกรรมที่สำคัญในพื้นที่ Bitcoin Layer 2 มันได้ดึงดูดโครงการที่มีชื่อเสียงอย่าง Bitlayer, Citrea, และ BOB มาสู่ตลาด ตลอดจนมีนักวิจัยมากขึ้นมาร่วมด้วยกันเพื่อปรับปรุง BitVM ซึ่งผลิตให้เกิดเวอร์ชันที่เป็นการวนไปเช่น BitVM1, BitVM2, BitVMX, และ BitSNARK ภาพรวมทั่วไปดังต่อไปนี้:
ในปัจจุบันการสร้างระบบนิเวศของนักพัฒนาที่เกี่ยวข้องกับ BitVM มีความชัดเจนมากขึ้นและการปรับปรุงเครื่องมือต่อพ่วงซ้ํา ๆ ก็สามารถมองเห็นได้ด้วยตาเปล่า เมื่อเทียบกับปีที่แล้วระบบนิเวศ BitVM ในปัจจุบันได้กลายเป็น "มองเห็นได้ชัดเจน" จาก "ปราสาทในอากาศ" เริ่มต้นซึ่งดึงดูดผู้คนมากขึ้นเรื่อย ๆ นักพัฒนาและ VCs จํานวนมากขึ้นกําลังวิ่งเข้าสู่ระบบนิเวศของ Bitcoin
สำหรับคนส่วนใหญ่การเข้าใจ BitVM และคำศัพท์ทางเทคนิคที่เกี่ยวข้องกับ Bitcoin Layer 2 ไม่ง่าย มันต้องการความเข้าใจระบบเป็นระบบของความรู้มูลฐานโดยเฉพาะสคริปต์ Bitcoin และ Taproot ทราบ Existing online resources มักจะยาวเกินไปและมีรายละเอียดที่ไม่เกี่ยวข้องหรือสรุปเร็วเกินไปไม่ชัดเจน เรามีเป้าหมายที่จะแก้ปัญหาเหล่านี้โดยใช้ภาษาที่ชัดเจนและกระชับเพื่อช่วยให้คนเข้าใจแนวคิดพื้นฐานของ Bitcoin Layer 2 และสร้างความเข้าใจอย่างเป็นระบบของระบบ BitVM
MATT และข้อผูกพัน: แนวคิดหลักของ BitVM
แนวคิดหลักของ BitVM หมุนรอบ MATT ซึ่งหมายถึง Merkleize All The Things แนวทางนี้ใช้โครงสร้างการจัดเก็บข้อมูลชั้นลำดับเพื่อแสดงการปฏิบัติของโปรแกรมที่ซับซ้อน มีจุดมุ่งหมายที่จะเป็นไปได้ในการยืนยันการทุจริตด้วยตนเองบนเครือข่าย Bitcoin MATT สามารถจับรายละเอียดของโปรแกรมที่ซับซ้อนและกิจกรรมประมวลผลข้อมูลของมันได้ แต่มันไม่เผยแพร่ข้อมูลที่เป็นระบบอย่างเป็นทางการโดยตรงบนบล็อกเชน Bitcoin เนื่องจากขนาดของมันใหญ่มาก แทนที่นั้น แนวทาง MATT จัดเก็บข้อมูลนี้ในต้นไม้ Merkle นอกเส้นและเผยแพร่เฉพาะราก Merkle (สรุปสุดยอดของต้นไม้ Merkle) บนบล็อกเชน ต้นไม้ Merkle ประกอบไปด้วยส่วนประกอบสำคัญสามอย่าง
(แผนภาพแบบง่ายของต้นไม้เมอร์เกิล รากเมอร์เกิลของมันถูกคำนวณจากชิ้นส่วนข้อมูล 8 ชิ้นที่ด้านล่างของภาพผ่านการแฮชหลายชั้น)
ในโครงการ MATT มีเพียง Merkle Root ขนาดเล็กมากที่จัดเก็บบนเชนเท่านั้น และชุดข้อมูลทั้งหมดที่อยู่ใน Merkle Tree จะถูกเก็บนอกเชน นี้ใช้ไอเดียที่เรียกว่า "การสร้างความมั่นใจ" นี่คือคำอธิบายเกี่ยวกับ "การสร้างความมั่นใจ"
คำสัญญาคล้ายกับคำโดยสรุป เราสามารถเข้าใจว่าเป็น “ลายนิ้วมือ” ที่ได้หลังจากบีบอัดข้อมูลจำนวนมาก โดยทั่วไปคนที่ออก “คำสัญญา” บนเชื่อมโยงจะประกาศว่าข้อมูลบางอย่างที่เก็บไว้นอกเชื่อมโยงเป็นข้อมูลที่ถูกต้อง ข้อมูลนอกเชื่อมโยงเหล่านี้ควรสอดคล้องกับคำโดยสรุปและคำโดยสรุปนี้คือ “คำสัญญา”
เมื่อถึงจุดหนึ่ง ค่าแฮชของข้อมูลสามารถใช้เป็น "การสัญญา" กับข้อมูลเอง โครงการสัญญาอื่น ๆ รวมถึงการสัญญา KZG หรือ Merkle Tree ในโปรโตคอลพิสูจน์การปกป้องข้อมูลที่ผิดปกติของ Layer2 ผู้จัดจำหน่ายข้อมูลจะเผยแพร่ชุดข้อมูลทั้งหมดออฟไลน์และการสัญญาที่จะเผยแพร่ชุดข้อมูลบนเชื่อมโยงถ้ามีใครค้นพบข้อมูลที่ไม่ถูกต้องในชุดข้อมูลออฟไลน์ การสัญญาข้อมูลบนเชื่อมโยงจะถูกท้าทาย
ผ่านความมุ่งมั่นชั้นที่สองสามารถบีบอัดข้อมูลจำนวนมากและเผยแพร่ "การสัญญา" เท่านั้นบนโซ่บิทคอยน์ แน่นอนว่า จำเป็นต้องให้แน่ใจว่าชุดข้อมูลทั้งหมดที่เผยแพร่ออกจากโซ่สายสายสามารถสังเกตเห็นได้โดยโลกนอก
ในปัจจุบัน โครงการ BitVM ชั้นนำ เช่น BitVM0, BitVM1, BitVM2, และ BitVMX ทั้งหมดปฏิบัติตามโครงสร้างนามธรรมที่คล้ายกัน
การเข้าใจ Bitcoin อาจท้าทายกว่า Ethereum เนื่องจาก แม้กระทั่งธุรกรรมที่ง่ายที่สุดก็มีหลายแนวคิดสำคัญ ซึ่งรวมถึง UTXO (Unspent Transaction Output) สคริปต์ล็อค (ที่เรียกอีกชื่อว่า ScriptPubKey) และสคริปต์ปลดล็อค (ที่เรียกอีกชื่อว่า ScriptSig) มาช่วยในการแยกแยะแนวคิดพื้นฐานเหล่านี้ก่อน
(ตัวอย่างของรหัสสคริปต์ Bitcoin ประกอบด้วย opcodes ระดับต่ำเมื่อเปรียบเทียบกับภาษาระดับสูง) วิธีการแสดงสินทรัพย์ของ Ethereum เหมือนกับระบบเช่น Alipay หรือ WeChat ที่ทุกครั้งที่มีธุรกรรมจะปรับปรุงยอดคงเหลือของบัญชีต่าง ๆ โดยเพียงแค่ปรับปรุงเท่านั้น มุมมองที่เชื่อมโยงกับบัญชีนี้จะมองเหมือนกับตัวเลขที่เกี่ยวข้องกับบัญชี ในทวีปตรงข้าม การแสดงสินทรัพย์ของ Bitcoin เป็นเหมือนกับการจัดการกับทองคำ ที่ทุกชิ้นของทองคำ (UTXO) ถูกแท็กกับเจ้าของ การทำธุรกรรมของ Bitcoin ก็ในส่วนใหญ่ทำลาย UTXO เก่าและสร้างใหม่ โดยมีการเปลี่ยนแปลงเจ้าของในขั้นตอนนี้ Bitcoin UTXO ประกอบด้วยสองส่วนสำคัญ:
(สคริปต์ปลดล็อคต้องตรงกับสคริปต์ล็อค) ในการทําธุรกรรม Bitcoin แต่ละธุรกรรมประกอบด้วยอินพุตและเอาต์พุตหลายรายการ อินพุตแต่ละรายการจะระบุ UTXO เพื่อปลดล็อกและให้สคริปต์การปลดล็อกเพื่อทําเช่นนั้น ซึ่งจะปลดล็อกและทําลาย UTXO ผลลัพธ์ของธุรกรรมจะแสดง UTXOs ที่สร้างขึ้นใหม่และแสดงสคริปต์การล็อกที่เกี่ยวข้องต่อสาธารณะ ตัวอย่างเช่นในการป้อนข้อมูลของธุรกรรมคุณพิสูจน์ว่าคุณเป็นแซมโดยการปลดล็อก UTXOs หลายตัวที่คนอื่นส่งให้คุณทําลายพวกเขาในกระบวนการ จากนั้นคุณสร้าง UTXOs ใหม่หลายตัวและระบุว่า xxx สามารถปลดล็อกได้ในอนาคต
โดยเฉพาะในข้อมูลอินพุตของธุรกรรมคุณต้องประกาศว่า UTXOs ใดที่คุณต้องการปลดล็อกและระบุ "ตําแหน่งที่เก็บข้อมูล" ของข้อมูล UTXO เหล่านี้ สิ่งสําคัญคือต้องเข้าใจว่า Bitcoin และ Ethereum จัดการกับสิ่งนี้แตกต่างกัน Ethereum ใช้บัญชีสัญญาและบัญชีที่เป็นเจ้าของภายนอก (EOAs) เพื่อจัดเก็บข้อมูล โดยบันทึกยอดคงเหลือของสินทรัพย์เป็นตัวเลขภายใต้บัญชีเหล่านี้ ข้อมูลทั้งหมดนี้จะถูกเก็บไว้ในฐานข้อมูลที่เรียกว่า "สถานะโลก" เมื่อธุรกรรมเกิดขึ้น "สถานะโลก" จะอัปเดตยอดคงเหลือของบัญชีเฉพาะโดยตรงทําให้ง่ายต่อการค้นหาข้อมูล ในทางตรงกันข้าม Bitcoin ไม่มี "สถานะโลก" แต่ข้อมูลสินทรัพย์จะถูกกระจายไปทั่วบล็อกก่อนหน้าเป็น UTXOs ที่ไม่ได้ใช้ซึ่งจัดเก็บแยกกันในเอาต์พุตของแต่ละธุรกรรม
หากคุณต้องการปลดล็อค UTXO ที่แน่นอน คุณต้องระบุว่าข้อมูล UTXO นั้นอยู่ใน Output ของธุรกรรมใดในอดีตและแสดง ID ของธุรกรรม (ซึ่งเป็น hash ของมัน) ให้โหนด Bitcoin มองหาในประวัติ หากคุณต้องการสอบถามยอดเงิน Bitcoin ของที่อยู่ที่แน่นอน คุณต้องทำการหา UTXO ที่ถูกปลดล็อคที่เกี่ยวข้องกับที่อยู่ xx โดยการท่องทวนบล็อกทั้งหมดตั้งแต่เริ่มต้น
เมื่อคุณใช้บัญชีบิตคอยน์โดยปกติ คุณสามารถตรวจสอบยอดเงินบิตคอยน์ที่เป็นเจ้าของโดยที่อยู่บางประการได้เร็ว ส่วนใหญ่นี้เป็นเพราะบริการของกระเป๋าเงินเองทำดัชนีทุกที่อยู่โดยการสแกนบล็อก ทำให้เราสามารถสอบถามได้อย่างรวดเร็ว
(เมื่อคุณสร้างธุรกรรมเพื่อโอน UTXO ของคุณไปยังบุคคลอื่นคุณต้องระบุตําแหน่งของ UTXO นั้นในประวัติการทําธุรกรรมของ Bitcoin โดยอ้างอิงแฮช / ID ธุรกรรมที่เป็นของ) ที่น่าสนใจคือผลการทําธุรกรรม Bitcoin จะถูกคํานวณนอกห่วงโซ่ เมื่อผู้ใช้สร้างธุรกรรมบนอุปกรณ์ท้องถิ่นพวกเขาจะต้องสร้างอินพุตและเอาต์พุตทั้งหมดล่วงหน้าเพื่อคํานวณผลลัพธ์ของธุรกรรมอย่างมีประสิทธิภาพ จากนั้นธุรกรรมจะถูกออกอากาศไปยังเครือข่าย Bitcoin ตรวจสอบโดยโหนดและเพิ่มลงในบล็อกเชน โมเดล "off-chain computation — on-chain verification" นี้แตกต่างจาก Ethereum อย่างสิ้นเชิง บน Ethereum คุณจะต้องระบุพารามิเตอร์อินพุตธุรกรรมและผลลัพธ์การทําธุรกรรมจะถูกคํานวณและส่งออกโดยโหนด Ethereum นอกจากนี้ยังสามารถปรับแต่งสคริปต์ล็อคของ UTXO ได้ คุณสามารถตั้งค่า UTXO เป็น "ปลดล็อคได้โดยเจ้าของที่อยู่ Bitcoin เฉพาะ" โดยกําหนดให้เจ้าของต้องให้ลายเซ็นดิจิทัลและคีย์สาธารณะ (P2PKH) ในธุรกรรม Pay-to-Script-Hash (P2SH) คุณสามารถเพิ่ม Script Hash ลงในสคริปต์การล็อกของ UTXO ได้ ทุกคนที่สามารถส่งสคริปต์ที่สอดคล้องกับแฮชนี้และตรงตามเงื่อนไขที่ระบุไว้ในสคริปต์สามารถปลดล็อก UTXO ได้ สคริปต์ Taproot ซึ่ง BitVM ใช้คุณสมบัติที่คล้ายกับใน P2SH
เพื่อให้เข้าใจกลไกการทริกเกอร์ของสคริปต์ Bitcoin เราจะเริ่มต้นด้วยตัวอย่าง P2PKH ซึ่งย่อมาจาก "Pay to Public Key Hash" ในการตั้งค่านี้สคริปต์การล็อกของ UTXO มีแฮชคีย์สาธารณะและเพื่อปลดล็อกจะต้องระบุคีย์สาธารณะที่เกี่ยวข้อง กลไกนี้สอดคล้องกับกระบวนการมาตรฐานของธุรกรรม Bitcoin ในบริบทนี้ โหนด Bitcoin ต้องตรวจสอบว่าคีย์สาธารณะในสคริปต์การปลดล็อกตรงกับแฮชคีย์สาธารณะที่ระบุในสคริปต์การล็อก โดยพื้นฐานแล้วจะตรวจสอบว่า "คีย์" ที่ผู้ใช้ให้มานั้นเหมาะกับ "ล็อค" ที่กําหนดโดย UTXO ในรายละเอียดเพิ่มเติมภายใต้รูปแบบ P2PKH เมื่อโหนด Bitcoin ได้รับธุรกรรมจะรวมสคริปต์การปลดล็อกของผู้ใช้ (ScriptSig) เข้ากับสคริปต์การล็อค (ScriptPubKey) ของ UTXO ที่จะปลดล็อคแล้วรันสคริปต์ที่รวมกันนี้ในสภาพแวดล้อมการดําเนินการสคริปต์ Bitcoin ภาพด้านล่างแสดงให้เห็นถึงผลลัพธ์ที่เชื่อมต่อกันก่อนดําเนินการ:
ผู้อ่านอาจไม่คุ้นเคยกับสภาพแวดล้อมการดําเนินการสคริปต์ BTC ดังนั้นเรามาแนะนําสั้น ๆ สคริปต์ Bitcoin ประกอบด้วยสององค์ประกอบ: ข้อมูลและ opcodes องค์ประกอบเหล่านี้จะถูกผลักลงบนสแต็คตามลําดับจากซ้ายไปขวาและดําเนินการตามตรรกะที่ระบุเพื่อสร้างผลลัพธ์สุดท้าย (สําหรับคําอธิบายว่าสแต็คคืออะไรผู้อ่านสามารถปรึกษา ChatGPT) ในตัวอย่างด้านบนด้านซ้ายจะแสดงสคริปต์ปลดล็อค (ScriptSig) ที่จัดทําโดยใครบางคนซึ่งรวมถึงลายเซ็นดิจิทัลและคีย์สาธารณะ ด้านขวาแสดงสคริปต์ล็อค (ScriptPubKey) ซึ่งมีชุดของ opcodes และชุดข้อมูลโดยผู้สร้าง UTXO เมื่อสร้าง UTXO นั้น (การทําความเข้าใจแนวคิดทั่วไปก็เพียงพอแล้วเราไม่จําเป็นต้องเจาะลึกความหมายของ opcode แต่ละตัว) opcodes ในสคริปต์การล็อกด้านขวา เช่น DUP, HASH160 และ EQUALVERIFY จะแฮชคีย์สาธารณะจากสคริปต์การปลดล็อกด้านซ้าย และเปรียบเทียบกับแฮชคีย์สาธารณะที่กําหนดไว้ล่วงหน้าในสคริปต์การล็อก หากตรงกันจะเป็นการยืนยันว่าคีย์สาธารณะในสคริปต์การปลดล็อกตรงกับแฮชคีย์สาธารณะในสคริปต์การล็อกโดยผ่านการตรวจสอบครั้งแรก อย่างไรก็ตาม มีปัญหา: เนื้อหาของสคริปต์การล็อกจะปรากฏต่อสาธารณะบนบล็อกเชน ซึ่งหมายความว่าทุกคนสามารถดูแฮชคีย์สาธารณะได้ ดังนั้นทุกคนสามารถส่งคีย์สาธารณะที่เกี่ยวข้องและแอบอ้างว่าเป็นผู้มีอํานาจ เพื่อแก้ไขปัญหานี้หลังจากตรวจสอบคีย์สาธารณะและแฮชคีย์สาธารณะแล้วระบบจะต้องตรวจสอบด้วยว่าผู้ริเริ่มธุรกรรมควบคุมคีย์สาธารณะจริงหรือไม่ซึ่งเกี่ยวข้องกับการตรวจสอบลายเซ็นดิจิทัล CHECKSIG opcode ในสคริปต์การล็อกจะจัดการการตรวจสอบนี้ โดยสรุปภายใต้โครงการ P2PKH สคริปต์การปลดล็อกของผู้ริเริ่มธุรกรรมจะต้องมีคีย์สาธารณะและลายเซ็นดิจิทัล คีย์สาธารณะต้องตรงกับแฮชคีย์สาธารณะที่ระบุในสคริปต์การล็อก และลายเซ็นดิจิทัลต้องถูกต้อง ต้องปฏิบัติตามเงื่อนไขเหล่านี้เพื่อปลดล็อก UTXO ได้สําเร็จ
(นี่คือภาพประกอบแบบไดนามิก: แผนภาพของสคริปต์การปลดล็อคบิตคอยน์ภายใต้โครงสร้าง P2PKH
แหล่งที่มา: https://learnmeabitcoin.com/technical/script)
สำคัญที่จะระบุว่าเครือข่ายบิตคอยน์รองรับประเภทธุรกรรมต่าง ๆ ที่เกินจากการจ่ายถึงคีย์สาธารณะ/คีย์แฮช เช่น P2SH (จ่ายถึงสคริปต์แฮช) ประเภทของธุรกรรมที่เฉพาะเจาะจงขึ้นอยู่กับว่าสคริปต์ล็อกถูกกำหนดอย่างไรเมื่อ UTXO ถูกสร้าง
สิ่งสําคัญคือต้องเข้าใจว่าภายใต้รูปแบบ P2SH สคริปต์การล็อกสามารถตั้งค่าแฮชสคริปต์ล่วงหน้าได้และสคริปต์การปลดล็อกจะต้องให้เนื้อหาสคริปต์ที่สมบูรณ์ซึ่งสอดคล้องกับแฮชสคริปต์นี้ โหนด Bitcoin สามารถรันสคริปต์นี้ได้ และหากมีตรรกะการตรวจสอบหลายลายเซ็น ก็จะเปิดใช้งานกระเป๋าเงินหลายลายเซ็นบนบล็อกเชน Bitcoin ได้อย่างมีประสิทธิภาพ ในรูปแบบ P2SH ผู้สร้าง UTXO จําเป็นต้องแจ้งให้บุคคลที่จะปลดล็อก UTXO ในอนาคตเกี่ยวกับเนื้อหาสคริปต์ที่สอดคล้องกับ Script Hash ตราบใดที่ทั้งสองฝ่ายตระหนักถึงเนื้อหาสคริปต์เราสามารถใช้ตรรกะทางธุรกิจที่ซับซ้อนยิ่งกว่าเพียงแค่หลายลายเซ็น นอกจากนี้ยังเป็นที่น่าสังเกตว่าบล็อกเชน Bitcoin ไม่ได้บันทึกโดยตรงว่า UTXOs ใดเชื่อมโยงกับที่อยู่ใด แต่จะบันทึกว่า UTXOs ใดที่สามารถปลดล็อกได้โดยแฮชคีย์สาธารณะหรือแฮชสคริปต์ อย่างไรก็ตามเราสามารถรับที่อยู่ที่เกี่ยวข้องได้อย่างรวดเร็ว (สตริงอักขระที่ดูเหมือนไม่ชัดเจนที่แสดงในอินเทอร์เฟซกระเป๋าเงิน) จากแฮชคีย์สาธารณะหรือแฮชสคริปต์
เหตุผลที่คุณสามารถดูจํานวน Bitcoin ที่เกี่ยวข้องกับที่อยู่เฉพาะบนเครื่องมือสํารวจบล็อกและอินเทอร์เฟซกระเป๋าเงินคือบริการเหล่านี้แยกวิเคราะห์และตีความข้อมูลบล็อกเชนสําหรับคุณ พวกเขาสแกนบล็อกทั้งหมดและตามแฮชคีย์สาธารณะหรือแฮชสคริปต์ที่ประกาศในสคริปต์การล็อกให้คํานวณ "ที่อยู่" ที่เกี่ยวข้อง สิ่งนี้ช่วยให้พวกเขาแสดงจํานวน Bitcoin ที่เกี่ยวข้องกับที่อยู่นั้น
การเข้าใจ P2SH ทำให้เราเข้าใกล้ Taproot ซึ่งเป็นส่วนสำคัญสำหรับ BitVM อย่างมีความสำคัญ อย่างไรก็ตามก่อนที่จะลงไปใน Taproot จำเป็นต้องเข้าใจแนวคิดของ Witness และ Segregated Witness (SegWit) การทบทวนสคริปต์การปลดล็อคและล็อค รวมถึงกระบวนการปลดล็อคของ UTXO ย้ำให้เห็นปัญหา: ลายเซ็นดิจิทัลสำหรับธุรกรรมถูกรวมอยู่ในสคริปต์การปลดล็อค เมื่อสร้างลายเซ็นเหล่านี้ สคริปต์การปลดล็อคเองไม่สามารถเป็นส่วนหนึ่งของข้อมูลที่ถูกลงลายเซ็น (เนื่องจากพารามิเตอร์ที่ใช้สำหรับสร้างลายเซ็นไม่สามารถรวมลายเซ็นเองได้)
ดังนั้นลายเซ็นดิจิทัลจึงสามารถครอบคลุมเฉพาะบางส่วนของข้อมูลธุรกรรมนอกสคริปต์การปลดล็อกซึ่งหมายความว่าไม่สามารถปกป้องข้อมูลธุรกรรมทั้งหมดได้อย่างสมบูรณ์ สิ่งนี้นําไปสู่ช่องโหว่ที่ตัวกลางสามารถแก้ไขสคริปต์การปลดล็อกได้เล็กน้อยโดยไม่ส่งผลกระทบต่อการตรวจสอบลายเซ็น ตัวอย่างเช่น โหนด Bitcoin หรือพูลการขุดสามารถแทรกข้อมูลเพิ่มเติมลงในสคริปต์การปลดล็อกได้ แม้ว่าการเปลี่ยนแปลงนี้จะไม่ส่งผลกระทบต่อการตรวจสอบและผลลัพธ์ของธุรกรรม แต่ก็เปลี่ยนแปลงข้อมูลธุรกรรมเล็กน้อย ซึ่งจะเปลี่ยนแปลงแฮช/รหัสธุรกรรมที่คํานวณได้ ปัญหานี้เรียกว่าความอ่อนตัวของธุรกรรม
ปัญหาของสิ่งนี้คือถ้าคุณวางแผนที่จะเริ่มต้นดำเนินการธุรกรรมต่อเนื่องหลายรายการที่ขึ้นอยู่กัน (เช่น ธุรกรรม 3 อ้างอิงออกมาจากธุรกรรม 2 และธุรกรรม 2 อ้างอิงออกมาจากธุรกรรม 1) ธุรกรรมที่เกิดขึ้นต่อมาจะต้องอ้างอิงไปยังแฮชของธุรกรรมก่อนหน้าทุกครั้ง อุปสรรคที่เป็นตัวกลาง เช่น พูลขุดหรือโหนดบิตคอยน์ อาจทำการปรับปรุงสคริปต์การปลดล็อคเล็กน้อย ซึ่งทำให้แฮชของธุรกรรมต่างจากที่คุณคาดหวังเมื่อมันอยู่บนบล็อกเชน
ความไม่สอดคล้องนี้อาจทำให้ลำดับของธุรกรรมที่มีความสัมพันธ์กันล้มเหลวได้ ปัญหานี้มีความสำคัญโดยเฉพาะในบริบทของสะพาน DLC และ BitVM2 ที่มีการสร้างกลุ่มของธุรกรรมที่เกี่ยวข้องต่อเนื่องกันอย่างต่อเนื่อง ซึ่งทำให้สถานการณ์เช่นนี้เป็นเรื่องที่พบได้บ่อย
ในคำจำกัดความง่าย ปัญหาความสามารถในการเปลี่ยนแปลงธุรกรรมเกิดขึ้นเนื่องจากการคำนวณ ID/hash ของธุรกรรมรวมถึงข้อมูลจากสคริปต์การปลดล็อค ผู้กลาง เช่น โหนด Bitcoin สามารถทำการปรับปรุงเล็กน้อยในสคริปต์การปลดล็อค ซึ่งทำให้ ID ของธุรกรรมไม่ตรงกับความคาดหวังของผู้ใช้ ปัญหานี้มาจาก ข้อจำกัดในการออกแบบ Bitcoin ตั้งแต่แรก การอัพเกรด Segregated Witness (SegWit) แสดงให้เห็นว่าปัญหานี้ โดยการแยก ID ของธุรกรรมจากสคริปต์การปลดล็อค ด้วย SegWit การคำนวณ hash ของธุรกรรมไม่รวมข้อมูลสคริปต์การปลดล็อค สคริปต์การล็อค UTXO ภายใต้ SegWit เริ่มต้นด้วยคำสั่ง "OP_0" เป็นเครื่องหมาย และสคริปต์การปลดล็อคที่เกี่ยวข้องถูกเปลี่ยนชื่อจาก SigScript เป็น Witness
ด้วยการปฏิบัติตามกฎ Segregated Witness (SegWit) ปัญหาความอ่อนตัวของธุรกรรมจะได้รับการแก้ไขอย่างมีประสิทธิภาพขจัดความกังวลเกี่ยวกับข้อมูลธุรกรรมที่ถูกดัดแปลงโดยโหนด Bitcoin ฟังก์ชันการทํางานของ P2WSH (Pay to Witness Script Hash) นั้นเหมือนกับ P2SH (Pay to Script Hash) คุณสามารถตั้งค่าแฮชสคริปต์ล่วงหน้าในสคริปต์การล็อก UTXO และบุคคลที่ส่งสคริปต์การปลดล็อกจะให้เนื้อหาสคริปต์ที่เกี่ยวข้องแก่เชนสําหรับการดําเนินการ อย่างไรก็ตามหากเนื้อหาสคริปต์ที่คุณต้องการมีขนาดใหญ่มากและมีโค้ดจํานวนมากวิธีการทั่วไปอาจไม่อนุญาตให้คุณส่งสคริปต์ทั้งหมดไปยังบล็อกเชน Bitcoin (เนื่องจากการ จํากัด ขนาดบล็อก) ในกรณีเช่นนี้ Taproot เข้ามามีบทบาท Taproot ช่วยให้สามารถบีบอัดเนื้อหาสคริปต์แบบ on-chain ทําให้สามารถจัดการสคริปต์ขนาดใหญ่ได้ BitVM ใช้ประโยชน์จาก Taproot เพื่อสร้างโซลูชันที่ซับซ้อนมากขึ้น ในบทความถัดไปของซีรีส์ "Approaching BTC" เราจะให้คําอธิบายโดยละเอียดเกี่ยวกับ Taproot ลายเซ็นล่วงหน้าและเทคโนโลยีขั้นสูงอื่น ๆ ที่เกี่ยวข้องกับ BitVM คอยติดตาม!