ผู้เขียนต้นฉบับ: มาโดกะ คาเมะIOBC Capital
มีบัญชีสองประเภทในระบบ Ethereum:
หนึ่งถูกควบคุมโดยคีย์ส่วนตัวบัญชีภายนอก(externally-owned account, EOA) เช่น บัญชีในกระเป๋าเงินที่เราใช้ บัญชีประเภทนี้จะมียอดคงเหลือในตัวเอง เจ้าของสามารถส่งข้อความจากบัญชีภายนอกได้โดยสร้างและลงนามธุรกรรม
อีกบัญชีหนึ่งคือบัญชีสัญญาที่ควบคุมโดยรหัสที่ใช้กับบล็อกเชน ซึ่งควบคุมโดยรหัสเครื่องเสมือน Ethereum ที่จัดเก็บไว้ในบัญชีสัญญาอัจฉริยะ (บางครั้งเรียกว่ากระเป๋าเงินอัจฉริยะ) เมื่อบัญชีสัญญาได้รับข้อมูล รหัสภายในของบัญชีจะเปิดใช้งาน ทำให้สามารถอ่านและเขียนที่จัดเก็บข้อมูลภายใน สร้างสัญญาใหม่ และอื่นๆ
ชื่อระดับแรก
นามธรรมบัญชีคืออะไร?
การแยกบัญชีเป็นการปรับปรุงบัญชีสองบัญชีข้างต้น โดยพยายามทำให้ขอบเขตระหว่างบัญชีทั้งสองไม่ชัดเจน และกลายเป็นบัญชีเอนกประสงค์ที่มีตรรกะที่ซับซ้อนช่วยให้บัญชีมีหน้าที่ของบัญชีสัญญาและบัญชีภายนอกในเวลาเดียวกัน
ชื่อระดับแรก
รูปแบบต่างๆของนามธรรมบัญชี
เป็นวิสัยทัศน์ของชุมชนนักพัฒนา Ethereum เสมอมาเพื่อให้บรรลุสิ่งที่เป็นนามธรรมของบัญชี ชุมชนยังได้เสนอข้อเสนอต่าง ๆ เช่น:EIP-86,EIP-2938รอ.
EIP-86 เป็นการเตรียมทางเทคนิคสำหรับการสรุปบัญชี ซึ่งกำหนดประเภทบัญชีใหม่ที่อนุญาตให้ผู้ใช้สร้างบัญชีตามสัญญาอัจฉริยะ
โปรโตคอล Ethereum นั้นกำหนดให้ทุกอย่างรวมอยู่ในธุรกรรมที่มาจากบัญชีภายนอกที่ปลอดภัยของ ECDSA (EOA) และทุกการกระทำของผู้ใช้จะต้องถูกรวมโดยธุรกรรมจาก EOA ซึ่งมีค่าใช้จ่าย 21,000 แก๊ส ผู้ใช้จำเป็นต้องเป็นเจ้าของ ETH ใน EOA แยกต่างหากเพื่อชำระค่าน้ำมัน
บทคัดย่อของบัญชีที่เสนอโดย EIP-86 นำธุรกรรมประเภทใหม่ที่ไม่มีผู้ส่งมาเปรียบเทียบกับธุรกรรมแบบดั้งเดิมที่ต้องมี EOA เป็นผู้ส่ง ธุรกรรมดังกล่าวทำลายเอกลักษณ์ของแฮชธุรกรรม เดิมที EIP-86 มีแผนที่จะอัปเกรดในช่วง Metropolis แต่เนื่องจากปัญหาที่กล่าวถึงข้างต้น ผู้พัฒนาจึงตัดสินใจเลื่อนการเปิดตัวใน Metropolis ออกไป
EIP-2938 มอบโซลูชันการแยกบัญชี โดยการเปลี่ยนส่วนหนึ่งของโปรโตคอล Ethereum บัญชีสัญญาสามารถเริ่มต้นธุรกรรมได้เช่นเดียวกับบัญชีภายนอก อย่างไรก็ตาม เนื่องจากโซลูชันนี้ต้องการการเปลี่ยนแปลงโปรโตคอล Ethereum ที่เลเยอร์ฉันทามติ จึงไม่ได้รับการยอมรับอย่างกว้างขวาง
โปรโตคอลใหม่ERC-4337ชื่อระดับแรก
ERC-4337 ใช้งานอย่างไร?
ERC-4337 ไม่พยายามแก้ไขฉันทามติของโปรโตคอล แต่จำลองการทำงานของ mempool ในระบบ
ผู้ใช้ส่งวัตถุ UserOperation (UserOperation)ซึ่งมีความตั้งใจ ลายเซ็น และข้อมูลอื่นๆ ของผู้ใช้ มี mempool แยกต่างหากสำหรับการดำเนินการของผู้ใช้ และโหนดที่เชื่อมต่อกับพูลนี้ทำการตรวจสอบเฉพาะ ERC-4337 เพื่อกรองการดำเนินการเพื่อให้แน่ใจว่าได้รับเฉพาะการดำเนินการที่ชำระค่าธรรมเนียม
การกระทำของผู้ใช้เหล่านี้ถูกรวบรวมเป็นแบทช์โดยนักขุดหรือผู้ทำแพ็กเกจโดยใช้บริการ Flashbots และบรรจุลงในการทำธุรกรรมกลุ่มเดียวและรวมอยู่ในบล็อก EthereumPackers จ่ายค่าธรรมเนียมก๊าซสำหรับธุรกรรมแบบรวมใน Ethereumและได้รับการชดเชยสำหรับแต่ละ UserOperation จ่าย ผู้ทำแพ็กเกจจะใช้ตรรกะลำดับความสำคัญต้นทุนเพื่อเลือกอ็อบเจ็กต์ UserOperation ที่จะรวม
การดำเนินการของผู้ใช้ UserOperation ดูเหมือนธุรกรรม แต่เป็นโครงสร้างที่เข้ารหัส ABI รวมถึงฟิลด์ต่อไปนี้:
1. ผู้ส่ง: กระเป๋าเงินที่ดำเนินการ
2. nonce และลายเซ็น: พารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชันการตรวจสอบกระเป๋าเงินเพื่อให้กระเป๋าเงินสามารถตรวจสอบการดำเนินการได้
3. initCode: หากยังไม่มีกระเป๋าเงิน รหัสเริ่มต้นที่ใช้ในการสร้างกระเป๋าเงิน
4. callData: ข้อมูลที่ใช้ในการเรียกกระเป๋าเงินในขั้นตอนการดำเนินการจริง
และกระเป๋าเงินแต่ละใบเป็นสัญญาที่ชาญฉลาดซึ่งต้องมีฟังก์ชันการทำงานสองฟังก์ชัน:
1. ตรวจสอบ UserOp ซึ่งยอมรับ UserOperation เป็นอินพุต ฟังก์ชันนี้ควรตรวจสอบลายเซ็นและ nonce ใน UserOperation ชำระค่าธรรมเนียมและเพิ่ม nonce หากการตรวจสอบสำเร็จ และส่งข้อยกเว้นหากการตรวจสอบล้มเหลว
ชื่อระดับแรก
การเปลี่ยนแปลงที่นำมาโดย ERC-4337
หากข้อเสนอนี้ได้รับการยอมรับโดยทั่วไปการตรวจสอบลายเซ็นย้ายไปที่ Ethereum Virtual Machine (EVM)ฟังก์ชัน validateUserOp เพิ่มตรรกะการตรวจสอบลายเซ็นและตัวเลขแบบสุ่มโดยอำเภอใจ ทำให้ตรรกะการตรวจสอบมีความยืดหยุ่นมากขึ้น
ด้วยวิธีนี้ เครื่องมือการเข้ารหัสใหม่สามารถใช้เมื่อลงนามธุรกรรม และกระเป๋าเงินยังสามารถให้บริการฟังก์ชันใหม่บางอย่าง เช่น:
หลายลายเซ็น;
การฟื้นฟูทางสังคม
อัลกอริทึมลายเซ็นที่มีประสิทธิภาพและง่ายกว่า (เช่น Schnorr, BLS);
อัลกอริธึมลายเซ็นที่ปลอดภัยหลังควอนตัม (เช่น Lamport, Winternitz);
กระเป๋าเงินอัพเกรดได้
วิธีนี้ยังเปิดการจัดการการอนุญาตการทำธุรกรรมอื่น ๆ เช่นการอนุญาตให้ทำธุรกรรมเพื่อชำระค่าธรรมเนียมก๊าซผ่านสัญญาอัจฉริยะ
ในปัจจุบัน ค่าธรรมเนียมน้ำมันสำหรับกระเป๋าเงินภายนอกเพื่อโต้ตอบกับ Ethereum สามารถชำระได้ด้วย ETH ในกระเป๋าเงินเท่านั้น หากคุณมีโทเค็น ERC-20 ในกระเป๋าเงินของคุณโดยไม่มี ETH คุณจะไม่มีทางโอนโทเค็นเหล่านี้ออกไปได้ เมื่อนำ ERC-4337 มาใช้ ผู้ใช้สามารถใช้โทเค็น ERC-20 ในบัญชีเพื่อชำระค่าธรรมเนียม และโหนดนักขุดจะใช้สัญญาเป็นตัวกลางในการชำระค่าเชน ETH และรับโทเค็น ERC-20 ของผู้ใช้
เมื่อรู้นามธรรมแล้วการทำธุรกรรมที่ลงนามและออกอากาศโดยเจ้าของบัญชีภายนอกจะไม่ใช่วิธีเดียวในการเริ่มต้นการทำธุรกรรมอีกต่อไปสิ่งนี้จะเปิดโอกาสให้ Ethereum ทำหน้าที่เป็นตัวส่งต่อสำหรับธุรกรรมเมตา แอปพลิเคชั่นปัจจุบันจำนวนมากบน Ethereum อาศัยตัวส่งต่อเพื่อเผยแพร่ธุรกรรมของผู้ใช้บนบล็อกเชนและจ่ายค่าธรรมเนียมให้กับตัวส่งต่อ หากสามารถสร้างสัญญาที่ซับซ้อนมากขึ้นในกระเป๋าเงินได้ ผู้ส่งต่อบางคนจะไม่จำเป็นอีกต่อไป และไม่ต้องจ่ายค่าธรรมเนียมเพิ่มเติมให้กับพวกเขา
แม้ว่าจะมีข้อดีมากมาย แต่โครงร่างใหม่ก็ประสบปัญหาเช่นกัน
จุดที่โดดเด่นที่สุดคือต้นทุนก๊าซที่สูงขึ้น การดำเนินการ ERC-4337 ขั้นพื้นฐานต้องใช้ก๊าซประมาณ 42,000 ในขณะที่การทำธุรกรรมปกติต้องใช้ก๊าซ 21,000 เหตุผลดังต่อไปนี้:
1. คุณต้องจ่ายค่าใช้จ่ายในการอ่าน/เขียนพื้นที่เก็บข้อมูลจำนวนมาก ในกรณีของ EOA ค่าใช้จ่ายเหล่านี้จะรวมอยู่ในการจ่ายก๊าซ 21,000 เพียงครั้งเดียว:
(1) แก้ไขช่องเก็บข้อมูลที่มี pubkey+nonce (~5000);
(2) ต้นทุนข้อมูลการโทรของการดำเนินการของผู้ใช้ (ประมาณ 4,500 ซึ่งสามารถลดเหลือประมาณ 2,500 ผ่านการบีบอัด)
(3)ECRECOVER (~3000);
(4) การเข้าถึงกระเป๋าเงินครั้งแรก (~2600)
(5) การเข้าถึงบัญชีผู้รับเงินเป็นครั้งแรก (~2600)
(6) โอน ETH ไปยังบัญชีผู้รับผลประโยชน์ (~9000)
(7) แก้ไขพื้นที่จัดเก็บเพื่อชำระค่าธรรมเนียม (~5,000)
(8) เข้าถึงช่องเก็บข้อมูลที่มีเอเจนต์ (~2100) จากนั้นเข้าถึงเอเจนต์เอง (~2600)
2. นอกเหนือจากค่าใช้จ่ายในการอ่าน/เขียนพื้นที่เก็บข้อมูลข้างต้นแล้ว สัญญายังต้องดำเนินการ "ตรรกะทางธุรกิจ" (แกะ UserOperation, แฮชมัน, ตัวแปรสุ่ม ฯลฯ)
3. ต้องใช้น้ำมันเพื่อชำระค่าธรรมเนียมบันทึก (EOA ไม่เผยแพร่บันทึก);
4. ต้นทุนการสร้างสัญญาแบบครั้งเดียว (ประมาณ 32,000 แก๊ส บวก 200 แก๊สสำหรับแต่ละรหัสไบต์ในพร็อกซี บวก 20,000 แก๊สสำหรับการตั้งค่าที่อยู่พร็อกซี)
กล่าวโดยย่อคือ ทุกขั้นตอนของที่อยู่นามธรรมของบัญชีจะต้องมีการคำนวณ ซึ่งใช้ทรัพยากรมากขึ้นและเพิ่มค่าใช้จ่ายเพิ่มเติม
โชคดีที่สิ่งนี้ไม่สามารถแก้ไขได้
เนื่องจาก Rollup สามารถบีบอัดข้อมูลได้ดี จึงมีความเข้ากันได้อย่างเป็นธรรมชาติกับโครงร่างนามธรรมของบัญชีที่มีข้อมูลซับซ้อน
ในข้อเสนอล่าสุดของ Vitalikมีการเสนอให้ประมวลผลข้อมูลที่สร้างขึ้นโดยการสรุปบัญชีผ่านชั้นที่ 2การปรับปรุงคือการบรรจุฟังก์ชันที่สามารถรับรู้ได้ในขั้นตอนเท่านั้นในการทำธุรกรรมเป็นชุด และใช้เทคโนโลยี SNARK เพื่อรับรองความถูกต้องของการทำธุรกรรม
บทส่งท้าย
บทส่งท้าย
ตอนนี้รูปแบบของการมุ่งเน้นไปที่การพัฒนาเลเยอร์ 2 ใน Ethereum ได้ถูกตั้งค่าแล้ว แผนการติดตามผลของ Vitalik สำหรับการอัปเกรด Ethereum ได้เริ่มเปลี่ยนเป็นนามธรรม การนำเสนอข้อเสนอล่าสุดการยกเลิก + การสรุปบัญชีเส้นทางทางเทคนิค ผู้ให้บริการ Rollup หลายรายได้เปิดตัวเวอร์ชันใหม่ที่เข้ากันได้กับสิ่งที่เป็นนามธรรมของบัญชี
ในเดือนมิถุนายนของปีนี้ zkSync ได้เผยแพร่ข้อมูลอัปเดต V2: เพิ่มฟังก์ชัน "account abstraction" และเพิ่มความเข้ากันได้กับ Ethereum EVM ในเดือนตุลาคม ERC-4337 เวอร์ชันใหม่เปิดตัว ซึ่งเพิ่มฟังก์ชันการรวมลายเซ็น รวมถึงอัลกอริทึมลายเซ็น BLS การรวมลายเซ็นช่วยให้ผู้สร้างและผู้ส่งแบทช์สามารถรวมลายเซ็น (เช่น BLS, SNARKs) ได้ด้วย ซึ่งช่วยลดข้อมูลในห่วงโซ่ได้อย่างมากและลดต้นทุนข้อมูลสำหรับการยกเลิก
เรามีเหตุผลที่จะเชื่อได้ว่าการเปลี่ยนแปลงที่เกิดจากการสรุปบัญชียังมีความเป็นไปได้ของการระเบิดของระบบนิเวศ ด้วยการพัฒนาของ Rollup การสรุปบัญชีที่สามารถรวมเข้ากับ Rollup จะต้องพัฒนาโซลูชันที่ดีขึ้นและละเอียดยิ่งขึ้น
