
ชื่อระดับแรก
Taproot คืออะไร?
Taproot ได้รับการเสนอครั้งแรกในปี 2018 โดยผู้สนับสนุน Bitcoin Core Gregory Maxwell การดำเนินการนี้อยู่ในระหว่างการพัฒนา หากไม่มี Taproot ธุรกรรมที่ซับซ้อนเหล่านี้ (การล็อกเวลา การเซ็นหลายลายเซ็น) จะต้องใช้ธุรกรรมหลายรายการจึงจะเสร็จสมบูรณ์ ดังนั้นจึงล้มเหลวได้ง่าย
Taproot ปรับปรุงความเป็นส่วนตัวของ Bitcoin โดยอนุญาตให้ทำธุรกรรมที่ซับซ้อน (หลายลายเซ็น, ไทม์ล็อก) ให้ดำเนินการได้ราวกับว่าเป็นการทำธุรกรรม Bitcoin รายการเดียว
การอัปเกรด Taproot รวมถึงการเปลี่ยนแปลงทางเทคนิคที่สำคัญสามประการ (แนวคิด) เพื่อเพิ่มความสามารถในการปรับขนาด ความเป็นส่วนตัว และความยืดหยุ่นของ Bitcoin
- ลายเซ็น Schnorr 
- MAST 
- ลายเซ็น Schnorr 
ชื่อระดับแรก
P2SH(Pay-to-ScriptHash)
ที่อยู่ Bitcoin เป็นชุดตัวอักษรและตัวเลข ผู้ใช้สามารถแบ่งปันกับผู้อื่นเพื่อรับ BTC จากหลัง มีสองมาตรฐานหลักสำหรับการทำธุรกรรม Bitcoin: Pay-to-PubKeyHash (P2PKH) และ Pay-to-ScriptHash (P2SH)
ก่อนที่จะพูดถึงสองแนวคิดของ P2SH (Pay To Script Hash) และ P2PKH (Pay-To-PubKey Hash) เรามาทำความรู้จักกับความรู้พื้นฐานเกี่ยวกับ Bitcoin:
- บนเครือข่าย Bitcoin Bitcoins จะอยู่ในรูปของ UTXO UTXO เป็นตัวย่อของ Unspent Transaction (TX) Output (ผลลัพธ์ของธุรกรรมที่ไม่ได้ใช้งาน) นั่นคือหน่วยของตัวแปรที่เกิดขึ้นหลังจากการดำเนินการของธุรกรรม Bitcoin ตัวอย่างเช่น คุณมี 10 BTC ในกระเป๋าสตางค์ Bitcoin และคุณต้องการโอน 5 BTC ให้เพื่อน Bitcoin blockchain ได้รับการจัดการแตกต่างกัน มันจะใช้จ่ายทั้งหมด 10 BTC (ยอดเต็ม) โอน 5 BTC ไปยังกระเป๋าเงินของเพื่อนคุณ และโอนอีก 5 BTC ที่เหลือ (10 BTC - 5 BTC = 5 BTC) ไปยังกระเป๋าเงินของคุณเอง ตอนนี้คุณและเพื่อนของคุณแต่ละคนมี 5 BTC ที่ไม่ได้ใช้ 
- Bitcoin ใช้สคริปต์ (โค้ดไม่กี่บรรทัด) เพื่อระบุเงื่อนไขสำหรับการใช้จ่าย BTC/UTXO สคริปต์ถูกใช้เป็นกลไกการล็อค 
- BTC ถูกล็อคในสคริปต์ เมื่อสคริปต์ส่งคืนสำเร็จ (เช่น ตรงตามเงื่อนไข) BTC จะถูกปลดล็อก 
- ทุกคนสามารถส่ง BTC ไปยังที่อยู่ Bitcoin ใดก็ได้ เมื่อตรงตามเงื่อนไขที่กำหนดในสคริปต์เท่านั้น BTC ที่ถูกล็อคจะสามารถนำมาใช้ได้ สคริปต์จะกำหนดวิธีที่ผู้รับสามารถใช้ BTC ที่ได้รับ เมื่อเริ่มทำธุรกรรม ผู้ส่งจะทำธุรกรรมที่เรียกว่า"สคริปต์ PubKey (หรือที่เรียกว่าสคริปต์ล็อค)"สคริปต์ ผู้รับ (เมื่อใช้จ่ายในภายหลัง) ต้องสร้าง"สคริปต์ลายเซ็น (หรือที่เรียกว่าสคริปต์ปลดล็อก)"ซึ่งเป็นชุดของพารามิเตอร์ข้อมูลที่ตรงตามสคริปต์ PubKey สคริปต์ลายเซ็นเรียกอีกอย่างว่า "scriptSig" ในรหัส 
- ชื่อระดับแรก 
Pay-to-PubKeyHash (P2PKH)
Pay-to-PubKeyHash เป็นรูปแบบที่อยู่ Bitcoin แบบดั้งเดิม ที่อยู่ของมันเริ่มต้นด้วยหมายเลข 1
เฉพาะเจ้าของที่อยู่ P2PKH เท่านั้นที่สามารถปลดล็อกสคริปต์ PubKey และใช้ BTC ที่ได้รับโดยการระบุแฮชคีย์สาธารณะและลายเซ็นคีย์ส่วนตัว รหัสส่วนตัวใช้เพื่อพิสูจน์ความเป็นเจ้าของแฮชรหัสสาธารณะ
ดังที่เราได้กล่าวไว้ข้างต้น สคริปต์จะกำหนดภายใต้เงื่อนไขว่า BTC ใดสามารถใช้กับที่อยู่ใดที่อยู่หนึ่งได้ เมื่อตรงตามเงื่อนไขที่ระบุและตรวจสอบโดยเครือข่าย BTC ในที่อยู่นั้นจะถูกปลดล็อคสำหรับการใช้จ่าย
กระบวนการนี้ทำงานอย่างไร? —— ผู้รับสร้างสคริปต์ PubKey ก่อนและแบ่งปันกับผู้ส่ง ผู้ส่งเพิ่มสคริปต์ PubKey นี้ในธุรกรรมเมื่อส่ง BTC เมื่อได้รับ BTC หากผู้รับต้องการปลดล็อก BTC UTXO เหล่านี้ พวกเขาจะต้องระบุรหัสแฮชสาธารณะและรหัสส่วนตัว และปฏิบัติตามเงื่อนไขที่ระบุไว้ในสคริปต์ PubKey

ตัวอย่างเช่น เงื่อนไขเหล่านี้อาจเป็น:
- การปลดล็อก BTC ต้องมีลายเซ็นอย่างน้อยสองลายเซ็น 
- ระบุรหัสผ่าน (รหัสผ่าน) เพื่อปลดล็อก 
- ใช้เวลาสักครู่ในการปลดล็อก BTC 
สถานการณ์ข้างต้นสามารถใช้เป็นเงื่อนไขในการปลดล็อค BTC
เมื่อส่ง bitcoins ผู้ส่งจำเป็นต้องรวมไว้ในการทำธุรกรรมสคริปต์ PubKey. ดังนั้นสิ่งนี้จึงเพิ่มปริมาณของการทำธุรกรรมทำให้เกิดค่าธรรมเนียมการทำธุรกรรมที่สูงกว่าการทำธุรกรรมปกติประมาณ 5 เท่า
ชื่อระดับแรก
Pay-to-ScriptHash (P2SH)
Pay To Script Hash (P2SH) สามารถช่วยให้ผู้ส่งหลีกเลี่ยงค่าใช้จ่ายเพิ่มเติมและเปลี่ยนความรับผิดชอบนี้ (ค่าใช้จ่ายเพิ่มเติม) ไปยังผู้รับที่ต้องการใช้เงื่อนไขที่ระบุในสคริปต์การล็อกจริงๆ Pay-to-ScriptHash Bitcoin addresses ขึ้นต้นด้วยเลข 3
ภายใต้มาตรฐานธุรกรรมนี้ ผู้ส่งไม่จำเป็นต้องใส่สคริปต์ PubKey ขนาดยาวลงในธุรกรรมของตน ที่นี่ สคริปต์ล็อกจะถูกแทนที่ด้วยแฮชของสคริปต์แลก ค่าแฮชของสคริปต์การแลกรับรางวัลจะคำนวณโดยสคริปต์การแลกของรางวัล สคริปต์ Redeem คล้ายกับสคริปต์ PubKey และมีเงื่อนไขที่ผู้รับต้องปฏิบัติตามก่อนที่จะใช้ผลลัพธ์ที่ไม่ได้ใช้ ผู้ส่งจำเป็นต้องระบุแฮชของสคริปต์การแลกรางวัลในธุรกรรมเท่านั้น แฮชสคริปต์แลกสามารถแปลเป็นที่อยู่ Bitcoin มาตรฐาน และผู้ส่งสามารถส่ง BTC ไปยังที่อยู่เหล่านี้โดยไม่ต้องดำเนินการพิเศษหรือค่าธรรมเนียมเพิ่มเติม
เมื่อผู้รับต้องการปลดล็อก BTC บนที่อยู่ P2SH นี้ เขาจำเป็นต้องสร้างสคริปต์การไถ่ถอนด้วยค่าแฮชเดียวกันและรวมไว้ในการทำธุรกรรม เป็นผลให้ขนาดของธุรกรรมที่ผู้รับใช้ในการปลดล็อก UTXO เพิ่มขึ้น เช่นเดียวกับค่าใช้จ่ายในการดำเนินธุรกรรม
ตัวอย่างเช่น อลิซต้องการส่ง 10 BTC ให้กับ Bob อลิซต้องรวมแฮชของสคริปต์แลกรับเข้าในการทำธุรกรรม ขั้นแรก คุณบ็อบสร้างสคริปต์การแลกรับข้อเสนอ จากนั้นส่งค่าแฮชของสคริปต์การแลกรับของสมนาคุณให้อลิซ เพื่อให้อลิซสามารถเพิ่มแฮชในธุรกรรมและเริ่มธุรกรรมได้ หาก Bob ต้องการใช้ UTXO นี้ เขาต้องสร้างสคริปต์ปลดล็อกที่มีค่าแฮชเดียวกันและตรงตามเงื่อนไขที่กล่าวถึงในสคริปต์
ข้อความ
ข้อดีของ Pay-to-ScriptHash
- ใช้แฮชแทนสคริปต์ที่มีความยาว 
- ผู้ส่งสามารถใส่แฮชของสคริปต์การแลกรับเป็นจำนวนเท่าใดก็ได้ในการทำธุรกรรมโดยไม่ทราบเงื่อนไขการใช้จ่ายที่ระบุไว้ในสคริปต์ 
- ชื่อระดับแรก 
(……)
MAST (แผนผังไวยากรณ์นามธรรมของ Merkle)
MAST คือMerklized Abstract Syntax Tree (แผนผังไวยากรณ์นามธรรม Merkel)อักษรย่อของ.
ทำไมต้องใช้ MAST? หากคุณต้องการใช้ BTC จากที่อยู่ P2SH คุณต้องสร้างสคริปต์การแลกด้วยแฮชเดียวกันและรวมไว้ในการทำธุรกรรม หากมีเงื่อนไขการใช้จ่ายที่กำหนดไว้ในสคริปต์มากเกินไป ปริมาณธุรกรรมจะมีขนาดใหญ่มาก MAST สามารถแก้ปัญหานี้ได้เป็นอย่างดี
Merkle abstract syntax tree เป็นการรวมกันของ Merkle tree และ abstract syntax tree
เช่นเดียวกับ Pay To Script Hash (P2SH) ที่จ่ายให้กับสคริปต์ที่มีแฮช X MAST จ่ายให้กับ Merkle root ด้วยแฮช X MAST คือการรวมเงื่อนไขแต่ละเงื่อนไขในชุดเงื่อนไขขนาดใหญ่เป็นแฮชทรี (ที่เรียกว่า Merkle tree) และค่ารูทของ Merkle tree เป็นค่าแฮช ซึ่งเงื่อนไขทั้งหมดจะแฮช
Merkle root และ hash tree ถูกสร้างขึ้นอย่างไร?
ขั้นแรกทำการคำนวณแฮชบนสคริปต์ทั้งหมด (เงื่อนไข) จากนั้นรวมค่าแฮชที่คำนวณได้กับค่าแฮชที่อยู่ติดกันสำหรับการคำนวณแฮชเพื่อสร้างค่าแฮชชุดใหม่ ทำซ้ำขั้นตอนการคำนวณแฮชแบบสองต่อสองจนกว่าจะคำนวณค่าแฮชสุดท้าย แฮชนี้คือราก Merkle
สมมติว่ามีเงื่อนไขสี่ชุด ขั้นแรก คำนวณค่าแฮชของเงื่อนไขทั้งสี่กลุ่มแยกกัน จากนั้นจับคู่ค่าแฮชทั้งสี่นี้เป็นคู่เพื่อคำนวณค่าแฮชสองค่า สุดท้ายรวมค่าแฮชทั้งสองนี้เพื่อคำนวณแฮช สร้างค่าแฮชสุดท้าย . แฮชสุดท้ายนี้คือรากของ Merkle

Merkle root นี้สามารถแปลเป็นที่อยู่ Bitcoin ที่ถูกต้องซึ่งสามารถรับการชำระเงินได้ นั่นคือค่าเริ่มต้นที่อยู่ Merklized Bitcoin. ที่อยู่ Merkle Bitcoin มีข้อดีหลายประการ ข้อได้เปรียบหลักคือไม่จำเป็นต้องรู้หน่วยสคริปต์ทั้งหมดเพื่อตรวจสอบว่าสคริปต์อยู่บนแผนผัง Merkle นี้หรือไม่ เทคนิคนี้เรียกว่าหลักฐาน Merkleซึ่งสามารถใช้เพื่อตรวจสอบได้อย่างง่ายดายว่า Bitcoin UTXO มีเงื่อนไขการปลดล็อคบางอย่าง
ลายเซ็น Schnorr
ลายเซ็น Schnorr
ในการเข้ารหัส ลายเซ็น Schnorr เป็นลายเซ็นดิจิทัลที่สร้างขึ้นโดยอัลกอริธึมลายเซ็น Schnorr ที่เสนอโดย Claus Schnorr อัลกอริทึมลายเซ็นของ Schnorr เป็นรูปแบบลายเซ็นดิจิทัลที่ขึ้นชื่อเรื่องความเรียบง่าย ซึ่งปรับกระบวนการตรวจสอบและรับรองความถูกต้องให้เหมาะสมโดยการรวมลายเซ็นหลายรายการไว้ในลายเซ็นเดียว รูปแบบนี้เหมาะสำหรับการทำธุรกรรมหลายลายเซ็น
ในการดำเนินธุรกรรม คุณต้องลงนามธุรกรรมด้วยคีย์ส่วนตัวของคุณ เพื่อพิสูจน์ว่าคุณเป็นเจ้าของ BTC ที่อยู่เบื้องหลังคีย์สาธารณะ อย่างไรก็ตาม ในการทำธุรกรรมหลายลายเซ็น คุณต้องระบุหลายลายเซ็น ลายเซ็นเหล่านี้ใช้พื้นที่เพิ่มเติม
ลายเซ็น Schnorrลายเซ็น Schnorrเกิดขึ้นเพื่อแก้ปัญหานี้
เพื่อทำความเข้าใจลายเซ็นของ Schnorr ลองดูตัวอย่างสองตัวอย่าง:
- (……) 
- อีกกรณีหนึ่งคือธุรกรรมหลายซิก สมมติว่าคุณต้องการ 100 ลายเซ็นและขนาดของแต่ละลายเซ็นคือ 5 ไบต์ แบบแผนลายเซ็น Schnorr สามารถรวม 100 ลายเซ็นเหล่านี้เป็นลายเซ็น Schnorr ที่มีขนาด 64 ไบต์ ประหยัดหน่วยความจำ 436 ไบต์ (5*100-64=436) เพื่อจัดเก็บธุรกรรมเพิ่มเติม (หมายเหตุ: ลายเซ็นโค้งวงรีปัจจุบันสามารถมากกว่า 5 ไบต์) 
ชื่อระดับแรก
Bitcoin Taproot: สรุป
บทความนี้แนะนำ Taproot เป็นหลักในประเด็นต่อไปนี้:
- Taproot เป็นข้อเสนออัปเกรด Bitcoin ที่เสนอในปี 2018 โดย Gregory Maxwell ผู้สนับสนุน Bitcoin Core 
- Taproot ทำให้ธุรกรรมที่ซับซ้อน เช่น ธุรกรรมแบบหลายลายเซ็นและธุรกรรมแบบล็อกเวลาดูเหมือนธุรกรรม Bitcoin ทั่วไป ช่วยเพิ่มความเป็นส่วนตัวของ Bitcoin 
- การอัปเกรด Taproot ส่วนใหญ่ประกอบด้วย 3 แนวคิดทางเทคนิค - ลายเซ็น P2SH, MAST และ Schnorr 
- Bitcoin ใช้สคริปต์เพื่อระบุเงื่อนไขสำหรับการใช้จ่าย BTC/UTXO (ผลลัพธ์ของธุรกรรมที่ไม่ได้ใช้) 
- Pay To Script Hash (P2SH) สามารถช่วยให้ผู้ส่งหลีกเลี่ยงค่าธรรมเนียมการทำธุรกรรมเพิ่มเติม และเปลี่ยนความรับผิดชอบนี้ (ค่าธรรมเนียมการทำธุรกรรมเพิ่มเติม) ไปยังผู้รับที่ต้องการใช้เงื่อนไขที่ระบุไว้ในสคริปต์การล็อกจริงๆ 
- การใช้ MAST สามารถล็อค bitcoins ได้โดยใช้ Merkle Abstract Syntax Tree ต้นไม้ Merkle (ตรงกับรากของ Merkle) กำหนดเงื่อนไขที่ซับซ้อนทั้งหมดที่สามารถปลดล็อก BTC ที่ไม่ได้ใช้ Merklized Abstract Syntax Trees (MAST) ถูกเสนอให้นำมาใช้กับ Bitcoin blockchain เพื่อลดขนาดของธุรกรรม BTC เพื่อให้ผู้รับไม่จำเป็นต้องแนบสคริปต์ที่มีความยาวในการทำธุรกรรม การใช้เฉพาะราก Merkle สามารถตรวจสอบได้ว่าสคริปต์ที่สร้างโดยผู้รับเป็นของชุดเงื่อนไขดั้งเดิม 
- ลิงค์ต้นฉบับ: 
ลิงค์ต้นฉบับ:
https://b10c.me/blog/004-the-incomplete-history-of-bitcoin-development/
ผู้เขียน: 0xB10C


