BTC
ETH
HTX
SOL
BNB
ดูตลาด
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

เรียนรู้เกี่ยวกับประเภทธุรกรรมใหม่บน Ethereum ในบทความเดียว

Katie 辜
Odaily资深作者
บทความนี้มีประมาณ 3369 คำ การอ่านทั้งหมดใช้เวลาประมาณ 5 นาที
ทำให้พฤติกรรมการทำธุรกรรมบางอย่างง่ายขึ้น
สรุปโดย AI
ทำให้พฤติกรรมการทำธุรกรรมบางอย่างง่ายขึ้น

บทความนี้มาจากMycryptoบทความนี้มาจาก

ผู้เขียนต้นฉบับ: Maarten Zuidhoorn เรียบเรียงโดย Katie Ku นักแปล Odaily

  • มีธุรกรรมหลายประเภทบน Ethereum เช่น การส่ง ETH ไปยังที่อยู่ การปรับใช้สัญญา และอื่นๆ ก่อนการอัปเกรดเครือข่ายเบอร์ลิน มีธุรกรรมสี่ประเภทที่แตกต่างกันบน Ethereum:

  • ธุรกรรมปกติกับที่อยู่ที่รับข้อมูล ฟิลด์ข้อมูล ฯลฯ

  • สำหรับธุรกรรมการปรับใช้สัญญาโดยไม่มีที่อยู่ปลายทาง ฟิลด์ข้อมูลจะใช้สำหรับรหัสสัญญา

  • ธุรกรรมด้วยวิธีลายเซ็น v-value แต่ไม่รวม chain ID (pre-EIP-155)

ธุรกรรมที่มีลายเซ็น v-value แต่รวม chain ID

ไคลเอนต์ Ethereum ห้องสมุดและเครื่องมืออื่น ๆ ที่แตกต่างกันวิเคราะห์ธุรกรรมแต่ละรายการและทำความเข้าใจธุรกรรมแต่ละประเภท แม้ว่าธุรกรรมจะมีเพียงสี่ประเภท แต่ก็มีความซับซ้อนและสถานการณ์มากมายที่ต้องจัดการ ช่างเทคนิคควรตรวจสอบฟิลด์ทั้งหมดในธุรกรรมเพื่อดูว่าเป็นธุรกรรมประเภทใด นี่เป็นกุญแจสำคัญสำหรับธุรกรรมประเภทใหม่ เช่น ประเภทธุรกรรมก่อน EIP-2718 เช่น ธุรกรรมเมตาและธุรกรรมหลายซิก

ในบทความนี้ เราจะให้รายละเอียดเกี่ยวกับมาตรฐานบางส่วนที่รวมอยู่ในการอัปเกรดเบอร์ลิน รวมถึงมาตรฐานอื่นๆ ที่อาจมีในอนาคต

ชื่อเรื่องรอง

ซองธุรกรรมมาตรฐาน

RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])

Ethereum มีรูปแบบการทำธุรกรรม ธุรกรรมแต่ละรายการรวมถึง nonce, ราคาก๊าซ, ขีดจำกัดก๊าซ, ที่อยู่ปลายทาง, มูลค่า, ข้อมูล, v, r และ s ฟิลด์เหล่านี้เข้ารหัส RLP ดังนี้:

TransactionType || TransactionPayload

EIP-2718 กำหนดขอบเขตกว้างใหม่สำหรับธุรกรรมประเภท ในมาตรฐานใหม่ ธุรกรรมมีลักษณะดังนี้:

  • โดยที่ฟิลด์ถูกกำหนดเป็น:

  • ประเภทธุรกรรม: ตัวเลขระหว่าง 0 ถึง 0x7f มีทั้งหมด 128 ประเภทธุรกรรมที่เป็นไปได้

เพย์โหลดของธุรกรรม: อาร์เรย์ไบต์ตามอำเภอใจตามที่กำหนดโดยประเภทธุรกรรม

ฟิลด์เหล่านี้เชื่อมต่อกันและรวมกันเพื่อสร้างธุรกรรมประเภทหนึ่ง มาตรฐานไม่ได้อธิบายถึงรูปแบบของเพย์โหลดของธุรกรรม มันสามารถเป็นชุดของไบต์ใดก็ได้ตามอำเภอใจ เข้ารหัสโดยตัวเข้ารหัสที่กำหนดโดยประเภทธุรกรรมใหม่ (เช่น RLP, SSZ เป็นต้น) เลือกการต่อข้อมูลไบต์อย่างง่ายเนื่องจากการอ่านไบต์แรกของอาร์เรย์ไบต์ไม่ต้องการไลบรารีหรือเครื่องมือใดๆ คุณไม่จำเป็นต้องใช้โปรแกรมแยกวิเคราะห์ RLP หรือ SSZ เพื่อตรวจสอบประเภทธุรกรรม

ตัวอย่างที่ดีของความซับซ้อนที่เพิ่มขึ้นคือ EIP-155 ซึ่งแนะนำการป้องกันการตอบกลับโดยใช้รหัสลูกโซ่ในการทำธุรกรรม การเพิ่มฟิลด์ใหม่ให้กับพารามิเตอร์การทำธุรกรรมจะทำลายความเข้ากันได้แบบย้อนหลัง ดังนั้น chain ID จะถูกเข้ารหัสในพารามิเตอร์การกู้คืน (v) ของลายเซ็นการทำธุรกรรม (v) ด้วย EIP-2718 เราสามารถสร้างประเภทธุรกรรมใหม่เพื่อรักษาความเข้ากันได้แบบย้อนหลัง

ชื่อเรื่องรอง

ความเข้ากันได้ย้อนหลังและธุรกรรมดิบ

ธีมใหญ่ของ EIP-2718 คือความเข้ากันได้แบบย้อนกลับ EIP-2718 อยู่ในโหมดความเข้ากันได้แบบย้อนกลับเต็มรูปแบบ ซึ่งหมายความว่าเครื่องมือ ไลบรารี กระเป๋าเงิน (ฮาร์ดแวร์) และธุรกรรมใดๆ ที่มีอยู่สามารถใช้งานได้ แต่จะไม่สามารถใช้ "คุณสมบัติ" ใหม่ที่มีให้โดย EIP-2718 และมาตรฐาน . รูปแบบธุรกรรมเก่า (ปัจจุบันเรียกว่าธุรกรรมดิบ) ยังคงใช้ได้สำหรับธุรกรรมใหม่บนเครือข่าย Ethereum

จำนวนสูงสุดของประเภทธุรกรรมใหม่ 0x7f ถูกเลือกเพื่อรักษาความเข้ากันได้ย้อนหลังกับธุรกรรมเก่าเหล่านี้ ธุรกรรมที่เข้ารหัส RLP มักจะเริ่มต้นด้วยไบต์ที่ l และพารามิเตอร์มากกว่าหรือเท่ากับ 0xc0 ดังนั้นธุรกรรมที่พิมพ์จะไม่ชนกับธุรกรรมเก่า และธุรกรรมที่พิมพ์สามารถแยกความแตกต่างได้เพียงแค่ตรวจสอบไบต์แรกและธุรกรรมเก่า

  • EIP-2718 เองไม่ได้กำหนดประเภทธุรกรรมใด ๆ แต่มีข้อเสนอบางประการสำหรับมาตรฐานใหม่:

  • EIP-1559: การเปลี่ยนแปลงค่าธรรมเนียมตลาดเชน ETH1.0;

  • EIP-2711: การสนับสนุน การหมดอายุ และธุรกรรมแบบกลุ่ม ซึ่งสร้างโดยนักพัฒนา Micah Zoltu ซึ่งเป็นเหตุผลว่าทำไม EIP-2718 จึงถูกสร้างขึ้น

บางส่วนของเกณฑ์เหล่านี้มีรายละเอียดเพิ่มเติมด้านล่าง

ชื่อเรื่องรอง

เหตุใดจึงจำเป็นต้องมีประเภทธุรกรรมใหม่

EIP-2711 เพิ่มฟังก์ชันนี้ในเครือข่าย Ethereum ในขณะที่รักษาความเข้ากันได้ย้อนหลังกับธุรกรรมประเภทดั้งเดิม (ตามที่อธิบายไว้ในส่วนก่อนหน้า) ไม่จำเป็นต้องมีสัญญาอัจฉริยะหรือโหนดเฉพาะในการรัน อย่างไรก็ตาม ปัจจุบัน EIP-2711 ยังคงเป็นฉบับร่างและยังไม่ชัดเจนว่า EIP นี้จะเข้าร่วมเครือข่าย Ethereum ในเร็วๆ นี้หรือไม่ นอกจากนี้ยังอาจแบ่งออกเป็น EIP ขนาดเล็กหลายรายการ (เช่น EIP-3074)

ชื่อเรื่องรอง

รูปแบบธุรกรรมใหม่สำหรับ EIP-1559

0x02 || RLP([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, signatureYParity, signatureR, signatureS])

ใน EIP-1559 วิธีการทำงานของแก๊สได้เปลี่ยนไปอย่างมาก แทนที่จะจ่ายก๊าซทั้งหมดให้กับคนงานเหมือง ก๊าซส่วนหนึ่งจะถูกเผา เราไม่ได้ให้รายละเอียดการเปลี่ยนแปลงทั้งหมดใน EIP-1559 แต่ระบุรูปแบบธุรกรรมใหม่:

  • การเปลี่ยนแปลงที่โดดเด่นที่สุดคือ:

  • ราคาก๊าซถูกแทนที่ด้วย "ค่าธรรมเนียมลำดับความสำคัญสูงสุดต่อก๊าซ" และ "ค่าธรรมเนียมสูงสุดต่อก๊าซ"

  • รหัสเชนถูกเข้ารหัสแยกกันแทนที่จะรวมอยู่ในค่า v ลายเซ็น สิ่งนี้แทนที่ EIP-155 เป็นหลักด้วยการใช้งานที่ง่ายกว่า

ค่าลายเซ็น v ตอนนี้เป็นพาริตีบิตอย่างง่าย ("พาริตี Y ลายเซ็น") ซึ่งเป็น 0 หรือ 1 ขึ้นอยู่กับว่าควรใช้จุดใดบนเส้นโค้งวงรี

เนื่องจาก EIP-1559 เปลี่ยนแปลงวิธีการทำงานของค่าธรรมเนียมก๊าซอย่างมีนัยสำคัญ จึงไม่สามารถใช้งานร่วมกับธุรกรรมดิบได้โดยตรง เพื่อรักษาความเข้ากันได้ย้อนหลัง EIP-1559 อธิบายวิธีการอัปเกรดธุรกรรมดิบเป็นธุรกรรมที่เข้ากันได้กับ EIP-1559 โดยใช้ราคาก๊าซดิบเป็นค่าธรรมเนียมลำดับความสำคัญสูงสุดและค่าธรรมเนียมก๊าซสูงสุดต่อก๊าซ

ชื่อเรื่องรอง

ธุรกรรมเมตาดิบและธุรกรรมแบทช์

Metatransactions มีมาสองสามปีแล้ว แต่จนถึงตอนนี้ก็ยังต้องใช้สัญญาอัจฉริยะ เช่นเดียวกับธุรกรรมที่หมดอายุ จำเป็นต้องส่ง ETH ไปยังสัญญาอัจฉริยะ ซึ่งต้องรองรับธุรกรรมเมตาโดยเฉพาะ

0x02 || RLP([...SenderPayload, ...SenderSignature, ...GasPayerPayload, ...GasPayerSignature])

EIP-2711 เปิดใช้งานธุรกรรมเมตาแบบเนทีฟ (เรียกว่าธุรกรรมที่ได้รับการสนับสนุน) และธุรกรรมแบบแบตช์โดยไม่จำเป็นต้องใช้สัญญาอัจฉริยะ รูปแบบธุรกรรมใหม่ถูกกำหนดด้วยประเภทธุรกรรม 0x02 (แม้ว่าจะอาจมีการเปลี่ยนแปลงเนื่องจาก EIP-1559 ใช้ประเภทธุรกรรมเดียวกัน) การทำธุรกรรมมีดังนี้:

[1, ChildTransaction[], nonce, ChainId, ValidUntil, gasLimit, gasPrice]

โดยพื้นฐานแล้ว EIP-2711 จะมีส่วนบรรทุก (ทางเลือก) และลายเซ็นของผู้จ่ายก๊าซ บัญชีนี้จะใช้ในการชำระค่าก๊าซในการทำธุรกรรม ตัวอย่างเช่น สามารถส่งโทเค็น ERC-20 จากที่อยู่โดยที่ที่อยู่นั้นไม่มี ETH เพย์โหลดของผู้ส่ง ลายเซ็น ฯลฯ ถูกกำหนดตามประเภทย่อยของธุรกรรม ตัวอย่างเช่น สำหรับธุรกรรมที่มีประเภทธุรกรรม 1 เพย์โหลดของผู้ส่งถูกกำหนดเป็น:

ชื่อเรื่องรอง

สรุป

สรุป

ธุรกรรมแบบพิมพ์ทำให้เครือข่าย Ethereum มีความเป็นไปได้มากมาย สามารถสร้างได้โดยไม่ต้องเพิ่มความซับซ้อนให้กับไคลเอนต์ Ethereum ไลบรารี และเครื่องมืออื่น ๆ ที่มีให้

ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก:
https://t.me/Odaily_News
กลุ่มสนทนา:
https://t.me/Odaily_GoldenApe
บัญชีทางการ:
https://twitter.com/OdailyChina
สารบัญบทความ
คลังบทความของผู้เขียน
Katie 辜
อันดับบทความร้อน
Daily
Weekly
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android