Skip to content
คู่มือออปชันทั้งหมด
สมาร์ตแอ็กเคานต์ Ethereumอ่าน 12 นาที

สมาร์ตแอ็กเคานต์ Ethereum: UserOperation, bundler และการสนับสนุนค่า gas

ดูเส้นทาง UserOperation ของ ERC-4337 ผ่าน bundler และ EntryPoint ทำความเข้าใจ paymaster ที่ช่วยจ่าย gas และแยกการกู้คืนบัญชีออกจากการดูแลคีย์

ในคู่มือนี้สมาร์ตแอ็กเคานต์เก็บกฎอนุญาตที่ตั้งโปรแกรมได้ไว้ในคอนแทร็กต์

สรุปสั้น

ERC-4337 ให้บัญชีสมาร์ตคอนแทร็กต์ส่ง UserOperation ตามกฎของตนผ่านเส้นทางแยกจาก EOA โดย bundler เรียก EntryPoint และ paymaster อาจช่วยจ่าย gas แต่ไม่รับประกันการกู้คืน ธุรกรรมฟรี หรือการไม่มีผู้ดูแล

สมาร์ตแอ็กเคานต์เก็บกฎอนุญาตที่ตั้งโปรแกรมได้ไว้ในคอนแทร็กต์

บัญชีภายนอกทั่วไป (EOA) พิสูจน์การควบคุมด้วยลายเซ็นจาก private key และ nonce ใช้เรียงลำดับธุรกรรม โมเดลนี้เรียบง่าย แต่โดยมากคีย์เดียวอนุมัติทุกการทำงาน.

ธุรกรรม EOA หนึ่งรายการมีการกระทำระดับบนสุดหนึ่งอย่าง แต่คอนแทร็กต์ที่ถูกเรียกยังเรียกคอนแทร็กต์อื่นต่อภายในได้

คู่มือธุรกรรม Ethereum ที่รอดำเนินการ อธิบายเส้นทาง EOA ที่ต่างจาก ERC-4337

สมาร์ตแอ็กเคานต์เป็นคอนแทร็กต์ที่เก็บสินทรัพย์และเรียกใช้ฟังก์ชันได้ โค้ดตรวจสอบอาจกำหนดลายเซ็นเดียว เกณฑ์หลายลายเซ็น หรือสิทธิ์ที่หมดอายุตามเวลา.

ERC-4337 กำหนดอินเทอร์เฟซสำหรับอนุมัติและดำเนินการ แต่ไม่ได้บังคับใช้วอลเล็ตหรือกฎกู้คืนแบบใดแบบหนึ่ง.

Ethereum.org ยกตัวอย่างคีย์สำรองและ gas sponsorship ซึ่งไม่ใช่คุณสมบัติที่ทุกวอลเล็ตมี.

คำว่า “สมาร์ตวอลเล็ต” อย่างเดียวไม่ได้บอกว่าใครควบคุม ตรวจดูคอนแทร็กต์ที่ถือสินทรัพย์ โค้ดและ EntryPoint ที่บัญชีเชื่อถือ รวมถึงผู้ลงนามที่อนุมัติการเรียกใช้ได้.

หากอัปเกรดตรรกะบัญชีได้ สิทธิ์ผู้ดูแลและขั้นตอนเปลี่ยนโค้ดก็มีผลต่อการควบคุมสินทรัพย์.

UserOperation ยังไม่ใช่ธุรกรรม Ethereum ที่อยู่ในบล็อก

UserOperation อธิบายสิ่งที่สมาร์ตแอ็กเคานต์ต้องการทำ โดยทั่วไปมีที่อยู่บัญชีผู้ส่ง nonce ของบัญชี ข้อมูล call ลายเซ็น ขีดจำกัด gas และเงื่อนไขค่าธรรมเนียม อาจมีข้อมูล factory สำหรับสร้างบัญชีใหม่หรือข้อมูล paymaster เพื่อขอการสนับสนุนด้วย

ฟิลด์จริงขึ้นอยู่กับ EntryPoint เวอร์ชันที่ใช้

แทนการส่งอ็อบเจ็กต์นี้ขึ้นเชนตรง ๆ ด้วย eth_sendTransaction วอลเล็ตจะส่งไปยัง bundler หรือ relay ที่รองรับ RPC ของ ERC-4337 เช่น eth_sendUserOperation คำขอจะผ่าน UserOperation pool ซึ่งแยกจาก pool ธุรกรรม EOA แฮช UserOperation ใช้ระบุคำขอ.

ส่วนธุรกรรม on-chain ที่ bundler สร้างจะมีแฮชและ receipt ของตนเอง ERC-7769 กำหนด RPC สำหรับส่งและตรวจผล.

คำตอบจาก bundler อาจหมายถึงคำขอผ่านการตรวจของผู้ให้บริการนั้นและเข้าคิวแล้ว แต่ไม่ได้พิสูจน์ว่าบล็อกรวมคำขอหรือแอปทำงานสำเร็จ การส่งต่อไป bundler อื่นขึ้นอยู่กับระบบและนโยบาย แยกคำตอบรับของผู้ให้บริการออกจากผลบนเชน

Bundler จำลองการตรวจสอบและเตรียม on-chain call

Bundler รับ UserOperation ตรวจว่าเข้ากันได้กับ EntryPoint เวอร์ชันของตน แล้วจำลองการตรวจสอบของบัญชีและ paymaster โดยดูว่าลายเซ็นถูกต้อง บัญชีเชื่อถือ EntryPoint หรือไม่ nonce, gas และเงื่อนไขสนับสนุนผ่านหรือไม่

คำขอผิดกฎหรือจำลองไม่ผ่านอาจถูกปฏิเสธ คู่มือ bundler ของ ERC-4337 อธิบายบทบาทนี้

จากนั้น bundler เลือก operation ที่ผ่านหนึ่งรายการหรือหลายรายการ แล้วสร้างธุรกรรม Ethereum ปกติเพื่อเรียก handleOps ของ EntryPoint.

ธุรกรรมจะเข้าไปในบล็อกได้หรือไม่ยังขึ้นกับการสร้างบล็อกและสภาพเครือข่าย แฮช UserOperation ไม่ยืนยันว่าการทำงานเกิดขึ้นบนเชนหลัก.

UserOperation pool แยกจาก EOA pool และผู้ให้บริการอาจเห็นคำขอต่างกัน Bundler อาจปฏิเสธหรือปล่อยให้รอ เครือข่าย EntryPoint เวอร์ชันและนโยบายที่รองรับก็แตกต่างกัน.

ตรวจสถานะโดยแยกหน้าจอวอลเล็ต ใบรับรอง operation และใบรับรองธุรกรรม bundle บนเชน.

แผนภาพไร้ข้อความแสดงคำสั่งที่ลงนามแล้วผ่าน bundler และ EntryPoint ไปยัง smart account โดย paymaster อาจออกค่า gas ให้
ERC-4337 แยกคำขอที่ลงนาม การส่งผ่าน bundler การตรวจสอบบัญชี และการสนับสนุนค่า gas ที่เลือกใช้ได้

EntryPoint ตรวจสิทธิ์บัญชีก่อนเรียกให้ทำงาน

เอกสาร EntryPoint ของ ERC-4337 อธิบายบทบาท EntryPoint ในการตรวจสอบและชำระต้นทุน.

EntryPoint รับ handleOps จาก bundler แล้วเรียกฟังก์ชันตรวจสอบของบัญชี บัญชีตรวจว่าเรียกผ่าน EntryPoint ที่เชื่อถือได้ และตรวจลายเซ็นกับกฎอนุญาตของตนเอง.

ERC-4337 nonce แบ่งเป็น key 192 บิตและ sequence 64 บิต EntryPoint ตรวจสอบและเพิ่ม sequence แยกตามบัญชีและ key ส่วนบัญชีอาจกำหนดความหมายหรือกฎเพิ่มเติมให้ key.

Paymaster อาจเลือกสนับสนุน operation หรือไม่ก็ได้ เมื่อการตรวจผ่าน EntryPoint จะเรียกฟังก์ชัน execute ของบัญชีเพื่อทำงานตาม callData และชำระต้นทุน.

EntryPoint เป็นคอนแทร็กต์กลางที่ช่วยให้ใช้สมาร์ตแอ็กเคานต์ได้โดยไม่ต้องแก้โปรโตคอลแยกตามวอลเล็ต ตรวจสอบที่อยู่ เวอร์ชันและเครือข่ายที่ใช้งานจริง.

การจำลองเป็นตัวอย่างให้ดูล่วงหน้า ไม่ใช่คำรับประกันว่าจะถูกบรรจุ ระหว่างรอ สถานะเชน ค่าธรรมเนียม ช่วงเวลาที่ใช้ได้ หรือคอนแทร็กต์ภายนอกอาจเปลี่ยน แม้ตรวจผ่านแล้ว app call ก็อาจล้มเหลวหรือ revert

การอยู่ในบล็อกอย่างเดียวไม่ได้ยืนยันว่าส่งโทเคนหรือทำสิ่งที่ต้องการสำเร็จ

Paymaster สนับสนุนค่า gas เมื่ออนุมัติ operation เท่านั้น

เมื่อ UserOperation มีข้อมูล paymaster EntryPoint จะถามคอนแทร็กต์ว่าจะสนับสนุนหรือไม่ แอปอาจรับภาระค่าธรรมเนียมหรือให้ผู้ใช้เริ่มทำรายการได้โดยไม่มี ETH ในบัญชี บางแบบรับชำระด้วยโทเคนหรือกำหนดสิทธิ์อื่น แต่ขึ้นอยู่กับวอลเล็ตและ paymaster

การสนับสนุนไม่ได้ทำให้ต้นทุนหายไป Paymaster จำกัดแอป ผู้ใช้ จำนวน operation หรือยอดเงิน ตรวจคำขอและปฏิเสธได้ EntryPoint จะหักต้นทุนจากเงิน deposit ของ paymaster หากมีกฎให้ stake แยกต่างหาก stake เป็นหลักประกัน ไม่ใช่ยอด gas ที่ถอนได้

คู่มือ paymaster ERC-4337 และ EIP-4337 อธิบายขั้นตอนตรวจและชำระ

หน้าจอแอปที่แสดงค่าธรรมเนียมศูนย์ไม่ได้หมายความว่าไม่มีต้นทุน ผู้สนับสนุนอาจจ่ายก่อนและเก็บมูลค่าคืนผ่านสมาชิก โทเคน หรือเงื่อนไขบริการ ตรวจว่าใครเป็นผู้รับภาระสุดท้าย มีเพดานหรือไม่ และ operation ที่ล้มเหลวยังเสีย gas ได้หรือเปล่า

แยกประเมินหลาย call กับค่าธรรมเนียม

หากวอลเล็ตทำได้ UserOperation หนึ่งรายการอาจใส่ทั้งการอนุมัติแอปและการ swap ทั้งสองอย่างจะส่งเป็น operation เดียวผ่าน EntryPoint ซึ่งต่างจากธุรกรรม EOA ปกติ และต่างจาก bundler ที่รวมหลาย UserOperation เป็นธุรกรรมเชนเดียว

ดูโครงสร้างในหน้าตรวจสอบก่อนยืนยัน ตัวอย่างสมมุติ: operation ที่ได้รับอนุมัติและมีผู้สนับสนุนอาจมีค่า gas จริง 0.0012 ETH.

ค่าใช้จ่ายนี้อาจหักจาก deposit ของ paymaster ที่ EntryPoint แทนยอดผู้ใช้ ตัวเลขนี้เป็นเพียงตัวอย่าง ไม่ใช่ราคาปัจจุบัน.

ต้นทุนจริงขึ้นกับ gas ที่ใช้ เงื่อนไขค่าธรรมเนียมและเครือข่าย.

การรวมหลาย call ไม่ได้ถูกกว่าหรือปลอดภัยกว่าเสมอไป ความเป็น atomic ขึ้นกับวิธีที่บัญชีจัดการเมื่อเกิดข้อผิดพลาด ตรวจว่าถ้า call หนึ่งล้มเหลวจะย้อนทั้งชุดหรือไม่ รายการอื่นอาจสำเร็จค้างไว้หรือไม่ และใครจ่าย gas.

หากประมาณ gas ผิด operation อาจถูกปฏิเสธหรือล้มเหลว คู่มือค่าธรรมเนียม gas ของ Ethereum อธิบายฟิลด์ค่าธรรมเนียม.

การกู้คืนขึ้นอยู่กับบัญชี ไม่ใช่ ERC-4337

บัญชีอาจกำหนดผู้ลงนามสำรองหรือให้ guardian ที่ไว้ใจได้ครบเกณฑ์ก่อนเปลี่ยนคีย์ บางแบบมีเวลารอให้คีย์เดิมคัดค้านได้ หากบัญชีต้องใช้ลายเซ็นเดียวเสมอ การทำคีย์หายอาจกู้คืนไม่ได้.

ERC-4337 ให้แต่ละบัญชีกำหนดกฎเอง แต่ไม่ได้เพิ่มคีย์สำรองหรือ social recovery ให้ทุกบัญชี.

Guardian น้อยหรือกฎเปลี่ยนคีย์ที่อ่อนแออาจเปิดช่องโจมตี ส่วน guardian มากหรือเงื่อนไขเข้มงวดอาจทำให้เจ้าของจริงกู้คืนช้า ตรวจจำนวนขั้นต่ำ เวลารอ สิทธิ์ยกเลิก และที่เก็บคีย์กู้คืน กฎเหล่านี้กำหนดด้วยว่าใครขัดขวาง operation ได้.

วอลเล็ตแบบคอนแทร็กต์ไม่ได้เป็นแบบ custodial หรือ non-custodial โดยอัตโนมัติ การควบคุมขึ้นกับผู้ถือ signing key สิทธิ์ admin หรือ upgrade และสิ่งที่ hosted signer หรือบริการกู้คืนอนุมัติได้.

ตรวจคอนแทร็กต์ที่ถือสินทรัพย์แยกจากคีย์และบริการที่ควบคุมมัน. คู่มือกู้คืน seed phrase กล่าวถึงการกู้คืนอีกแบบหนึ่ง.

ตรวจ operation และทางควบคุมก่อนส่ง

ดู network, ที่อยู่บัญชี, คอนแทร็กต์ปลายทาง, call data, ขอบเขตการอนุมัติโทเคนและจำนวน call ในหน้าตรวจสอบของวอลเล็ต ลายเซ็นอาจอนุญาตมากกว่าการกระทำที่หน้าจอเน้น หากไม่เข้าใจข้อมูลที่เซ็น ให้อ่านเอกสารทางการของแอปและวอลเล็ต.

หากต้องการเข้าใจ sponsorship ให้อ่านคุณสมบัติ ขีดจำกัด วิธีชำระเงินทางเลือกและกฎค่าใช้จ่ายเมื่อผิดพลาด อย่าดูเพียงชื่อ paymaster.

ป้ายสนับสนุนไม่ได้แปลว่าแอปฟรีโดยไม่มีเงื่อนไข และ paymaster ยังปฏิเสธได้ ความแออัดของเครือข่ายและความล่าช้าในการนำธุรกรรมเข้า block ก็ยังมีอยู่.

หาก UserOperation รอนาน อย่าใช้ “เร่ง” หรือ “ยกเลิก” ของ EOA ก่อนตรวจวิธีของวอลเล็ต ค้นหาแฮช operation และ receipt ก่อน.

หากมีแฮชธุรกรรม bundler ให้ตรวจ receipt ของบล็อกและผลการทำงานด้วย RPC receipt ช่วยแยกต้นทุนและผลสำเร็จของแต่ละ operation ออกจาก receipt ของ bundle ทั้งก้อน.

คำถามที่พบบ่อย

Q1UserOperation เหมือนธุรกรรม Ethereum หรือไม่?

ไม่ใช่ เป็นคำขอจากบัญชีอัจฉริยะที่ผ่าน pool แยกกัน เมื่อ bundler ส่ง EntryPoint call เชนจะบันทึกธุรกรรม bundle และผลของแต่ละ operation

Q2มี paymaster แล้วผู้ใช้ไม่ต้องจ่าย gas ใช่ไหม?

ผู้ใช้อาจไม่จ่าย ETH โดยตรงจากบัญชี แต่ต้นทุนเครือข่ายยังมีอยู่ อาจมีวงเงิน การจ่ายด้วยโทเคนหรือเงื่อนไขบริการ และ operation ที่ล้มเหลวก็อาจเสีย gas

Q3กู้คืนวอลเล็ต ERC-4337 หลังทำคีย์หายได้ไหม?

ได้เฉพาะเมื่อบัญชีมีผู้ลงนามสำรองหรือนโยบายกู้คืน ตรวจเกณฑ์ เวลารอ อำนาจเปลี่ยนคีย์ และการควบคุมของบริการกู้คืน

แหล่งข้อมูลและการอ่านเพิ่มเติม

รายงานปัญหา

เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น

ตรวจสอบอย่างรวดเร็ว

อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ

คำถาม 1 / 3

คำถาม 01

Bundler ส่ง hash ของ UserOperation กลับมา สิ่งนี้ยืนยันอะไรได้ด้วยตัวเอง?

เลือกคำตอบเพื่อดูคำอธิบาย

อภิธานศัพท์ออปชัน

ธุรกรรม Ethereum ที่รอดำเนินการอธิบายธุรกรรม Ethereum ที่รอดำเนินการ: nonce การแทนที่ และการยกเลิกทำความเข้าใจว่าเหตุใดธุรกรรม Ethereum จึงต้องรอ nonce จัดลำดับธุรกรรมของบัญชีอย่างไร และปุ่มเร่งหรือยกเลิกในกระเป๋าทำอะไรได้และทำอะไรไม่ได้ค่าธรรมเนียมแก๊ส Ethereumทำความเข้าใจค่าธรรมเนียมแก๊ส Ethereum: base fee, priority fee และ gas limitเรียนรู้ความหมายของหน่วยแก๊ส ขีดจำกัดแก๊ส base fee, priority fee และค่าธรรมเนียมสูงสุด พร้อมคำนวณต้นทุนจริงของธุรกรรม Ethereumคู่มือกู้คืนคริปโตวอลเล็ตSeed phrase ของคริปโตวอลเล็ต: การสำรอง การกู้คืน และ passphraseเรียนรู้ความเชื่อมโยงระหว่าง seed phrase กับ private key วิธีเก็บสำรองแบบออฟไลน์ และผลของ passphrase ต่อการกู้คืนพื้นฐานของออปชันin the money, at the money และ out of the money หมายถึงอะไรเรียนรู้ว่าป้ายกำกับ in-the-money, at-the-money และ out-of-the-money ใช้กับคอลและพุตอย่างไร พร้อมตัวอย่างมูลค่าในตัวและจุดคุ้มทุนพื้นฐานของ Optionscall option คืออะไร?ทำความเข้าใจแก่นของ call option ด้วยคำจำกัดความที่เข้าใจง่าย ตัวอย่าง strike คณิตศาสตร์ของ break-even และสิ่งที่ assignment หรือ early exercise อาจเปลี่ยนแปลงในตอนท้าย