Zelcore

สถาปัตยกรรม ERC-4337: จุดเข้าใช้งาน ผู้รวบรวมรายการ และผู้ชำระค่าธรรมเนียมแบบเข้าใจง่าย

อ่าน 12 นาที
สถาปัตยกรรม ERC-4337: จุดเข้าใช้งาน ผู้รวบรวมรายการ และผู้ชำระค่าธรรมเนียมแบบเข้าใจง่าย

การทำบัญชีแบบแยกส่วนบน Ethereum มีที่อยู่มาตรฐาน 2 แห่งที่ควรจำไว้ EntryPoint v0.6 อยู่ที่ 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789 ส่วน EntryPoint v0.7 ซึ่งนำขึ้นใช้งานเมื่อต้นปี 2024 อยู่ที่ 0x0000000071727De22E5E9d8BAf0edAc6f37da032 ธุรกรรม ERC-4337 ทุกธุรกรรมบนเมนเน็ต, Arbitrum, Optimism, Base, Polygon และบล็อกเชน EVM อื่น ๆ ส่วนใหญ่จะผ่านสัญญา singleton หนึ่งในสองแห่งนี้ หากคุณเข้าใจว่าสัญญาเหล่านี้ทำอะไร และบทบาทอีก 5 อย่างที่เกี่ยวข้องทำงานอย่างไร คุณก็เข้าใจ ERC-4337 แล้ว

นี่คือบทที่ 2 ของซีรีส์ Smart Accounts ของเรา บทที่ 1 อธิบายว่าทำไม EOA จึงไม่ใช่ค่าเริ่มต้นที่ดี บทนี้จะพาคุณไปดูการทำงานเบื้องหลัง ได้แก่ ผู้เกี่ยวข้องทั้ง 6 บทบาท โครงสร้าง UserOperation สิ่งที่เกิดขึ้นจริงเมื่อคุณแลกเปลี่ยนโทเคนจากบัญชีอัจฉริยะ การเปลี่ยนแปลงจาก v0.6 เป็น v0.7, paymaster, alt-mempool สาธารณะเทียบกับ bundler ส่วนตัว และค่าใช้จ่ายส่วนเพิ่มที่ควรคาดไว้

6 บทบาทในแผนภาพเดียว

ERC-4337 แบ่งสิ่งที่ EOA ทำในขั้นตอนเดียวออกเป็นผู้เกี่ยวข้อง 6 ฝ่ายที่ทำงานร่วมกัน โดยไม่จำเป็นต้อง hard fork Ethereum เลย เพราะทั้งระบบประกอบด้วยสัญญาและโครงสร้างพื้นฐานนอกบล็อกเชน

โปรดจำผู้เกี่ยวข้องทั้ง 6 บทบาทนี้ไว้ เนื้อหาที่เหลือในบทความกล่าวถึงการทำงานร่วมกันของพวกเขา

โครงสร้าง UserOperation

UserOperation คือชุดฟิลด์ที่รองรับ JSON-RPC เมื่อลงนามแล้วจะแสดงเจตนาการทำธุรกรรมโดยยังไม่ส่งไปยัง L1 โครงสร้าง v0.7 มีฟิลด์เชิงตรรกะ 11 รายการ:

กระเป๋าเงินเป็นผู้กำหนดรูปแบบลายเซ็น โดยทั่วไปใช้ ECDSA บน secp256k1 แต่การตรวจสอบ P-256/passkey, multisig, เกณฑ์การกู้คืนบัญชีผ่านบุคคลที่ไว้วางใจ และผู้ลงนามด้วย session key ล้วนทำงานผ่านอินเทอร์เฟซเดียวกัน ความยืดหยุ่นนี้คือหัวใจสำคัญของระบบ

ตั้งแต่ต้นจนจบ: เมื่อบัญชีอัจฉริยะแลกเปลี่ยน USDC เป็น ETH เกิดอะไรขึ้น

ติดตามขั้นตอนการแลกเปลี่ยนจริง เพื่อดูว่าบทบาทต่าง ๆ ทำงานตามลำดับอย่างไร

  1. ผู้ใช้แตะ “Swap” ในหน้าตากระเป๋าเงิน กระเป๋าเงินสร้าง UserOperation: sender = 0xUserSafe, callData = swapUSDCforETH(amount) โดยกำหนด Uniswap เป็นปลายทาง
  2. ประมาณค่าแก๊ส กระเป๋าเงินเรียก eth_estimateUserOperationGas ผ่าน RPC ของ bundler โดย bundler จะจำลองการทำงานของ op กับ EntryPoint แล้วส่งคืนขีดจำกัดแก๊สทั้ง 3 ค่า
  3. ผู้ใช้ลงนาม กระเป๋าเงินแฮช UserOp โดยใช้ที่อยู่ EntryPoint และ chain ID จากนั้นขอให้ผู้ใช้ลงนาม (ด้วย passkey, กุญแจฮาร์ดแวร์ หรือวิธีอื่น) แล้วแนบลายเซ็น
  4. ส่งรายการ UserOp ที่ลงนามแล้วจะถูกส่งผ่าน eth_sendUserOperation ไปยัง bundler อย่างน้อยหนึ่งราย จากนั้นเข้าสู่ alt-mempool ซึ่งเป็นเครือข่าย P2P แยกจาก mempool ธุรกรรมปกติของ Ethereum
  5. Bundler จำลองการทำงาน bundler จำลองรายการอีกครั้งด้วย eth_call กับ simulateValidation พร้อมตรวจสอบกฎการเข้าถึงพื้นที่จัดเก็บข้อมูลของ ERC-7562 ระหว่างตรวจสอบความถูกต้อง UserOp จะเข้าถึงได้เฉพาะพื้นที่จัดเก็บข้อมูลของตนเอง มิฉะนั้น bundler อาจถูกโจมตีจนเสียหาย
  6. รวมรายการ bundler รวม UserOp นี้กับรายการอื่นได้สูงสุดประมาณ 10 รายการ เป็นการเรียก handleOps([...userOps], beneficiary) ครั้งเดียวไปยัง EntryPoint
  7. ดำเนินการบนบล็อกเชน EntryPoint วนประมวลผลแต่ละ op โดยเรียก validateUserOp ของผู้ส่ง หักยอดชำระล่วงหน้า แล้วดำเนินการ callData การแลกเปลี่ยน Uniswap จึงเกิดขึ้นจากบัญชีอัจฉริยะ
  8. คืนเงิน EntryPoint คืนค่าแก๊สที่ไม่ได้ใช้ให้ผู้ส่ง (หรือ paymaster) และจ่ายให้ที่อยู่ผู้รับผลประโยชน์ของ bundler

หากขั้นตอนที่ 5 ล้มเหลว bundler จะทิ้งรายการนั้น และผู้ใช้จะเห็นรหัสข้อผิดพลาด AAxx รหัสที่พบบ่อย ได้แก่ AA21 (ไม่ได้ชำระยอดล่วงหน้า), AA23 (ลายเซ็นผิดพลาด), AA25 (nonce ไม่ถูกต้อง), AA33 (paymaster ย้อนธุรกรรม) และ AA40 (เกินขีดจำกัดแก๊สสำหรับการตรวจสอบ) โปรดจำตารางนี้ไว้ เพราะคุณจะพบรหัสเหล่านี้

EntryPoint v0.6 เทียบกับ v0.7

v0.6 เปิดตัวในเดือนมีนาคม 2023 ที่ 0x5FF1…2789 แม้จะใช้งานได้ แต่มีปัญหากวนใจ 3 ข้อ ได้แก่ blob paymasterAndData เดียวที่รวมมิติของแก๊ส 3 ส่วนเข้าด้วยกัน การจัดข้อมูล initCode ที่ยุ่งยาก และการคำนวณแก๊สที่เรียกเก็บจากผู้ส่งเกินจริง v0.7 แก้ไขปัญหาทั้งหมดนี้

การเปลี่ยนแปลงสำคัญใน v0.7 ที่ควรรู้:

v0.6 ยังคงใช้งานอยู่ โดยกระเป๋าเงินหลายรายยังไม่ได้เปิดตัวโมดูลที่รองรับ v0.7 จนกระทั่งช่วงกลางปี 2024 บล็อกเชนส่วนใหญ่จึงใช้งาน EntryPoint ทั้งสองเวอร์ชันควบคู่กันไปอีกหลายปี

Paymaster: ใครเป็นผู้จ่ายค่าแก๊ส

Paymaster คือสัญญาที่วาง ETH เป็นเงินค้ำประกันกับ EntryPoint และตกลงชำระค่าแก๊สให้ UserOp ที่เป็นไปตามนโยบายของตน ปัจจุบันมีรูปแบบหลัก 3 แบบ:

validatePaymasterUserOp ของ paymaster ทำงานในช่วงตรวจสอบความถูกต้องของ EntryPoint หากทำงานย้อนกลับ คุณจะได้รับ AA33 หากเงินค้ำประกันไม่เพียงพอ EntryPoint จะยึดเงินค้ำประกัน และ bundler จะเป็นผู้รับความเสียหาย นี่จึงเป็นเหตุผลที่ bundler จัดทำรายชื่อ paymaster ตามระดับความน่าเชื่อถือ ERC-7562 กำหนดกฎด้านความน่าเชื่อถือเหล่านี้ เพื่อให้ mempool ของ bundler ทนต่อสแปมได้ หลักการพื้นฐานเดียวกันนี้อธิบายได้ว่าเหตุใด แนวปฏิบัติที่ดีในการอนุมัติ DeFi และการจัดการ multisig จึงนำมาใช้กับโลก 4337 ได้โดยตรง เพราะภัยคุกคามเหมือนเดิม แต่เปลี่ยนเพียงรูปแบบที่ครอบอยู่

Alt-mempool สาธารณะเทียบกับ bundler ส่วนตัว

มีสองวิธีในการนำ UserOp ขึ้นบล็อกเชน

Alt-mempool สาธารณะ: bundler ที่ทำตาม ERC-7562 จะเผยแพร่ UserOp ต่อกันผ่านเครือข่าย libp2p ใครก็ตามที่รันโหนด Pimlico, Stackup, Alchemy, Etherspot หรือ Voltaire ก็สามารถรับ UserOp ของคุณได้ วิธีนี้เปิดให้ทุกคนใช้งานได้โดยไม่ต้องขออนุญาตและต้านทานการเซ็นเซอร์ แต่คุณยังเผชิญความเสี่ยงด้าน MEV เช่นเดียวกับธุรกรรม Ethereum ทั่วไป กล่าวคือ searcher อาจเห็น op ของคุณก่อนที่จะถูกรวมในบล็อก

Bundler ส่วนตัว: คุณส่ง eth_sendUserOperation ไปยัง RPC ของผู้ให้บริการรายหนึ่งโดยตรง ผู้ให้บริการจะจำลองการทำงาน รวมธุรกรรมเป็นชุด และส่งธุรกรรมแบบส่วนตัว (มักผ่าน Flashbots) วิธีนี้เร็วกว่าและป้องกัน MEV ได้ แต่คุณต้องไว้วางใจว่า bundler จะไม่เซ็นเซอร์หรือแซงหน้าธุรกรรมของคุณ ในปี 2026 กระเป๋าเงินสำหรับผู้ใช้ทั่วไปส่วนใหญ่ใช้ bundler ส่วนตัวเป็นค่าเริ่มต้น

ข้อแลกเปลี่ยนนี้คล้ายกับการเลือกระหว่าง mempool สาธารณะกับ Flashbots Protect สำหรับธุรกรรมทั่วไป หากคุณยังไม่เคยอ่านคำอธิบายเกี่ยวกับ วงจรชีวิตของธุรกรรม ตั้งแต่ยุค L1 บทความนั้นอธิบายว่ามีอะไรเปลี่ยนไปเมื่อ bundler เข้ามามีบทบาท

Aggregator การใช้งาน และค่าใช้จ่ายทั้งหมด

Aggregator คือสัญญาที่ตรวจสอบธุรกรรมเป็นชุดด้วยการตรวจสอบลายเซ็นเพียงครั้งเดียว กรณีใช้งานหลักคือ BLS: รวบรวม UserOp 50 รายการที่ลงนามด้วย BLS แล้วรวมลายเซ็นให้ตรวจสอบแบบ pairing เพียงครั้งเดียว ช่วยประหยัดค่าแก๊สส่วนลายเซ็นได้ประมาณ 95% การใช้งานยังช้าเพราะการเขียนกระเป๋าเงินที่ลงนามด้วย BLS ทำได้ยาก และการประหยัดค่าแก๊สจะคุ้มก็ต่อเมื่อมีปริมาณธุรกรรมสูงเท่านั้น ณ กลางปี 2026 มี UserOp บน mainnet น้อยกว่า 1% ที่ใช้ aggregator

ตัวเลขการใช้งาน (ไตรมาส 1 ปี 2026 จาก bundlebear.com): มี UserOp สะสมประมาณ 380 ล้านรายการในทุกเชน โดย Base, Polygon และ Arbitrum คิดเป็นสัดส่วนส่วนใหญ่ ส่วนแบ่งของ mainnet อยู่ที่ประมาณ 6–8% ซึ่งน้อยที่สุดเมื่อวัดตามปริมาณ แต่สูงที่สุดเมื่อวัดตามมูลค่าที่โอน Coinbase Smart Wallet, Farcaster และ Argent ครองสัดส่วนการใช้งานของผู้บริโภค

ค่าใช้จ่ายส่วนเพิ่ม: UserOp v0.7 ใช้แก๊สมากกว่าธุรกรรม EOA ที่เทียบเท่ากันประมาณ 30,000–40,000 หน่วย โดยมาจากลูปของ EntryPoint การตรวจสอบ และการจัดการธุรกรรมในชุด ที่ราคา 20 gwei บน mainnet จะคิดเป็นเงินไม่ถึงหนึ่งดอลลาร์ต่อรายการ การสร้างบัญชีครั้งแรกผ่าน factoryData ใช้แก๊สเพิ่มอีกราว 250,000 หน่วย บน L2 ที่ calldata เป็นต้นทุนหลัก ค่าใช้จ่ายส่วนเพิ่มคิดเป็นตัวเลขหลักหน่วยเปอร์เซ็นต์ UserOp ที่มีผู้สนับสนุนค่าแก๊สจะโยกค่าใช้จ่ายนี้ไปให้ dApp จึงเห็นธุรกรรมฟรีในแอปสำหรับผู้บริโภค แต่ไม่ใช่ใน DeFi ที่จริงจัง คำอธิบายเพิ่มเติมเกี่ยวกับ ค่าธรรมเนียมธุรกรรม อธิบายว่าค่าใช้จ่ายส่วนเพิ่มนี้ส่งผลต่อตลาดค่าธรรมเนียมแต่ละแบบอย่างไร

สรุปสั้น ๆ: ERC-4337 ประกอบด้วย 6 บทบาท (ผู้ส่ง, UserOp, bundler, EntryPoint, paymaster และ aggregator), struct หนึ่งชุด, ที่อยู่ EntryPoint สองรายการที่ควรจำ และค่าใช้จ่ายส่วนเพิ่มประมาณ 30–40k หน่วยแก๊ส เพื่อแลกกับการใช้รูปแบบลายเซ็นได้หลากหลาย การสนับสนุนค่าแก๊ส การรวมธุรกรรมเป็นชุด และ nonce ที่ทำงานขนานกัน บทที่ 3 ของชุดบทความนี้จะกล่าวถึง EIP-7702 ซึ่งเป็นแนวทางคู่ขนานของ Pectra ที่ให้ EOA เดิมของคุณยืมกลไกเดียวกันนี้มาใช้ได้โดยไม่ต้องเปลี่ยนที่อยู่


อ่านเพิ่มเติม

ภาพแสดงกระเป๋าเงิน ค่าธรรมเนียม Gas และการอนุมัติ ซึ่งเป็น 3 เรื่องที่ผู้ใช้ DeFi ทุกคนต้องเข้าใจ

กระเป๋าเงิน ค่าธรรมเนียม Gas และการอนุมัติ: 3 เรื่องที่ผู้ใช้ DeFi ทุกคนต้องเข้าใจ

ก่อนที่คุณจะแลกเปลี่ยน ให้กู้ยืม หรือทำฟาร์มสิ่งใด คุณต้องเข้าใจองค์ประกอบพื้นฐาน 3 อย่างที่ทุกการใช้งาน DeFi ต้องอาศัย ได้แก่ กระเป๋าเงินของคุณ ค่าธรรมเนียม Gas และการอนุมัติโทเคน

อ่าน 9 นาที
ภาพประกอบเรื่องบัญชี สัญญา และ EVM: วิธีทำงานจริงของ Ethereum

บัญชี สัญญา และ EVM: Ethereum ทำงานอย่างไรจริง ๆ

Ethereum แทนที่กระเป๋า UTXO ของ Bitcoin ด้วยตารางบัญชีขนาดใหญ่และเครื่องสแตกที่วัดการทำงานด้วย gas มาดูกันว่าสถานะ คำสั่งปฏิบัติการ และการโอน ERC-20 ทำงานอย่างไร

อ่าน 14 นาที
กลไกค่าธรรมเนียมแก๊สของ Ethereum: EIP-1559 ค่าธรรมเนียม Priority และค่า Blob หลัง Dencun

กลไกค่าธรรมเนียมแก๊สของ Ethereum: EIP-1559 ค่าธรรมเนียม Priority และค่า Blob หลัง Dencun

ค่าธรรมเนียมแก๊สของ Ethereum ทำงานอย่างไรในปี 2026: การประมูลค่าธรรมเนียมพื้นฐานของ EIP-1559 ทิปค่าธรรมเนียม Priority และตลาด Blob ที่แยกต่างหากซึ่งเริ่มขึ้นที่ Dencun และขยายขนาดด้วย Pectra

อ่าน 12 นาที

สมัครรับจดหมายข่าว

รับข่าวสารอัปเดตจากเราเดือนละครั้ง ไม่มีสแปม มีเพียงเรื่องล่าสุดจาก Zelcore

สมัครรับจดหมายข่าว