แนวคิดการสรุปบัญชีมุ่งหวังที่จะปรับปรุงประสบการณ์ของผู้ใช้และนักพัฒนาทั่วทั้งระบบ Ethereum พร้อมกับการทำให้ประสบการณ์ในเครือข่ายเป็นไปได้มากขึ้นและสนุกสนานกว่าสำหรับผู้ใช้ นอกจากนี้ยังเพิ่มความสามารถให้แก่นักพัฒนาในการทำสิ่งที่มีประสิทธิภาพมากขึ้นบน Ethereum และให้บริการแก่ผู้ใช้อย่างมีความหมายมากขึ้น
การจัดหมวดหมู่ของวิธีการสรุปบัญชีของเรามีดังนี้:
วิธีการนี้มีกลไกที่อนุญาตให้ EOA ทำการเปลี่ยนแปลงเป็น CA โดยไม่ต้องย้ายสินทรัพย์ เช่นEIP 7377และEIP 5003 (เมื่อพิจารณาร่วมกับ EIP 3074)
มีข้อเสนอต่าง ๆ ที่ผ่านมาเคยมีการสร้างบัญชีฉลาดและการสรุปบัญชีที่เข้มงวดที่ระดับโปรโตคอล;EIP-86และEIP-2938เป็นบางส่วนของสิ่งที่ถูกอ้างอิงมากขึ้น อย่างไรก็ตาม มีการต่อต้านอย่างมากเนื่องจากความซับซ้อนที่ถูกนำเข้ามาโดยการออกแบบนี้และความคิดเห็นข้างส่วนใหญ่ว่า Ethereum ยังไม่พร้อมสำหรับความซับซ้อนเช่นนี้
หลังจากที่วิทาลิคเปิดเผยเรื่องนี้อีกครั้งหลังจากการผสานERC-4337ได้ถูกเสนอเป็นรุ่นที่เปิดใช้เวอร์ชันของมาตรฐานบัญชีอัจฉริยะที่เป็นการเลือกเข้าใช้งาน เช่นกับโครงสร้าง PBS (Proposer-Builder Separation) สำหรับ MEV (Maximal Extractable Value) ดังนั้นผู้ใช้ที่ต้องการเข้าถึงประโยชน์ของบัญชีอัจฉริยะสามารถใช้ท่อไอพี ERC-4337 เพื่อนิยามตนเองในตรรกะของบัญชีและกฎความถูกต้องของธุรกรรมในโครงสร้างที่เรียกว่า UserOperation (หรือ UserOps สำหรับสั้น)
ERC 4337 นำประโยชน์ของบัญชีอัจฉริยะมาสู่ Ethereum ในปัจจุบันโดยไม่จำต้องตั้งเป็นกฎหมายอย่างซับซ้อน โดยทำหน้าที่เป็นทางเลือกนอกโปรโตคอลสำหรับบัญชีอัจฉริยะที่ตั้งเป็นกฎหมายอยู่ อย่างไรก็ตามนี้ไม่ได้หมายความว่าโครงสร้างพื้นฐานเป็นที่เหมาะสมในสถานะปัจจุบันของมันเอง เนื่องจากความซับซ้อนของมันยังคงเป็นจุดอ่อนที่สำคัญ
เพื่อจัดการกับความซับซ้อนนี้,RIP 7560ถูกเขียนขึ้นในรูปแบบที่ถูกบูรณาการเป็นเวอร์ชันศักยภาพเภท ERC 4337 ทั่ว Ethereum และ L2s ซึ่งทำให้รับมรดกจากระบบเครือข่ายการต้านสิบิลของเครือข่ายแทนที่จะต้องกำหนดชุดกฎระเบียบใหม่ (เช่น ERC 4337 ทำกับ ERC 7562)
ในรายงานนี้เราจะเน้นการสำรวจความสามารถในการโปรแกรม EOA การประเมินผลวิธีต่างๆ ที่อธิบายวิธีการแก้ไขปัญหาในบรรทัดนี้และอภิปรายคุณสมบัติและข้อเสียของแต่ละวิธีการ ในส่วนที่ 2 และ 3 ของซีรีย์นี้เราจะพูดถึงวิธีการแก้ไขปัญหาในกลุ่มอื่น ๆ สองของแนวคิดการสรุปบัญชีที่กำลังสำรวจอยู่ใน Ethereum
เพื่อหาสิ่งที่สามารถถอดรายละเอียดได้ เราต้องมีภาพรวม (บางส่วน) ของการออกแบบบัญชีปัจจุบัน ส่วนนี้จะบริการเป็นการทบทวนของบัญชีบน Ethereum และวิธีที่ธุรกรรมของพวกเขาถูกตรวจสอบและดำเนินการ
บัญชี Ethereum เป็นส่วนประกอบที่มียอดเงิน ether (ETH) และความสามารถในการส่งธุรกรรมบนบล็อกเชน Ethereum พวกเขาถูกแทนด้วย "ที่อยู่" ฐานสิบหก ตัวอักษรฮีกซาเดึกซิมัล ซึ่งทำหน้าที่เป็นตัวชี้ที่ไม่ซ้ำซากของสิทธิ์การถือครองและธุรกรรมของบัญชี
ที่อยู่ทำหน้าที่เสมือนกุญแจเข้าสู่ต้นสถานการณ์บล็อกเชน โหนดใบไม้ของต้นสถานการณ์นี้คือโครงสร้างข้อมูลบัญชีซึ่งสามารถถอดแยกเป็นสี่ฟิลด์ได้
เนื้อหาของสี่ฟิลด์เหล่านี้ถูกใช้ในการกำหนดประเภทของบัญชีและในที่สุดก็ไปสู่การกำหนดขอบเขตของความสามารถของมัน ดังนั้น ประเภทของบัญชี Ethereum มีสองประเภท:
EOAs มีฟิลด์ codeHash และ storageHash ที่ว่างเปล่าและสามารถควบคุมได้โดยทุกคนที่มีคีย์ส่วนตัวเท่านั้น ที่อยู่ของพวกเขาสามารถรับได้จากคีย์สาธารณะที่เกี่ยวข้องโดยนําหน้า "0x" เป็นอักขระยี่สิบตัวสุดท้ายของแฮช keccak-256 ของคีย์สาธารณะของบัญชี
ธุรกรรมของพวกเขาเป็นระบบดึงเอาเท่านั้นและขึ้นอยู่กับตรรกะของรหัสที่พวกเขาประยุกต์ใช้
ตั้งแต่บัญชีเหล่านี้สามารถควบคุมโดยเนื้อหาโค้ดของพวกเขาเท่านั้น ดังนั้นพวกเขาไม่มีความจำเป็นต้องใช้กุญแจส่วนตัวและมีเพียงกุญแจสาธารณะเท่านั้น ดังนั้น ผู้ตัวแทนใด ๆ ที่มีความสามารถในการอัปเดต/เปลี่ยนโค้ดของบัญชีสัญญา จะสามารถเข้าถึงยอดคงเหลือของมันได้
ที่อยู่ของ CA ได้รับการสร้างขึ้นจากที่อยู่ผู้สร้างและ nonce ของมันจนถึงจุดที่สัญญาถูกติดตั้ง
ธุรกรรม
เร็ว ๆ นี้เราได้อธิบายบัญชีเป็นสิ่งที่มีความสามารถในการส่งธุรกรรมข้าม Ethereum ดังนั้นเราสามารถเข้าใจได้ว่าจุดประสงค์หลักของบัญชีคือการส่งและรับธุรกรรม ในขณะที่บล็อกเชนทำหน้าที่เป็นสมุดรายชื่อที่บันทึกประวัติธุรกรรมและอธิบายวิธีการเปลี่ยนแปลงเขตข้อมูลบัญชีตามกฎหมายที่อธิบายไว้ในข้อกำหนดโปรโตคอลบล็อกเชน
ดังนั้น "ธุรกรรม" เหล่านี้คืออะไร?
ธุรกรรมคือการดำเนินการที่ส่งมาจากบัญชี ซึ่งทำให้เกิดการเปลี่ยนแปลงใน “สถานะ” ของเครือข่าย พวกเขาคือคำสั่งที่ถูกเข้ารหัสด้วยวิธีการสัญลักษณ์จากบัญชี ซึ่งส่งผลให้เกิดการอัพเดตสถานะทั่วเครือข่ายเมื่อถูกปฏิบัติ
การได้รับอนุญาตโดยไม่จำเป็นต้องเสียค่าสิ่งที่ผิดหวังเกิดขึ้น การจัดการกับสิ่งเหล่านี้จำเป็นต้องกำหนดหลักเกณฑ์ที่เข้มงวด (หรือกฎความถูกต้อง) สำหรับการปฏิสัมพันธ์ในสภาวะเช่นนี้
ในบริบทนี้ ธุรกรรมจะต้องปฏิบัติตามกฎความถูกต้องบางอย่างเพื่อให้ถือว่าถูกต้องและปฏิบัติ ส่วนใหญ่กฎความถูกต้องเหล่านี้ถูกนำมาปรับใช้ผ่านข้อจำกัดที่ตั้งไว้บนบัญชีที่ส่งธุรกรรม และเปลี่ยนแปลงตามประเภทของบัญชี
บน Ethereum บัญชีผู้ใช้จะถูกปรับแต่งให้ใช้งานง่าย เนื่องจากมีการติดต่อกับผู้ใช้สุดท้าย พวกเขาสามารถส่งธุรกรรมในลักษณะที่เฉพาะเจาะจงและทำงานอิสระได้อย่างสมบูรณ์ พวกเขายังสามารถสร้างขึ้นในรูปแบบท้องถิ่น วิธีที่พบบ่อยคือการใช้ผู้ให้บริการกระเป๋าเงิน เช่น MetaMask, Rainbow, Rabby เป็นต้น
อีกด้านหนึ่ง บัญชีสัญญาสามารถส่งธุรกรรมที่ได้รับอนุญาตจากตรรกะของตัวเองเท่านั้น ตามคำเรียกเข้ามา นอกจากนี้ สามารถสร้างได้เฉพาะโดย EOA ที่มียอดเงินเพียงพอในการชำระเงินสำหรับการจัดเก็บสถานะของมัน
คำอธิบายระดับสูงกว่านั้นคือ EOAs สามารถเก็บยอดคงเหลือได้เท่านั้น ในขณะที่ CAs สามารถเก็บยอดคงเหลือและตรรกะที่กำหนดวิธีการใช้เงินได้
คุณสมบัติเหล่านี้เกิดจากพารามิเตอร์ตรรกะต่อไปนี้ที่กำหนดกฎเกณฑ์ในการดำเนินการของบัญชีที่ต้องปฏิบัติ
พารามิเตอร์เหล่านี้ถูกออกแบบให้เป็นแบบเคร่งครัดสำหรับบัญชีผู้ใช้เท่านั้น:
โดยทั่วไปแล้ว ตรรกะการดำเนินการของ EOAs จำกัดพวกเขาให้ทำธุรกรรมหนึ่งต่อลายเซ็นต่อมูลค่า
ส่วนอื่น ๆ ก็มีความยืดหยุ่นมากขึ้นเกี่ยวกับพารามิเตอร์เหล่านี้:
ในกรณีที่สามารถปฏิบัติได้มากที่สุด ตรรกะที่ใช้ในกรณีนี้คือ แผนการลายเซ็นที่หลายอย่างที่ระบุว่าจำเป็นต้องมีลายเซ็นที่ถูกต้อง M ของ N (เมื่อ M < N) จากบัญชีที่เฉพาะเจาะจง (โดยทั่วไปจะเป็นบัญชีภายนอก) เพื่อให้การเปลี่ยนแปลงของตรรกะของ CA เป็นไปได้
ในการประเมินคุณลักษณะเหล่านี้ เราพบว่าทุกประเภทของบัญชีถูกออกแบบให้มีการตัดสินใจระหว่างความอิสระและความสามารถในการโปรแกรม
EOAs มีอิสระอย่างเต็มที่ แต่ความสามารถในการตั้งโปรแกรมได้จํากัด พวกเขาสามารถอนุมัติและส่งธุรกรรมได้ทุกเมื่อที่ต้องการ แต่ธุรกรรมเหล่านี้ต้องเป็นไปตามรูปแบบที่เข้มงวดจึงจะถือว่าถูกต้อง CA มีความสามารถในการตั้งโปรแกรมได้เต็มรูปแบบ (จํากัด โดยการออกแบบของ EVM เท่านั้น) แต่ความเป็นอิสระที่ จํากัด ธุรกรรมของพวกเขาไม่จําเป็นต้องทําตามรูปแบบที่เข้มงวดใด ๆ แต่สามารถส่งออกได้เนื่องจากตรรกะของพวกเขาถูกเรียกก่อน
ในหัวข้อย่อยต่อไปเราจะศึกษาผลกระทบของการเลือกออกแบบเหล่านี้เพื่อเข้าใจเต็มความหมายของการพิจารณาของแต่ละ EIP ที่ได้ถูกพูดถึงในซีรีส์นี้
ตอนนี้ที่เรามีความรู้ที่กระชับเล็กน้อยเกี่ยวกับความสามารถของบัญชีที่แตกต่างกัน เราสามารถระบุจุดขายของพวกเขาและปัญหาที่พวกเขานำเสนอต่อทั้งผู้ใช้และผู้พัฒนาบน Ethereum ได้อย่างง่ายดาย
เหมือนที่เรากล่าวไว้ก่อนหน้านี้ EOAs ถูกออกแบบให้เป็นบัญชีชั้นนำที่เน้นการใช้งานสำหรับผู้ใช้งานสุดท้าย แอปพลิเคชันถูกออกแบบให้สามารถปฏิสัมพันธ์กับบัญชีเหล่านี้ได้อย่างง่ายดาย ไม่มีความซับซ้อนเกือบจะไม่มีค่าใช้จ่ายในการสร้างบัญชีเหล่านี้ อย่างไรก็ตามความเรียบง่ายของมันมาพร้อมกับการสูญเสียความเป็นเอกลักษณ์อย่างมากเนื่องจากถูกออกแบบให้เป็นอัตรายากันอย่างเคร่งครัด
บางส่วนของความกังวลเกี่ยวกับพวกเขาคือ:
ไม่ใช่ทุกคนที่ต้องการ (หรือจะสามารถ) ถือ ETH เสมอ (ฉันหมายถึงดูการเคลื่อนไหวของราคานั้น) ดังนั้นวิธีแก้ปัญหาที่เป็นไปได้คือการอนุญาตให้มีสกุลเงินก๊าซหลายสกุล (ยากเกินไปแบ่งค่าคงที่มากเกินไปตามที่อธิบายไว้ในส่วน "สกุลเงิน" ที่นี่), หรือเพื่ออนุญาตให้การชำระเงินในรูปแบบแก๊สสามารถเรียกเก็บได้โดยบัญชีอื่นที่ไม่ใช่บัญชีต้นทางของธุรกรรม
ในอีกด้านหนึ่งของสเปกตรัมบัญชี CA กําหนดเป้าหมายนักพัฒนาและฐานผู้ใช้ด้านเทคนิคมากขึ้น พวกเขาทําหน้าที่เป็นยานพาหนะสําหรับสัญญาอัจฉริยะ (เช่นเราถือว่าสัญญาอัจฉริยะเป็นเนื้อหาตรรกะหรือรหัสที่มีอยู่) และสามารถใช้รูปแบบธุรกรรมใหม่ตามที่เปิดใช้งานโดย EVM
อย่างไรก็ตาม สำหรับคุณลักษณะเหล่านี้ทั้งหมดพวกเขาก็คือบัญชีชั้นสองที่ได้รับการมองว่าเป็นสิ่งที่ยิ่งใหญ่แต่ก็ไม่มีอิสระ บางข้อเสียของพวกเขามีดังนี้:
หลังจากที่ได้ทบทวนการเลือกออกแบบที่นำไปสู่ปัญหาที่กำหนดไว้ในส่วนย่อยนี้แล้ว เราสามารถดำเนินการประเมินวิธีการที่เสนอ
แนวคิดของนามธรรมบัญชี (ผ่านบัญชีอัจฉริยะอย่างน้อย) เป็นส่วนสําคัญของแผนงานของ Ethereum มาโดยตลอด ตํานานคือความซับซ้อนโดยรอบการใช้งานขู่ว่าจะชะลอการเปิดตัวของ Ethereum ต่อไปดังนั้นจึงถูกทิ้งสําหรับการออกแบบปัจจุบันด้วยบัญชีที่แตกต่างกันซึ่งมีฟังก์ชันการทํางานที่แตกต่างกัน มันล่าช้าอีกครั้งโดยการมุ่งเน้นของ Ethereum ใน The Merge และตอนนี้กําลังกลับมาเป็นส่วนหนึ่งของการอัพเกรดครั้งใหญ่ครั้งต่อไปของเครือข่าย Pectra อย่างไรก็ตามความซับซ้อนของมันยังคงถือเป็นข้อเสียเปรียบที่สําคัญที่ป้องกันไม่ให้มีการประดิษฐานโดยเฉพาะอย่างยิ่งเมื่อ Ethereum ได้เปลี่ยนไปใช้แผนงานที่มีการรวบรวมเป็นศูนย์กลาง
ความต้องการขณะนี้เป็นสองส่วน:
อย่างโดยปริยายแนวคิดนี้เล่นบทบาทที่สำคัญมากในบริบทของการสรุปบัญชีและความสามารถในการทำงานร่วมกันของเชื่อมโยง อย่างไรก็ตามขอบเขตของเราในรายงานนี้ จำกัดไว้ที่การดำเนินการทางเทคนิคที่กระทำเพื่อให้เกิดการสรุปบัญชีเอง
แนวคิดการสรุปบัญชีมีเป้าหมายที่จะรวมคุณสมบัติที่ดีที่สุดของบัญชีภายในและบัญชีภายนอกเข้าด้วยกันในมาตรฐานบัญชีใหม่ - บัญชีอัจฉริยะ ซึ่งอนุญาตให้มีการแยกแยะสมบัติของบัญชีใดๆ เป็นเต็มหรือบางส่วนเป็นตัวบางอย่างไปยังตรรกะการตรวจสอบและการกระทำ ดังนั้นบัญชีสามารถกำหนดกฎความถูกต้องของตนเองได้ - ตามที่ EVM อนุญาต - อย่างเช่นบัญชีสัญญา ในขณะที่ยังคงเป็นอิสระอย่างเต็มที่เหมือนกับบัญชีที่เป็นเจ้าของภายนอก
มักมีความสับสนเกี่ยวกับความแตกต่างระหว่างบัญชีฉลาดและกระเป๋าเงินสมาร์ทคอนแทร็ค ดังนั้นเราจะอธิบายโดยชัดเจนถึงความแตกต่างเหล่านี้ด้านล่าง
การทำให้กระเป๋าเงินสมาร์ทคอนแทรกต์เข้าสู่การค้าหลายๆ ด้านทำให้ผู้ใช้ที่ไม่เชี่ยวชาญด้านเทคนิคมีโอกาสใช้ประโยชน์จากคุณสมบัติที่พวกเขามี อย่างไรก็ตาม พวกเขายังคงเผชิญกับอุปสรรค์ที่เกี่ยวข้องกับ CAs
กลับไปที่การสนทนา ก่อนหน้านี้เราได้กล่าวถึงพารามิเตอร์ที่ใช้ในการกําหนดกฎความถูกต้องของการทําธุรกรรมของบัญชี:
ค่าของพารามิเตอร์ 4 ค่าแรกสามารถเรียกรวมกันได้เป็นตรรกะการตรวจสอบบัญชี ซึ่งเป็นการตรวจสอบที่เกิดขึ้นก่อนที่การดำเนินการของธุรกรรมจะเริ่มต้น
พารามิเตอร์สุดท้ายกําหนดวิธีดําเนินการธุรกรรมเพื่อดําเนินการต่อ
ในการแนะนำ เราได้ให้ภาพรวมระดับสูงของทิวทัศน์ AA ปัจจุบันในรูปแบบของการจัดประเภทของต่าง ๆ สำหรับการออกแบบที่เสนออย่างต่าง ๆ เราจะใส่ใจกับคลาสแรกของ sol ชั่วคราวสำหรับการลงทุนของ Ethereum's account dilemma- EOA programmability
เรื่องที่น่าสนใจที่สุดของ Ethereum คือระบบนิเวศ DeFi ที่ยังเป็นเด็ก ๆ แต่มีชีวิตชีวาที่มีหลากหลายแอปพลิเคชันที่กระจายแบบไม่มีผู้ควบคุม ซึ่งเป็นจุดรวมเงินสำคัญ ส่วนใหญ่ของ DApps เหล่านี้ถูกจัดเตรียมให้บริการ EOAs ดังนั้นพวกเขายากที่จะเชื่อมต่อกับ CAs และบัญชีสมาร์ท แม้ว่ากระเป๋าสมาร์ทคอนแทร็คจะช่วย CAs ในกรณีนี้ แต่พวกเขามาพร้อมกับข้อจำกัดของตัวเองและ UX ที่แตกต่างกันอย่างสิ้นเชิง
โซลูชันชั่วคราวที่กําลังสํารวจในขณะที่ทั้ง DApps และผู้ให้บริการกระเป๋าเงินคุ้นเคยกับมาตรฐานบัญชีอัจฉริยะคือการให้การปรับปรุงชั่วคราวแก่ EOAs ที่ช่วยให้พวกเขาสามารถเอาชนะข้อ จํากัด ที่กําหนดไว้ส่วนใหญ่ไม่ว่าจะเป็นการตรวจสอบความถูกต้องหรือตรรกะการดําเนินการ
ต่อไปนี้เราจะพิจารณาข้อมูลสเปคของ EIP สามฉบับที่ให้เส้นทางที่สามารถดำเนินการไปยัง EOA programmability ได้; จากที่รู้จักน้อยกว่าEIP 5806, สำหรับคนที่ทะเยอทะยานEIP 3074และในที่สุดก็ถึงชัยชนะEIP 7702.
ข้อเสนอนี้มีจุดมุ่งหมายที่จะนำความสามารถมากขึ้นสู่มาตรฐาน EOA โดยการอนุญาตให้มันทำการเรียก delegate ไปยังตัวต้นแบบบัญชีของสัญญา (สัญญาอัจฉริยะของมัน) ซึ่งทำให้สัญญาอัจฉริยะถูกดำเนินการในบริบทของ EOA ผู้เรียกหรือก็คือ EOA ยังคงควบคุมตรรกะการตรวจสอบของมันในขณะที่ตรรกะการดำเนินการของมันถูกจัดการโดยตรรกะต้นแบบ CA ที่เกี่ยวข้อง
ก่อนที่เราจะดำเนินไปอีกต่อไป ให้เราไปเที่ยววัยระวังของวงการวิวัฒนาการของ Ethereum กันEIP-7.
EIP-7 ข้อเสนอให้สร้างคำสั่ง 0xf4/DELEgateCALL ซึ่งใช้ส่งการโทรข้อความเข้าบัญชีหลักด้วยตรรกะของบัญชีรอง พร้อมทั้งรักษาค่าของฟิลด์ [sender] และ [value] ของบัญชีหลัก
กล่าวอีกอย่าง บัญชีหลัก “รับมรดก” (หรือยืมถ้าคุณต้องการ) ตรรกะของบัญชีย่อมสมความกับบัญชีรองเป็นระยะเวลาบาง ๆ ตามที่ระบุไว้ในการเรียกข้อความ ดังนั้นตรรกะของบัญชีหลักก็จะถูกดำเนินการในบริบทของบัญชรอง
รหัสโอป๊คนี้ช่วยให้นักพัฒนา dApp สามารถแบ่งตามตัวแยกต่างๆของโลจิกของแอปพลิเคชันของพวกเขาได้ โดยยังคงมีความเชื่อมโยงกัน เพื่อให้สามารถหลีกเลี่ยงข้อจำกัดขนาดโค้ดและข้อจำกัดของแก๊สได้อย่างง่ายดาย
ดี ดังนั้น delegate calls ทำให้ CAs สามารถทำงานร่วมกันได้อย่างไรบ้าง? นั่นคือ EIP-5806 ใช้ EIP-7 เป็นแรงบันดาลใจเพื่อ предложитьการขยายฟังก์ชั่นของ delegate call ไปสู่ EOAs ด้วย; กล่าวคือ ให้เราให้ EOAs สามารถทำงานร่วมกับ CAs ได้เช่นกัน เพราะทำไมไม่呢
EIP 5806 นำเสนอเป็นวิธีใหม่รองรับตามมาตรฐาน EIP-2718ประเภทการทำธุรกรรมที่ถูกแพ็คตามนี้:
rlp([chainID, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, signature_y_parity, signature_r, signature_s]).
ธุรกรรมเหล่านี้ถูกออกแบบมาเพื่อให้ฟิลด์ [to] – ซึ่งแทนที่อยู่ผู้รับ – สามารถรับเฉพาะที่อยู่เป็นข้อมูลขนาด 20 ไบต์เท่านั้น ซึ่งทำให้ผู้ส่งไม่สามารถใช้คำสั่ง CREATE ได้
แรงจูงใจของทุกส่วนประกอบของระบบ RLP คือดังต่อไปนี้:
ในขณะที่การห่อหุ้มการทำธุรกรรม EIP-5806 ในซอง EIP-2718 ช่วยให้เข้ากันได้ยิ่งกับเวอร์ชันย้อนหลังได้มาก การใช้งาน EOA ไม่เทียบเท่ากับ CA ดังนั้นจำเป็นต้องกำหนดข้อจำกัดบางอย่างในวิธีที่ EOA ใช้ delegate call เพื่อป้องกันการเสียหายที่ไม่เปลี่ยนแปลง
การจำกัดเหล่านี้เป็นเป้าหมายของ opcodes ต่อไปนี้:
ความสามารถหลักของ EIP 5806 คือการสรุปการดำเนินการสำหรับ EOAs โดยให้ EOAs สามารถที่จะเชื่อถือได้ในการติดต่อสื่อสารกับสัญญาอัจฉริยะเกินกว่าการเรียกใช้งานเรียบง่าย ๆ ไปยังตรรกะของพวกเขา ซึ่งให้คุณสมบัติเช่น:
การเปลี่ยนแปลงที่เสนอโดย EIP-5806 ในขณะที่เปิดใช้คุณลักษณะที่จำเป็น ไม่ได้เป็นสิ่งใหม่เป็นพิเศษมาก; ความเป็นอยู่ของมันขึ้นอยู่กับ EIP-7 ที่ทำงานอยู่แล้ว สิ่งนี้ทำให้มันผ่านไปบางส่วนของอุปสรรคที่อาจเกิดขึ้นได้หลายอย่าง
หนึ่งในข้อกังวลหลักที่เปล่งออกมาในช่วงแรกคือความเสี่ยงที่อาจเกิดขึ้นในการอนุญาตให้ EOAs เข้าถึงพื้นที่เก็บข้อมูลและเปลี่ยนแปลงได้เช่นเดียวกับ CA ในปัจจุบัน สิ่งนี้ทําลายความแปรปรวนของเครือข่ายจํานวนมากเกี่ยวกับวิธีที่ EOAs ทําธุรกรรมและได้รับการจัดการโดยการแนะนําข้อ จํากัด ที่กล่าวถึงในส่วนย่อยก่อนหน้า
การวิพากษ์วิจารณ์ครั้งที่สอง (ซึ่งเป็นดาบสองคมเล็กน้อย) คือความเรียบง่ายของ EIP-5806 มีความรู้สึกบางอย่างว่ารางวัลเนื่องจากการยอมรับ EIP-5806 อาจไม่คุ้มค่ากับค่าใช้จ่ายเนื่องจากมันเปิดใช้งานเฉพาะการดําเนินการที่เป็นนามธรรมและไม่มากอื่น ๆ ข้อ จํากัด ความถูกต้องอื่น ๆ ทั้งหมดยังคงกําหนดเครือข่ายสําหรับ EOAs ซึ่งเลือกใช้ EIP-5806 ตรงกันข้ามกับ EIPs อื่น ๆ ที่ค่อนข้างคล้ายกันซึ่งเราพูดถึงในส่วนย่อยต่อไปนี้
EIP-3074 ข้อเสนอให้ EOAs สามารถมอบหมายงานการตรวจสอบส่วนใหญ่ของตนเองให้กับบัญชีสัญญาที่เชี่ยวชาญ เรียกว่า invokers โดยการใช้ตรรกะการอนุญาตของตัวหลักสำหรับรูปแบบของธุรกรรมที่เฉพาะเจาะจง
มันทำได้โดยการลงนามเข้ากันกับนโยบายการเข้าถึงของพวกเขาให้กับสัญญาผู้เรียกร้องซึ่งจากนั้นก็กลายเป็นความรับผิดที่กำหนดนโยบายการเข้าถึงของ EOA
EIP นี้เสนอให้เพิ่ม opcode สองตัวใหม่เข้าสู่ EVM:
รหัสนี้สองรหัสอนุญาตให้ EOA มอบหมายควบคุมไปยัง CA ที่กำหนดไว้ล่วงหน้า และเป็นได้อย่างนั้น โดยไม่ต้องแสดงสัญญาและต้องรับผิดชอบต้นทุนและผลที่เกี่ยวข้องกับมัน
EIP-3074 ช่วยให้ธุรกรรมสามารถใช้รูปแบบการเซ็นต์ [MAGIC] เพื่อป้องกันการชนกับรูปแบบการเซ็นต์ธุรกรรมอื่น ๆ บัญชีที่ใช้งานอยู่เพื่อส่งคำสั่ง [AUTHCALL] ถูกกำหนดให้เป็นฟิลด์ตัวแปรบริบทที่ชื่อ [authorized] ที่มีอยู่เฉพาะในธุรกรรมเดียวและต้องถูกกำหนดใหม่สำหรับ [AUTHCALL] ใหม่ทุกครั้ง
ก่อนที่จะตอบความซับซ้อนของแต่ละคำสั่งโค้ด นี่คือสิ่งที่เกี่ยวข้องกับธุรกรรม EIP-3074:
สัญญา Invoker จะได้รับข้อความ [AUTH] พร้อมค่า [COMMIT] จาก [authority] โดยค่านี้จะกำหนดข้อจำกัดที่บัญชีต้องการวางไว้ในการดำเนินการ [AUTHCALL] ของ [authorized]
ดังนั้น invokers มีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่า [contract_code] ที่กําหนดไว้ในบัญชี [ที่ได้รับอนุญาต] นั้นไม่เป็นอันตรายและมีความสามารถในการตอบสนองตัวแปรที่วางไว้โดยบัญชีการลงนามหลักในค่า [COMMIT]
โอ๊ปโค้ด [AUTH] มีอินพุตสามสต็อก; หรือง่ายๆ ก็คือถูกกำหนดโดยอินพุตสามอย่างที่คำนวณเป็นเอาต์พุตเดียว อินพุตเหล่านี้คือ:
ข้อมูลสองข้อมูลล่าสุดถูกใช้ในการอธิบายช่วงของหน่วยความจำที่สามารถแก้ไขได้ตั้งแต่ 0 ถึง 97 เมื่อ:
ตัวแปร [yParity], [r] และ [s] ถูกตีความรวมกันเป็นลายเซ็น ECDSA, [magic], บนเส้น曲 secp256k1 ของข้อความ:
[keccak256 (MAGIC || chainID || nonce || ที่อยู่ผู้เรียก || COMMIT)]
ที่:
หากลายเซ็นที่คำนวณได้ถูกต้องและที่อยู่ของผู้เซ็นเท่ากับ [authority] ฟิลด์ [authorized] จะถูกอัปเดตเป็นค่าที่ให้มาจาก [authority] หากไม่เป็นไปตามเงื่อนไขเหล่านี้ใด ๆ [authorized] ฟิลด์ยังคงเป็นไปตามสถานะก่อนหน้าของมันหรือเป็นค่าที่ไม่ได้ตั้งไว้
ค่าแก๊สสำหรับตัวดำเนินการนี้ถูกคำนวณเป็นผลรวมของ:
[AUTH] ถูกนําไปใช้เพื่อไม่ปรับเปลี่ยนหน่วยความจํา และใช้ค่าของ [authority] เป็นอาร์กิวเมนต์เพื่อให้การตรวจสอบค่าจากลายเซ็นที่ให้มาเป็นเรื่องเล็กน้อย
โอปโคด [AUTHCALL] มีการป้อนข้อมูลสามารถของรูปแบบชุดเดียวที่ใช้ในการคำนวณผลลัพธ์ของสามารถชุดเดียว
มันมีตรรกะเดียวกับ [CALL] opcode กล่าวคือ; ใช้เพื่อส่งข้อความเรียกเข้าบัญชีและเรียกใช้ตรรกะเฉพาะในสัญญา ค่าเบี่ยงเบนเพียงอย่างเดียวในตรรกะของพวกเขาคือ [AUTHCALL] ได้รับการออกแบบมาเพื่อตั้งค่าของ [CALLER] ก่อนดําเนินการ
ดังนั้น [AUTHCALL] ใช้โดย [authority] เพื่อเรียกใช้พฤติกรรมที่เกี่ยวข้องกับ [authorized] โดยมีการตรวจสอบตามตรรกะต่อไปนี้:
ค่าแก๊สสำหรับ [AUTHCALL] คำนวณเป็นผลรวมของ:
ข้อมูลที่ส่งคืนจาก [AUTHCALL] สามารถเข้าถึงได้ผ่าน:
เพื่อรวมทุกอย่างพร้อมกับการพูดน้อยลงเกี่ยวกับเทคโนโลยี ธุรกรรม Ethereum 通常ระบุค่าสองค่า
ใน EOAs ตามที่กล่าวไว้ก่อนหน้านี้ การอนุญาตเชื่อมต่อกับการดำเนินการเป็นสิ่งที่แนบแน่นกัน นั่นคือ (tx.origin == msg.sender) สัญญาต่อเนื่องที่เรียบง่ายนี้เป็นสาเหตุของส่วนใหญ่ของปัญหาที่เราอธิบายไว้ในส่วนย่อย "บัญชีและความถูกต้องของธุรกรรม" ในรายงานนี้
ข้อความ [AUTH] จาก [authority] ช่วยให้สามารถเบียดเทียบฟังก์ชัน tx.origin ไปยัง [authorized] ได้ โดยยังคงเป็น msg.sender อย่างไรก็ตาม มันยังช่วยให้กำหนดข้อจำกัดในสิทธิพิเศษนี้โดยใช้ค่า [COMMIT] ได้
[AUTHCALL] จากนั้นอนุญาตให้ [authorized] เข้าถึงตรรกะของสัญญา โดยใช้ [invoker] เป็นผู้กลางเพื่อให้แน่ใจว่าสัญญาที่ต้องการเข้าถึงไม่เป็นอันตราย กล่าวคือ สำหรับทุก [AUTHCALL] [authorized] ต้องระบุ [invoker] โดยเฉพาะสำหรับ [COMMIT] ของพวกเขา
EIP 3074 เป็นผู้รับผิดชอบหลักในการอนุญาตให้ EOAs มอบหมายตัวตนการอนุญาตของพวกเขาให้กับบัญชีที่แตกต่างกัน อย่างไรก็ตามการออกแบบเปิดของมันช่วยให้สามารถทำได้มากขึ้นในบริบทที่แตกต่างกัน
ตรรกะการตรวจสอบทั้งหมดของ EOA สามารถสรุปได้โดยการใช้กั้น/นวัตกรรมต่าง ๆ กับผู้เรียกใช้ตามที่จำเป็น เรื่องที่เป็นไปได้บางอย่างของการออกแบบขึ้นอยู่กับตรรกะเป้าหมายของพวกเขา
นอกจากนี้ ตรรกะการดำเนินการถูกสรุปอย่างสร้างสรรค์ หลังจากที่ผู้เรียกใช้ (ซึ่งเป็น CA) ตอนนี้รับผิดชอบในการดำเนินการร้องขอธุรกรรมแทน EOA
การอ้างหนึ่งในผู้เขียน: “ฉันไม่คาดหวังว่ากระเป๋าเงินจะเปิดเผยฟังก์ชันในการลงลายเซ็นกับผู้เรียกร้องอย่างอิสระ …”. ปัญหาที่ใหญ่ที่สุดที่ถูกตั้งคำถามโดยการดำเนินการ 3074 คือนวัตกรรมที่ปราศจากมันจะมีแนวโน้มที่จะเข้ากันได้และการไหลที่เป็นเอกสิทธิ์; อย่างที่มีการวิวัฒนาการปัจจุบันของ Ethereum’s MEV และ PBS markets.
โดยค่าเริ่มต้นสัญญา invoker จะต้องได้รับการตรวจสอบอย่างมากเพื่อป้องกันการโจมตีที่เลวร้ายยิ่งกว่าที่เป็นไปได้ในปัจจุบัน สิ่งนี้จะมีแนวโน้มที่จะเป็นระบบนิเวศอย่างหลีกเลี่ยงไม่ได้ซึ่งสัญญา invoker จํานวนหนึ่งที่พัฒนาโดยผู้มีอิทธิพลจะถูกนํามาใช้เป็นค่าเริ่มต้นสําหรับนักพัฒนากระเป๋าเงิน ดังนั้นจึงเป็นการแลกเปลี่ยนระหว่างการใช้เส้นทางการกระจายอํานาจอย่างหนักในการตรวจสอบและสนับสนุนสัญญา invoker อย่างต่อเนื่องซึ่งมีความเสี่ยงต่อความปลอดภัยของผู้ใช้ หรือเพียงแค่ใช้สัญญา Invoker จากแหล่งที่จัดตั้งขึ้นและมีชื่อเสียงพร้อมการรับประกันที่ดีกว่าสําหรับความปลอดภัยของผู้ใช้และการกํากับดูแลความปลอดภัยของสัญญาน้อยลง
ด้านอื่น ๆ ของจุดนี้คือฟังก์ชันต้นทุนที่เกี่ยวข้องกับการออกแบบ การตรวจสอบ และการตลาดอินโวกเกอร์ที่ทำงานได้และปลอดภัย ทีมเล็กๆ จะเสมอไปด้วยองค์กรที่ใหญ่กว่า - โดยเฉพาะในด้านการตลาด - ซึ่งมีชื่อเสียงที่เป็นที่ยอมรับบ้าง แม้ว่าผลิตภัณฑ์ของพวกเขาจะดีกว่า
EIP-3074 ดึงดูดรูปแบบลายเซ็น ECDSA เนื่องจากยังคงถือว่าถูกต้องมากกว่ารูปแบบการอนุญาตที่แนะนําผ่านผู้เรียกใช้ ในขณะที่มีข้อโต้แย้งว่าความต้านทานควอนตัมไม่ใช่ปัญหาที่ชัดเจนในขณะนี้และมีความเสี่ยงที่เลวร้ายกว่ามากในอนาคตที่ ECDSA เสียหายได้ เป้าหมายที่ค่อนข้างไม่มีสถานะของ Ethereum คือการนําหน้าปัญหาดังกล่าวเสมอ อาจเสียสละควอนตัมและการเซ็นเซอร์สําหรับการปรับปรุงเล็กน้อยใน UX อาจไม่ใช่ตัวเลือกที่ดีที่สุดในอนาคตอันใกล้
จุดอื่น ๆ ในอาร์กิวเมนต์เกี่ยวกับความเข้ากันได้ในอนาคตคือในขณะที่กำไรจาก 3074 ยังไม่ได้ถูกประเมิน ERC-4337 (ซึ่งไม่ต้องการการเปลี่ยนแปลงโปรโตคอลใด ๆ) มีตลาดที่ดีมากแล้ว ดังนั้นคุณต้องเข้ากันได้กับมันเช่นกันเพื่อหลีกเลี่ยงการแบ่งส่วนของระบบนิเวศ
แม้ว่าจะมีแผนการสรุปบัญชีภายในระบบ คำสั่ง [AUTH] และ [AUTHCALL] ใน EVM ก็จะกลายเป็นล้าสมัยในที่สุด ซึ่งทำให้ Ethereum ต้องมีหนี้สินทางเทคนิคมากมายเพื่อส่งมอบการปรับปรุง UX ที่ไม่มีคุณค่าน้อย
หลังจากส่งข้อความ [AUTH] และมอบหมายควบคุม คาดว่า EOA จะหลีกเลี่ยงระบบการอนุมัติด้วยกุญแจส่วนตัวแบบปกติ เนื่องจากการส่งธุรกรรม “ปกติ” ทำให้การอนุญาตที่มอบหมายให้กับผู้เรียกใช้ทุกคนถูกเพิกถอน
ดังนั้น โครงร่าง ECDSA ยังคงเป็นเท่าเทียมกับการรับรองจากโครงร่างใดๆ ที่สัญญาที่เกี่ยวข้องอาจเปิดใช้งาน ซึ่งหมายความว่า การสูญเสียกุญแจส่วนตัวจะ导致การสูญเสียทั้งหมดของสินทรัพย์ในบัญชี
ข้อเสนอนี้เริ่มต้นจากการกำหนดเป็นรูปแบบที่เล็กน้อยของ EIP 3074 และไม่ได้หมายถึงเพื่อที่จะเป็นการอัปเดตให้กับมัน มันถูกเกิดขึ้นเพื่อแก้ไขปัญหาความไมประสงค์ของ EIP 3074 โดยเฉพาะอย่างยิ่งความกังวลเกี่ยวกับความไมเข้ากันได้กับระบบนิเวศ 4337 ที่กำลังพัฒนาและแนวคิดการสรุปบัญชี RIP 7560
วิธีการทำงานของมันคือการเพิ่มประเภทธุรกรรมที่เป็นไปตามมาตรฐาน EIP 2718 ใหม่ - [SET_CODE_TX_TYPE] - ซึ่งช่วยให้ EOA สามารถทำงานเป็นบัญชีสมาร์ทสำหรับธุรกรรมที่ระบุไว้ได้
การออกแบบนี้ทำให้มีคุณสมบัติเดียวกันกับ EIP 5806 และอื่น ๆ อีกบางอย่าง พร้อมทั้งยังเหมาะสมกับแผนถนนการสรุปบัญชีธรรมชาติและโครงการที่มีอยู่
EIP-7702 ช่วยให้ EOA สามารถ "นำเข้า" เนื้อหาของโค้ดของสัญญาผ่านการทำธุรกรรมที่เป็นไปตามมาตรฐาน [SET_CODE_TX_TYPE] 2718 ของรูปแบบ:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
โหลดซีพร้อมกับ EIP 5806 ทั้งหมด ยกเว้นว่ามันนำเสนอ "รายการการอนุญาต" รายการนี้เป็นลำดับของค่าที่มีรูปแบบเป็น
[[chain_id, address, nonce, y_parity, r, s], …]
ที่แต่ละตัวเรียกค่า [address] ในแต่ละตัว
ก่อนดําเนินการต่อฝ่ายที่เกี่ยวข้องใน SET_CODE_TX_TYPE ได้แก่ :
เมื่อ [authority] ลงนาม SET_CODE_TX_TYPE ที่ระบุ [address] จะสร้างตัวกำหนดการมอบหมาย นี่คือ "โปรแกรมชี้" ซึ่งทำให้คำขอการเรียกรหาโค้ดทั้งหมดเนื่องจากการกระทำของ [authority] ที่ทุกช่วงเวลาถูกนำไปสู่โค้ดที่สามารถสังเกตได้ของ [address]
สำหรับทุกคู่ [chain_id, address, nonce, y_parity, r, s] การไหลของตรรกะของธุรกรรมประเภท 7702 คือดังนี้:
ฮึก! เพื่อผูกมันกลับมา; EIP นี้ช่วยให้ EOAs ส่งธุรกรรมที่ตั้งตัวชี้ไปยังโค้ดของสัญญา ทำให้พวกเขาสามารถนำตรรกะนี้มาใช้เป็นของตัวเองในธุรกรรมต่อไปได้ ดังนั้นมันจึงแข็งแกร่งกว่า EIP 5806 เพราะมันช่วยให้ EOAs มีเนื้อหาของโค้ดได้ตลอดเวลาที่พวกเขาต้องการ (ไม่เหมือนกับ EIP 5806 ที่อนุญาตให้ EOAs ส่ง delegate-calls เท่านั้น)
หากว่าจะอ้างว่ามันไม่ใช่การสรุปอีกต่อไปเนื่องจาก EOA ทำงานกับตรรกะที่มันต้องการจะดำเนินการเอง แต่มันก็ยังไม่ใช่ "เจ้าของหลัก" ของตรรกะดังกล่าว นอกจากนี้มันไม่มีตรรกะอยู่ภายในโดยตรง เพียงแค่ระบุตัวชี้ชวนไปยังตรรกะ (เพื่อลดความซับซ้อนของการคำนวณ) ดังนั้นเราเรียกมันว่า การสรุปการดำเนินการ!
ในขณะที่ข้อกำหนด require(msg.sender == tx.origin) ถูกแตกต่างเพื่ออนุญาตให้สปอนเซอร์ตนเอง แต่ EIP ยังอนุญาตให้การผสานของตัวแทนการทำธุรกรรมที่ได้รับการสปอนเซอร์ อย่างไรก็ตาม ข้อจำกัดคือตัวแทนเช่นนี้ต้องมีระบบที่เกี่ยวข้องกับชื่อเสียงหรือฐานะเพื่อป้องกันการโจมตีเพื่อทำให้เสียหาย
EOAs สามารถชี้ไปยังส่วนที่เฉพาะของโค้ดบัญชีได้อย่างเดียว ดังนั้นเฉพาะตรรกะของส่วนนั้นที่สามารถใช้ได้ในบริบทของพวกเขาเท่านั้น
นี่ยังช่วยให้มีการมีคีย์ย่อยซึ่งทำให้เกิด "การลดระดับสิทธิ" ซึ่งจะทำให้ dAPPs บางอย่างมีการเข้าถึงยอดเงินในบัญชีภายใต้เงื่อนไขที่เฉพาะเจาะจง เช่น คุณสามารถนึกภาพถึงการอนุญาตให้ใช้ ERC-20 โทเคน แต่ไม่ใช้ ETH หรือใช้ได้สูงสุด 1% ของยอดคงเหลือต่อวัน หรือเชื่อมต่อเพียงกับแอปพลิเคชันที่เฉพาะเจาะจงเท่านั้น
ธุรกรรม EIP-7702 อาจอนุญาตให้ผู้ใช้เข้าถึง opcode CREATE2 และใช้เพื่อปรับใช้ bytecode ไปยังที่อยู่โดยไม่มีพารามิเตอร์ที่ จํากัด อื่น ๆ เช่นตรรกะตลาดค่าธรรมเนียม (เช่น EIP-1559 และ EIP-4844) สิ่งนี้ช่วยให้ที่อยู่สามารถกู้คืนและใช้ในเครื่องสถานะหลายเครื่องด้วย bytecode เดียวกันโดยที่บัญชีในแต่ละห่วงโซ่จะรับผิดชอบในการกําหนดพารามิเตอร์ตัวแปรบริบทอื่น ๆ
ในขณะที่ EIP-7702 ยังคงเป็นเหตุการณ์ล่าสุดมากมาย มีการออกแบบและทดสอบสำหรับความขึ้นอยู่กับขึ้นอยู่กับปัญหาและข้อเสียหายที่เป็นไปได้ แต่โมเดลขนาดเล็กที่ลดน้อย มีความยืดหยุ่นมากมาย และด้วยเหตุนี้ มีประโยชน์ในบริบทที่แตกต่าง อย่างไรก็ตาม มันทำให้เกิดการลักษณะที่ผิดและไม่สามารถย้อนกลับได้ทันที
บางส่วนของตรรกะของมันรวมถึง:
ผู้ใช้ส่วนใหญ่ไม่รู้เรื่องเนื้อหาที่อยู่ในบัญชี (หรือแม้แต่ความแตกต่างระหว่างบัญชีและที่อยู่!) ดังนั้นการอนุญาตให้การชนที่อยู่เกิดขึ้นหมายความว่า EOA สามารถปลอมตัวเป็น CA และดึงเงินของผู้ใช้ในระหว่างที่ยาวนานเพื่อขโมยเงินทั้งหมด EIP-3607 แก้ปัญหานี้โดยกำหนดว่าบัญชีที่มีโค้ดไม่ควรสามารถใช้เงินในยอดเงินของตนโดยใช้ตรรกะการอนุญาตของตนเอง อย่างไรก็ตาม EIP 7702 ทำลายสถานะอันตรายนี้เพื่อให้ EOAs สามารถเป็นอิสระได้แม้ว่าจะได้รับความสามารถในการโปรแกรมบางส่วน
การลงชื่อเซ็นที่ที่อยู่ของบัญชีแทนเนื้อหาของรหัสเป็นเรื่องที่คล้ายกับระบบของ 3074 กับผู้เรียกใช้ มันไม่ให้การรับรองที่เข้มงวดเกี่ยวกับความสอดคล้องของเนื้อหาของรหัสที่เกี่ยวข้องกันข้ามเชื่อมโยงเนื่องจากที่อยู่สามารถมีเนื้อหาของรหัสที่แตกต่างกันบนเชื่อมโยงที่แตกต่างกัน นี่หมายความว่า ที่อยู่ที่มีเนื้อหาของรหัสที่มีตรรกะเดียวกันบนเชื่อมโยงหนึ่งอาจเป็นฉุกเฉินหรือเป็นอันตรายอย่างสิ้นเชิงบนเชื่อมโยงอื่น ๆ และสิ่งนี้อาจทำให้เกิดความเสียหายต่อเงินทุนของผู้ใช้
EOAs ในรูปแบบปัจจุบันของพวกเขา วันนี้มีข้อจำกัดมากเนื่องจากพวกเขาไม่อนุญาตให้ผู้ใช้ใช้ประโยชน์จากคุณลักษณะในการเขียนโปรแกรมที่มีอยู่ใน EVM อย่างไรก็ตาม ในขณะที่มีเส้นทางต่าง ๆ ในการอัพเกรดบัญชี ตามที่เราได้กล่าวถึงในตอนเริ่มต้นของรายงานนี้ โซลูชันที่ถูกเลือกต้องรักษาหลักการของการเก็บรักษาตนเองอย่างปลอดภัยและปลอดภัยอีกทั้งการอัพเกรด EOA อาจมีผลกระทบต่อประสบการณ์ของผู้ใช้และนักพัฒนาแอปพลิเคชันอย่างมาก ดังนั้น ควรพิจารณาเสียงของผู้มีส่วนได้ส่วนเสียทั้งหมด
การอนุญาตให้บัญชี EOA ทำการเรียกใช้โค้ดในทุกลักษณะ ทำให้ความสามารถของบัญชีขยายตัวอย่างมาก แต่ความสามารถใหม่นี้มาพร้อมกับความเสี่ยงและความไม่แน่นอนที่สำคัญ การแก้ปัญหาเหล่านี้เป็นสิ่งสำคัญในการนำเสนอการอัปเกรดที่มีประโยชน์ที่สุดสำหรับผู้ใช้ Ethereum โดยไม่มีการโต้แย้งใด ๆ
วัฒนธรรมการสนทนาเปิดเผยของ Ethereum ทำให้มันเป็นที่ทดสอบที่ยอดเยี่ยมสำหรับนวัตกรรมเช่นนี้เนื่องจากเกือบทุกผลของการออกแบบถูกถอดรหัสอย่างละเอียดโดยผู้เชี่ยวชาญด้านวิชาการ การพิจารณาอย่างละเอียดนี้ควรช่วยลดความเสี่ยงของการกระทำผิดจากเหตุการณ์ที่ตรงกันข้าม
ปัจจุบัน EIP-7702 เป็นลูกโปสเตอร์สําหรับกลไกที่พยายามนําความสามารถในการตั้งโปรแกรม EVM มาสู่ EOAs โดยได้รับการทําเครื่องหมายว่าทดแทนสล็อตของ EIP 3074 ในการอัพเกรด Pectra มันสืบทอดการออกแบบแบบเปิดของกลไกของ 3074 ในขณะที่ลดพื้นผิวการโจมตี / ความเสี่ยงลงอย่างมาก นอกจากนี้ยังช่วยให้มากขึ้นโดยการหลีกเลี่ยงข้อ จํากัด ของ 3074 กับ opcodes บางประเภท
ในขณะที่ยังมีการปรับปรุงบางส่วนในการออกแบบของข้อเสนอ มันได้รับความเห็นชอบและสนับสนุนจากนักพัฒนาโดยเฉพาะอย่างยิ่งเนื่องจากมีการสนับสนุนโดยตรงจาก Vitalik แล้ว
ภายในชุมชนมีข้อเรียกร้องว่าวิธีการสรุปบัญชีนี้อาจดีกว่าสมาร์ทแอคเคาท์ บทวิจารณ์นี้เน้นว่าถนัดมากขึ้นและไม่ซับซ้อนเท่านั้น และว่า EOAs ถูกบัญทึกไว้แล้ว อย่างไรก็ตามเราต้องจำไว้ว่าความปลอดภัยในอนาคตของการต้านทานควอนตัมเมื่อไหร่ก็ตามทุกระดับของเครือข่าย Ethereum ความปลอดภัยที่เกี่ยวกับควอนตัมนี้ไม่เป็นไปตามหลักโมเดลบัญชีปัจจุบันเนื่องจากการใช้ระบบลายเซ็นของ ECDSA สำหรับการยินยอม EOA
ดังนั้น ความสามารถในการโปรแกรม EOA ควรถูกมองเป็นขั้นตอนบนเส้นทางสู่บัญชีสมาร์ทและไม่ใช่เป้าหมาย มันทำให้ EOA มีพลังมากขึ้นและทำให้ผู้ใช้และนักพัฒนามีประสบการณ์ที่ดีขึ้น พร้อมทั้งยังเหมาะสมกับเป้าหมายของแนวคิดการสรุปบัญชีสมาร์ท
ในรายงานถัดไปของเราเราจะสำรวจโครงการย้าย EOA เพื่อดูว่ามันเหมาะกับโครงสร้างแนวคิดการสรุปบัญชีอย่างไร อยู่รอดูต่อไป!
แนวคิดการสรุปบัญชีมุ่งหวังที่จะปรับปรุงประสบการณ์ของผู้ใช้และนักพัฒนาทั่วทั้งระบบ Ethereum พร้อมกับการทำให้ประสบการณ์ในเครือข่ายเป็นไปได้มากขึ้นและสนุกสนานกว่าสำหรับผู้ใช้ นอกจากนี้ยังเพิ่มความสามารถให้แก่นักพัฒนาในการทำสิ่งที่มีประสิทธิภาพมากขึ้นบน Ethereum และให้บริการแก่ผู้ใช้อย่างมีความหมายมากขึ้น
การจัดหมวดหมู่ของวิธีการสรุปบัญชีของเรามีดังนี้:
วิธีการนี้มีกลไกที่อนุญาตให้ EOA ทำการเปลี่ยนแปลงเป็น CA โดยไม่ต้องย้ายสินทรัพย์ เช่นEIP 7377และEIP 5003 (เมื่อพิจารณาร่วมกับ EIP 3074)
มีข้อเสนอต่าง ๆ ที่ผ่านมาเคยมีการสร้างบัญชีฉลาดและการสรุปบัญชีที่เข้มงวดที่ระดับโปรโตคอล;EIP-86และEIP-2938เป็นบางส่วนของสิ่งที่ถูกอ้างอิงมากขึ้น อย่างไรก็ตาม มีการต่อต้านอย่างมากเนื่องจากความซับซ้อนที่ถูกนำเข้ามาโดยการออกแบบนี้และความคิดเห็นข้างส่วนใหญ่ว่า Ethereum ยังไม่พร้อมสำหรับความซับซ้อนเช่นนี้
หลังจากที่วิทาลิคเปิดเผยเรื่องนี้อีกครั้งหลังจากการผสานERC-4337ได้ถูกเสนอเป็นรุ่นที่เปิดใช้เวอร์ชันของมาตรฐานบัญชีอัจฉริยะที่เป็นการเลือกเข้าใช้งาน เช่นกับโครงสร้าง PBS (Proposer-Builder Separation) สำหรับ MEV (Maximal Extractable Value) ดังนั้นผู้ใช้ที่ต้องการเข้าถึงประโยชน์ของบัญชีอัจฉริยะสามารถใช้ท่อไอพี ERC-4337 เพื่อนิยามตนเองในตรรกะของบัญชีและกฎความถูกต้องของธุรกรรมในโครงสร้างที่เรียกว่า UserOperation (หรือ UserOps สำหรับสั้น)
ERC 4337 นำประโยชน์ของบัญชีอัจฉริยะมาสู่ Ethereum ในปัจจุบันโดยไม่จำต้องตั้งเป็นกฎหมายอย่างซับซ้อน โดยทำหน้าที่เป็นทางเลือกนอกโปรโตคอลสำหรับบัญชีอัจฉริยะที่ตั้งเป็นกฎหมายอยู่ อย่างไรก็ตามนี้ไม่ได้หมายความว่าโครงสร้างพื้นฐานเป็นที่เหมาะสมในสถานะปัจจุบันของมันเอง เนื่องจากความซับซ้อนของมันยังคงเป็นจุดอ่อนที่สำคัญ
เพื่อจัดการกับความซับซ้อนนี้,RIP 7560ถูกเขียนขึ้นในรูปแบบที่ถูกบูรณาการเป็นเวอร์ชันศักยภาพเภท ERC 4337 ทั่ว Ethereum และ L2s ซึ่งทำให้รับมรดกจากระบบเครือข่ายการต้านสิบิลของเครือข่ายแทนที่จะต้องกำหนดชุดกฎระเบียบใหม่ (เช่น ERC 4337 ทำกับ ERC 7562)
ในรายงานนี้เราจะเน้นการสำรวจความสามารถในการโปรแกรม EOA การประเมินผลวิธีต่างๆ ที่อธิบายวิธีการแก้ไขปัญหาในบรรทัดนี้และอภิปรายคุณสมบัติและข้อเสียของแต่ละวิธีการ ในส่วนที่ 2 และ 3 ของซีรีย์นี้เราจะพูดถึงวิธีการแก้ไขปัญหาในกลุ่มอื่น ๆ สองของแนวคิดการสรุปบัญชีที่กำลังสำรวจอยู่ใน Ethereum
เพื่อหาสิ่งที่สามารถถอดรายละเอียดได้ เราต้องมีภาพรวม (บางส่วน) ของการออกแบบบัญชีปัจจุบัน ส่วนนี้จะบริการเป็นการทบทวนของบัญชีบน Ethereum และวิธีที่ธุรกรรมของพวกเขาถูกตรวจสอบและดำเนินการ
บัญชี Ethereum เป็นส่วนประกอบที่มียอดเงิน ether (ETH) และความสามารถในการส่งธุรกรรมบนบล็อกเชน Ethereum พวกเขาถูกแทนด้วย "ที่อยู่" ฐานสิบหก ตัวอักษรฮีกซาเดึกซิมัล ซึ่งทำหน้าที่เป็นตัวชี้ที่ไม่ซ้ำซากของสิทธิ์การถือครองและธุรกรรมของบัญชี
ที่อยู่ทำหน้าที่เสมือนกุญแจเข้าสู่ต้นสถานการณ์บล็อกเชน โหนดใบไม้ของต้นสถานการณ์นี้คือโครงสร้างข้อมูลบัญชีซึ่งสามารถถอดแยกเป็นสี่ฟิลด์ได้
เนื้อหาของสี่ฟิลด์เหล่านี้ถูกใช้ในการกำหนดประเภทของบัญชีและในที่สุดก็ไปสู่การกำหนดขอบเขตของความสามารถของมัน ดังนั้น ประเภทของบัญชี Ethereum มีสองประเภท:
EOAs มีฟิลด์ codeHash และ storageHash ที่ว่างเปล่าและสามารถควบคุมได้โดยทุกคนที่มีคีย์ส่วนตัวเท่านั้น ที่อยู่ของพวกเขาสามารถรับได้จากคีย์สาธารณะที่เกี่ยวข้องโดยนําหน้า "0x" เป็นอักขระยี่สิบตัวสุดท้ายของแฮช keccak-256 ของคีย์สาธารณะของบัญชี
ธุรกรรมของพวกเขาเป็นระบบดึงเอาเท่านั้นและขึ้นอยู่กับตรรกะของรหัสที่พวกเขาประยุกต์ใช้
ตั้งแต่บัญชีเหล่านี้สามารถควบคุมโดยเนื้อหาโค้ดของพวกเขาเท่านั้น ดังนั้นพวกเขาไม่มีความจำเป็นต้องใช้กุญแจส่วนตัวและมีเพียงกุญแจสาธารณะเท่านั้น ดังนั้น ผู้ตัวแทนใด ๆ ที่มีความสามารถในการอัปเดต/เปลี่ยนโค้ดของบัญชีสัญญา จะสามารถเข้าถึงยอดคงเหลือของมันได้
ที่อยู่ของ CA ได้รับการสร้างขึ้นจากที่อยู่ผู้สร้างและ nonce ของมันจนถึงจุดที่สัญญาถูกติดตั้ง
ธุรกรรม
เร็ว ๆ นี้เราได้อธิบายบัญชีเป็นสิ่งที่มีความสามารถในการส่งธุรกรรมข้าม Ethereum ดังนั้นเราสามารถเข้าใจได้ว่าจุดประสงค์หลักของบัญชีคือการส่งและรับธุรกรรม ในขณะที่บล็อกเชนทำหน้าที่เป็นสมุดรายชื่อที่บันทึกประวัติธุรกรรมและอธิบายวิธีการเปลี่ยนแปลงเขตข้อมูลบัญชีตามกฎหมายที่อธิบายไว้ในข้อกำหนดโปรโตคอลบล็อกเชน
ดังนั้น "ธุรกรรม" เหล่านี้คืออะไร?
ธุรกรรมคือการดำเนินการที่ส่งมาจากบัญชี ซึ่งทำให้เกิดการเปลี่ยนแปลงใน “สถานะ” ของเครือข่าย พวกเขาคือคำสั่งที่ถูกเข้ารหัสด้วยวิธีการสัญลักษณ์จากบัญชี ซึ่งส่งผลให้เกิดการอัพเดตสถานะทั่วเครือข่ายเมื่อถูกปฏิบัติ
การได้รับอนุญาตโดยไม่จำเป็นต้องเสียค่าสิ่งที่ผิดหวังเกิดขึ้น การจัดการกับสิ่งเหล่านี้จำเป็นต้องกำหนดหลักเกณฑ์ที่เข้มงวด (หรือกฎความถูกต้อง) สำหรับการปฏิสัมพันธ์ในสภาวะเช่นนี้
ในบริบทนี้ ธุรกรรมจะต้องปฏิบัติตามกฎความถูกต้องบางอย่างเพื่อให้ถือว่าถูกต้องและปฏิบัติ ส่วนใหญ่กฎความถูกต้องเหล่านี้ถูกนำมาปรับใช้ผ่านข้อจำกัดที่ตั้งไว้บนบัญชีที่ส่งธุรกรรม และเปลี่ยนแปลงตามประเภทของบัญชี
บน Ethereum บัญชีผู้ใช้จะถูกปรับแต่งให้ใช้งานง่าย เนื่องจากมีการติดต่อกับผู้ใช้สุดท้าย พวกเขาสามารถส่งธุรกรรมในลักษณะที่เฉพาะเจาะจงและทำงานอิสระได้อย่างสมบูรณ์ พวกเขายังสามารถสร้างขึ้นในรูปแบบท้องถิ่น วิธีที่พบบ่อยคือการใช้ผู้ให้บริการกระเป๋าเงิน เช่น MetaMask, Rainbow, Rabby เป็นต้น
อีกด้านหนึ่ง บัญชีสัญญาสามารถส่งธุรกรรมที่ได้รับอนุญาตจากตรรกะของตัวเองเท่านั้น ตามคำเรียกเข้ามา นอกจากนี้ สามารถสร้างได้เฉพาะโดย EOA ที่มียอดเงินเพียงพอในการชำระเงินสำหรับการจัดเก็บสถานะของมัน
คำอธิบายระดับสูงกว่านั้นคือ EOAs สามารถเก็บยอดคงเหลือได้เท่านั้น ในขณะที่ CAs สามารถเก็บยอดคงเหลือและตรรกะที่กำหนดวิธีการใช้เงินได้
คุณสมบัติเหล่านี้เกิดจากพารามิเตอร์ตรรกะต่อไปนี้ที่กำหนดกฎเกณฑ์ในการดำเนินการของบัญชีที่ต้องปฏิบัติ
พารามิเตอร์เหล่านี้ถูกออกแบบให้เป็นแบบเคร่งครัดสำหรับบัญชีผู้ใช้เท่านั้น:
โดยทั่วไปแล้ว ตรรกะการดำเนินการของ EOAs จำกัดพวกเขาให้ทำธุรกรรมหนึ่งต่อลายเซ็นต่อมูลค่า
ส่วนอื่น ๆ ก็มีความยืดหยุ่นมากขึ้นเกี่ยวกับพารามิเตอร์เหล่านี้:
ในกรณีที่สามารถปฏิบัติได้มากที่สุด ตรรกะที่ใช้ในกรณีนี้คือ แผนการลายเซ็นที่หลายอย่างที่ระบุว่าจำเป็นต้องมีลายเซ็นที่ถูกต้อง M ของ N (เมื่อ M < N) จากบัญชีที่เฉพาะเจาะจง (โดยทั่วไปจะเป็นบัญชีภายนอก) เพื่อให้การเปลี่ยนแปลงของตรรกะของ CA เป็นไปได้
ในการประเมินคุณลักษณะเหล่านี้ เราพบว่าทุกประเภทของบัญชีถูกออกแบบให้มีการตัดสินใจระหว่างความอิสระและความสามารถในการโปรแกรม
EOAs มีอิสระอย่างเต็มที่ แต่ความสามารถในการตั้งโปรแกรมได้จํากัด พวกเขาสามารถอนุมัติและส่งธุรกรรมได้ทุกเมื่อที่ต้องการ แต่ธุรกรรมเหล่านี้ต้องเป็นไปตามรูปแบบที่เข้มงวดจึงจะถือว่าถูกต้อง CA มีความสามารถในการตั้งโปรแกรมได้เต็มรูปแบบ (จํากัด โดยการออกแบบของ EVM เท่านั้น) แต่ความเป็นอิสระที่ จํากัด ธุรกรรมของพวกเขาไม่จําเป็นต้องทําตามรูปแบบที่เข้มงวดใด ๆ แต่สามารถส่งออกได้เนื่องจากตรรกะของพวกเขาถูกเรียกก่อน
ในหัวข้อย่อยต่อไปเราจะศึกษาผลกระทบของการเลือกออกแบบเหล่านี้เพื่อเข้าใจเต็มความหมายของการพิจารณาของแต่ละ EIP ที่ได้ถูกพูดถึงในซีรีส์นี้
ตอนนี้ที่เรามีความรู้ที่กระชับเล็กน้อยเกี่ยวกับความสามารถของบัญชีที่แตกต่างกัน เราสามารถระบุจุดขายของพวกเขาและปัญหาที่พวกเขานำเสนอต่อทั้งผู้ใช้และผู้พัฒนาบน Ethereum ได้อย่างง่ายดาย
เหมือนที่เรากล่าวไว้ก่อนหน้านี้ EOAs ถูกออกแบบให้เป็นบัญชีชั้นนำที่เน้นการใช้งานสำหรับผู้ใช้งานสุดท้าย แอปพลิเคชันถูกออกแบบให้สามารถปฏิสัมพันธ์กับบัญชีเหล่านี้ได้อย่างง่ายดาย ไม่มีความซับซ้อนเกือบจะไม่มีค่าใช้จ่ายในการสร้างบัญชีเหล่านี้ อย่างไรก็ตามความเรียบง่ายของมันมาพร้อมกับการสูญเสียความเป็นเอกลักษณ์อย่างมากเนื่องจากถูกออกแบบให้เป็นอัตรายากันอย่างเคร่งครัด
บางส่วนของความกังวลเกี่ยวกับพวกเขาคือ:
ไม่ใช่ทุกคนที่ต้องการ (หรือจะสามารถ) ถือ ETH เสมอ (ฉันหมายถึงดูการเคลื่อนไหวของราคานั้น) ดังนั้นวิธีแก้ปัญหาที่เป็นไปได้คือการอนุญาตให้มีสกุลเงินก๊าซหลายสกุล (ยากเกินไปแบ่งค่าคงที่มากเกินไปตามที่อธิบายไว้ในส่วน "สกุลเงิน" ที่นี่), หรือเพื่ออนุญาตให้การชำระเงินในรูปแบบแก๊สสามารถเรียกเก็บได้โดยบัญชีอื่นที่ไม่ใช่บัญชีต้นทางของธุรกรรม
ในอีกด้านหนึ่งของสเปกตรัมบัญชี CA กําหนดเป้าหมายนักพัฒนาและฐานผู้ใช้ด้านเทคนิคมากขึ้น พวกเขาทําหน้าที่เป็นยานพาหนะสําหรับสัญญาอัจฉริยะ (เช่นเราถือว่าสัญญาอัจฉริยะเป็นเนื้อหาตรรกะหรือรหัสที่มีอยู่) และสามารถใช้รูปแบบธุรกรรมใหม่ตามที่เปิดใช้งานโดย EVM
อย่างไรก็ตาม สำหรับคุณลักษณะเหล่านี้ทั้งหมดพวกเขาก็คือบัญชีชั้นสองที่ได้รับการมองว่าเป็นสิ่งที่ยิ่งใหญ่แต่ก็ไม่มีอิสระ บางข้อเสียของพวกเขามีดังนี้:
หลังจากที่ได้ทบทวนการเลือกออกแบบที่นำไปสู่ปัญหาที่กำหนดไว้ในส่วนย่อยนี้แล้ว เราสามารถดำเนินการประเมินวิธีการที่เสนอ
แนวคิดของนามธรรมบัญชี (ผ่านบัญชีอัจฉริยะอย่างน้อย) เป็นส่วนสําคัญของแผนงานของ Ethereum มาโดยตลอด ตํานานคือความซับซ้อนโดยรอบการใช้งานขู่ว่าจะชะลอการเปิดตัวของ Ethereum ต่อไปดังนั้นจึงถูกทิ้งสําหรับการออกแบบปัจจุบันด้วยบัญชีที่แตกต่างกันซึ่งมีฟังก์ชันการทํางานที่แตกต่างกัน มันล่าช้าอีกครั้งโดยการมุ่งเน้นของ Ethereum ใน The Merge และตอนนี้กําลังกลับมาเป็นส่วนหนึ่งของการอัพเกรดครั้งใหญ่ครั้งต่อไปของเครือข่าย Pectra อย่างไรก็ตามความซับซ้อนของมันยังคงถือเป็นข้อเสียเปรียบที่สําคัญที่ป้องกันไม่ให้มีการประดิษฐานโดยเฉพาะอย่างยิ่งเมื่อ Ethereum ได้เปลี่ยนไปใช้แผนงานที่มีการรวบรวมเป็นศูนย์กลาง
ความต้องการขณะนี้เป็นสองส่วน:
อย่างโดยปริยายแนวคิดนี้เล่นบทบาทที่สำคัญมากในบริบทของการสรุปบัญชีและความสามารถในการทำงานร่วมกันของเชื่อมโยง อย่างไรก็ตามขอบเขตของเราในรายงานนี้ จำกัดไว้ที่การดำเนินการทางเทคนิคที่กระทำเพื่อให้เกิดการสรุปบัญชีเอง
แนวคิดการสรุปบัญชีมีเป้าหมายที่จะรวมคุณสมบัติที่ดีที่สุดของบัญชีภายในและบัญชีภายนอกเข้าด้วยกันในมาตรฐานบัญชีใหม่ - บัญชีอัจฉริยะ ซึ่งอนุญาตให้มีการแยกแยะสมบัติของบัญชีใดๆ เป็นเต็มหรือบางส่วนเป็นตัวบางอย่างไปยังตรรกะการตรวจสอบและการกระทำ ดังนั้นบัญชีสามารถกำหนดกฎความถูกต้องของตนเองได้ - ตามที่ EVM อนุญาต - อย่างเช่นบัญชีสัญญา ในขณะที่ยังคงเป็นอิสระอย่างเต็มที่เหมือนกับบัญชีที่เป็นเจ้าของภายนอก
มักมีความสับสนเกี่ยวกับความแตกต่างระหว่างบัญชีฉลาดและกระเป๋าเงินสมาร์ทคอนแทร็ค ดังนั้นเราจะอธิบายโดยชัดเจนถึงความแตกต่างเหล่านี้ด้านล่าง
การทำให้กระเป๋าเงินสมาร์ทคอนแทรกต์เข้าสู่การค้าหลายๆ ด้านทำให้ผู้ใช้ที่ไม่เชี่ยวชาญด้านเทคนิคมีโอกาสใช้ประโยชน์จากคุณสมบัติที่พวกเขามี อย่างไรก็ตาม พวกเขายังคงเผชิญกับอุปสรรค์ที่เกี่ยวข้องกับ CAs
กลับไปที่การสนทนา ก่อนหน้านี้เราได้กล่าวถึงพารามิเตอร์ที่ใช้ในการกําหนดกฎความถูกต้องของการทําธุรกรรมของบัญชี:
ค่าของพารามิเตอร์ 4 ค่าแรกสามารถเรียกรวมกันได้เป็นตรรกะการตรวจสอบบัญชี ซึ่งเป็นการตรวจสอบที่เกิดขึ้นก่อนที่การดำเนินการของธุรกรรมจะเริ่มต้น
พารามิเตอร์สุดท้ายกําหนดวิธีดําเนินการธุรกรรมเพื่อดําเนินการต่อ
ในการแนะนำ เราได้ให้ภาพรวมระดับสูงของทิวทัศน์ AA ปัจจุบันในรูปแบบของการจัดประเภทของต่าง ๆ สำหรับการออกแบบที่เสนออย่างต่าง ๆ เราจะใส่ใจกับคลาสแรกของ sol ชั่วคราวสำหรับการลงทุนของ Ethereum's account dilemma- EOA programmability
เรื่องที่น่าสนใจที่สุดของ Ethereum คือระบบนิเวศ DeFi ที่ยังเป็นเด็ก ๆ แต่มีชีวิตชีวาที่มีหลากหลายแอปพลิเคชันที่กระจายแบบไม่มีผู้ควบคุม ซึ่งเป็นจุดรวมเงินสำคัญ ส่วนใหญ่ของ DApps เหล่านี้ถูกจัดเตรียมให้บริการ EOAs ดังนั้นพวกเขายากที่จะเชื่อมต่อกับ CAs และบัญชีสมาร์ท แม้ว่ากระเป๋าสมาร์ทคอนแทร็คจะช่วย CAs ในกรณีนี้ แต่พวกเขามาพร้อมกับข้อจำกัดของตัวเองและ UX ที่แตกต่างกันอย่างสิ้นเชิง
โซลูชันชั่วคราวที่กําลังสํารวจในขณะที่ทั้ง DApps และผู้ให้บริการกระเป๋าเงินคุ้นเคยกับมาตรฐานบัญชีอัจฉริยะคือการให้การปรับปรุงชั่วคราวแก่ EOAs ที่ช่วยให้พวกเขาสามารถเอาชนะข้อ จํากัด ที่กําหนดไว้ส่วนใหญ่ไม่ว่าจะเป็นการตรวจสอบความถูกต้องหรือตรรกะการดําเนินการ
ต่อไปนี้เราจะพิจารณาข้อมูลสเปคของ EIP สามฉบับที่ให้เส้นทางที่สามารถดำเนินการไปยัง EOA programmability ได้; จากที่รู้จักน้อยกว่าEIP 5806, สำหรับคนที่ทะเยอทะยานEIP 3074และในที่สุดก็ถึงชัยชนะEIP 7702.
ข้อเสนอนี้มีจุดมุ่งหมายที่จะนำความสามารถมากขึ้นสู่มาตรฐาน EOA โดยการอนุญาตให้มันทำการเรียก delegate ไปยังตัวต้นแบบบัญชีของสัญญา (สัญญาอัจฉริยะของมัน) ซึ่งทำให้สัญญาอัจฉริยะถูกดำเนินการในบริบทของ EOA ผู้เรียกหรือก็คือ EOA ยังคงควบคุมตรรกะการตรวจสอบของมันในขณะที่ตรรกะการดำเนินการของมันถูกจัดการโดยตรรกะต้นแบบ CA ที่เกี่ยวข้อง
ก่อนที่เราจะดำเนินไปอีกต่อไป ให้เราไปเที่ยววัยระวังของวงการวิวัฒนาการของ Ethereum กันEIP-7.
EIP-7 ข้อเสนอให้สร้างคำสั่ง 0xf4/DELEgateCALL ซึ่งใช้ส่งการโทรข้อความเข้าบัญชีหลักด้วยตรรกะของบัญชีรอง พร้อมทั้งรักษาค่าของฟิลด์ [sender] และ [value] ของบัญชีหลัก
กล่าวอีกอย่าง บัญชีหลัก “รับมรดก” (หรือยืมถ้าคุณต้องการ) ตรรกะของบัญชีย่อมสมความกับบัญชีรองเป็นระยะเวลาบาง ๆ ตามที่ระบุไว้ในการเรียกข้อความ ดังนั้นตรรกะของบัญชีหลักก็จะถูกดำเนินการในบริบทของบัญชรอง
รหัสโอป๊คนี้ช่วยให้นักพัฒนา dApp สามารถแบ่งตามตัวแยกต่างๆของโลจิกของแอปพลิเคชันของพวกเขาได้ โดยยังคงมีความเชื่อมโยงกัน เพื่อให้สามารถหลีกเลี่ยงข้อจำกัดขนาดโค้ดและข้อจำกัดของแก๊สได้อย่างง่ายดาย
ดี ดังนั้น delegate calls ทำให้ CAs สามารถทำงานร่วมกันได้อย่างไรบ้าง? นั่นคือ EIP-5806 ใช้ EIP-7 เป็นแรงบันดาลใจเพื่อ предложитьการขยายฟังก์ชั่นของ delegate call ไปสู่ EOAs ด้วย; กล่าวคือ ให้เราให้ EOAs สามารถทำงานร่วมกับ CAs ได้เช่นกัน เพราะทำไมไม่呢
EIP 5806 นำเสนอเป็นวิธีใหม่รองรับตามมาตรฐาน EIP-2718ประเภทการทำธุรกรรมที่ถูกแพ็คตามนี้:
rlp([chainID, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, signature_y_parity, signature_r, signature_s]).
ธุรกรรมเหล่านี้ถูกออกแบบมาเพื่อให้ฟิลด์ [to] – ซึ่งแทนที่อยู่ผู้รับ – สามารถรับเฉพาะที่อยู่เป็นข้อมูลขนาด 20 ไบต์เท่านั้น ซึ่งทำให้ผู้ส่งไม่สามารถใช้คำสั่ง CREATE ได้
แรงจูงใจของทุกส่วนประกอบของระบบ RLP คือดังต่อไปนี้:
ในขณะที่การห่อหุ้มการทำธุรกรรม EIP-5806 ในซอง EIP-2718 ช่วยให้เข้ากันได้ยิ่งกับเวอร์ชันย้อนหลังได้มาก การใช้งาน EOA ไม่เทียบเท่ากับ CA ดังนั้นจำเป็นต้องกำหนดข้อจำกัดบางอย่างในวิธีที่ EOA ใช้ delegate call เพื่อป้องกันการเสียหายที่ไม่เปลี่ยนแปลง
การจำกัดเหล่านี้เป็นเป้าหมายของ opcodes ต่อไปนี้:
ความสามารถหลักของ EIP 5806 คือการสรุปการดำเนินการสำหรับ EOAs โดยให้ EOAs สามารถที่จะเชื่อถือได้ในการติดต่อสื่อสารกับสัญญาอัจฉริยะเกินกว่าการเรียกใช้งานเรียบง่าย ๆ ไปยังตรรกะของพวกเขา ซึ่งให้คุณสมบัติเช่น:
การเปลี่ยนแปลงที่เสนอโดย EIP-5806 ในขณะที่เปิดใช้คุณลักษณะที่จำเป็น ไม่ได้เป็นสิ่งใหม่เป็นพิเศษมาก; ความเป็นอยู่ของมันขึ้นอยู่กับ EIP-7 ที่ทำงานอยู่แล้ว สิ่งนี้ทำให้มันผ่านไปบางส่วนของอุปสรรคที่อาจเกิดขึ้นได้หลายอย่าง
หนึ่งในข้อกังวลหลักที่เปล่งออกมาในช่วงแรกคือความเสี่ยงที่อาจเกิดขึ้นในการอนุญาตให้ EOAs เข้าถึงพื้นที่เก็บข้อมูลและเปลี่ยนแปลงได้เช่นเดียวกับ CA ในปัจจุบัน สิ่งนี้ทําลายความแปรปรวนของเครือข่ายจํานวนมากเกี่ยวกับวิธีที่ EOAs ทําธุรกรรมและได้รับการจัดการโดยการแนะนําข้อ จํากัด ที่กล่าวถึงในส่วนย่อยก่อนหน้า
การวิพากษ์วิจารณ์ครั้งที่สอง (ซึ่งเป็นดาบสองคมเล็กน้อย) คือความเรียบง่ายของ EIP-5806 มีความรู้สึกบางอย่างว่ารางวัลเนื่องจากการยอมรับ EIP-5806 อาจไม่คุ้มค่ากับค่าใช้จ่ายเนื่องจากมันเปิดใช้งานเฉพาะการดําเนินการที่เป็นนามธรรมและไม่มากอื่น ๆ ข้อ จํากัด ความถูกต้องอื่น ๆ ทั้งหมดยังคงกําหนดเครือข่ายสําหรับ EOAs ซึ่งเลือกใช้ EIP-5806 ตรงกันข้ามกับ EIPs อื่น ๆ ที่ค่อนข้างคล้ายกันซึ่งเราพูดถึงในส่วนย่อยต่อไปนี้
EIP-3074 ข้อเสนอให้ EOAs สามารถมอบหมายงานการตรวจสอบส่วนใหญ่ของตนเองให้กับบัญชีสัญญาที่เชี่ยวชาญ เรียกว่า invokers โดยการใช้ตรรกะการอนุญาตของตัวหลักสำหรับรูปแบบของธุรกรรมที่เฉพาะเจาะจง
มันทำได้โดยการลงนามเข้ากันกับนโยบายการเข้าถึงของพวกเขาให้กับสัญญาผู้เรียกร้องซึ่งจากนั้นก็กลายเป็นความรับผิดที่กำหนดนโยบายการเข้าถึงของ EOA
EIP นี้เสนอให้เพิ่ม opcode สองตัวใหม่เข้าสู่ EVM:
รหัสนี้สองรหัสอนุญาตให้ EOA มอบหมายควบคุมไปยัง CA ที่กำหนดไว้ล่วงหน้า และเป็นได้อย่างนั้น โดยไม่ต้องแสดงสัญญาและต้องรับผิดชอบต้นทุนและผลที่เกี่ยวข้องกับมัน
EIP-3074 ช่วยให้ธุรกรรมสามารถใช้รูปแบบการเซ็นต์ [MAGIC] เพื่อป้องกันการชนกับรูปแบบการเซ็นต์ธุรกรรมอื่น ๆ บัญชีที่ใช้งานอยู่เพื่อส่งคำสั่ง [AUTHCALL] ถูกกำหนดให้เป็นฟิลด์ตัวแปรบริบทที่ชื่อ [authorized] ที่มีอยู่เฉพาะในธุรกรรมเดียวและต้องถูกกำหนดใหม่สำหรับ [AUTHCALL] ใหม่ทุกครั้ง
ก่อนที่จะตอบความซับซ้อนของแต่ละคำสั่งโค้ด นี่คือสิ่งที่เกี่ยวข้องกับธุรกรรม EIP-3074:
สัญญา Invoker จะได้รับข้อความ [AUTH] พร้อมค่า [COMMIT] จาก [authority] โดยค่านี้จะกำหนดข้อจำกัดที่บัญชีต้องการวางไว้ในการดำเนินการ [AUTHCALL] ของ [authorized]
ดังนั้น invokers มีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่า [contract_code] ที่กําหนดไว้ในบัญชี [ที่ได้รับอนุญาต] นั้นไม่เป็นอันตรายและมีความสามารถในการตอบสนองตัวแปรที่วางไว้โดยบัญชีการลงนามหลักในค่า [COMMIT]
โอ๊ปโค้ด [AUTH] มีอินพุตสามสต็อก; หรือง่ายๆ ก็คือถูกกำหนดโดยอินพุตสามอย่างที่คำนวณเป็นเอาต์พุตเดียว อินพุตเหล่านี้คือ:
ข้อมูลสองข้อมูลล่าสุดถูกใช้ในการอธิบายช่วงของหน่วยความจำที่สามารถแก้ไขได้ตั้งแต่ 0 ถึง 97 เมื่อ:
ตัวแปร [yParity], [r] และ [s] ถูกตีความรวมกันเป็นลายเซ็น ECDSA, [magic], บนเส้น曲 secp256k1 ของข้อความ:
[keccak256 (MAGIC || chainID || nonce || ที่อยู่ผู้เรียก || COMMIT)]
ที่:
หากลายเซ็นที่คำนวณได้ถูกต้องและที่อยู่ของผู้เซ็นเท่ากับ [authority] ฟิลด์ [authorized] จะถูกอัปเดตเป็นค่าที่ให้มาจาก [authority] หากไม่เป็นไปตามเงื่อนไขเหล่านี้ใด ๆ [authorized] ฟิลด์ยังคงเป็นไปตามสถานะก่อนหน้าของมันหรือเป็นค่าที่ไม่ได้ตั้งไว้
ค่าแก๊สสำหรับตัวดำเนินการนี้ถูกคำนวณเป็นผลรวมของ:
[AUTH] ถูกนําไปใช้เพื่อไม่ปรับเปลี่ยนหน่วยความจํา และใช้ค่าของ [authority] เป็นอาร์กิวเมนต์เพื่อให้การตรวจสอบค่าจากลายเซ็นที่ให้มาเป็นเรื่องเล็กน้อย
โอปโคด [AUTHCALL] มีการป้อนข้อมูลสามารถของรูปแบบชุดเดียวที่ใช้ในการคำนวณผลลัพธ์ของสามารถชุดเดียว
มันมีตรรกะเดียวกับ [CALL] opcode กล่าวคือ; ใช้เพื่อส่งข้อความเรียกเข้าบัญชีและเรียกใช้ตรรกะเฉพาะในสัญญา ค่าเบี่ยงเบนเพียงอย่างเดียวในตรรกะของพวกเขาคือ [AUTHCALL] ได้รับการออกแบบมาเพื่อตั้งค่าของ [CALLER] ก่อนดําเนินการ
ดังนั้น [AUTHCALL] ใช้โดย [authority] เพื่อเรียกใช้พฤติกรรมที่เกี่ยวข้องกับ [authorized] โดยมีการตรวจสอบตามตรรกะต่อไปนี้:
ค่าแก๊สสำหรับ [AUTHCALL] คำนวณเป็นผลรวมของ:
ข้อมูลที่ส่งคืนจาก [AUTHCALL] สามารถเข้าถึงได้ผ่าน:
เพื่อรวมทุกอย่างพร้อมกับการพูดน้อยลงเกี่ยวกับเทคโนโลยี ธุรกรรม Ethereum 通常ระบุค่าสองค่า
ใน EOAs ตามที่กล่าวไว้ก่อนหน้านี้ การอนุญาตเชื่อมต่อกับการดำเนินการเป็นสิ่งที่แนบแน่นกัน นั่นคือ (tx.origin == msg.sender) สัญญาต่อเนื่องที่เรียบง่ายนี้เป็นสาเหตุของส่วนใหญ่ของปัญหาที่เราอธิบายไว้ในส่วนย่อย "บัญชีและความถูกต้องของธุรกรรม" ในรายงานนี้
ข้อความ [AUTH] จาก [authority] ช่วยให้สามารถเบียดเทียบฟังก์ชัน tx.origin ไปยัง [authorized] ได้ โดยยังคงเป็น msg.sender อย่างไรก็ตาม มันยังช่วยให้กำหนดข้อจำกัดในสิทธิพิเศษนี้โดยใช้ค่า [COMMIT] ได้
[AUTHCALL] จากนั้นอนุญาตให้ [authorized] เข้าถึงตรรกะของสัญญา โดยใช้ [invoker] เป็นผู้กลางเพื่อให้แน่ใจว่าสัญญาที่ต้องการเข้าถึงไม่เป็นอันตราย กล่าวคือ สำหรับทุก [AUTHCALL] [authorized] ต้องระบุ [invoker] โดยเฉพาะสำหรับ [COMMIT] ของพวกเขา
EIP 3074 เป็นผู้รับผิดชอบหลักในการอนุญาตให้ EOAs มอบหมายตัวตนการอนุญาตของพวกเขาให้กับบัญชีที่แตกต่างกัน อย่างไรก็ตามการออกแบบเปิดของมันช่วยให้สามารถทำได้มากขึ้นในบริบทที่แตกต่างกัน
ตรรกะการตรวจสอบทั้งหมดของ EOA สามารถสรุปได้โดยการใช้กั้น/นวัตกรรมต่าง ๆ กับผู้เรียกใช้ตามที่จำเป็น เรื่องที่เป็นไปได้บางอย่างของการออกแบบขึ้นอยู่กับตรรกะเป้าหมายของพวกเขา
นอกจากนี้ ตรรกะการดำเนินการถูกสรุปอย่างสร้างสรรค์ หลังจากที่ผู้เรียกใช้ (ซึ่งเป็น CA) ตอนนี้รับผิดชอบในการดำเนินการร้องขอธุรกรรมแทน EOA
การอ้างหนึ่งในผู้เขียน: “ฉันไม่คาดหวังว่ากระเป๋าเงินจะเปิดเผยฟังก์ชันในการลงลายเซ็นกับผู้เรียกร้องอย่างอิสระ …”. ปัญหาที่ใหญ่ที่สุดที่ถูกตั้งคำถามโดยการดำเนินการ 3074 คือนวัตกรรมที่ปราศจากมันจะมีแนวโน้มที่จะเข้ากันได้และการไหลที่เป็นเอกสิทธิ์; อย่างที่มีการวิวัฒนาการปัจจุบันของ Ethereum’s MEV และ PBS markets.
โดยค่าเริ่มต้นสัญญา invoker จะต้องได้รับการตรวจสอบอย่างมากเพื่อป้องกันการโจมตีที่เลวร้ายยิ่งกว่าที่เป็นไปได้ในปัจจุบัน สิ่งนี้จะมีแนวโน้มที่จะเป็นระบบนิเวศอย่างหลีกเลี่ยงไม่ได้ซึ่งสัญญา invoker จํานวนหนึ่งที่พัฒนาโดยผู้มีอิทธิพลจะถูกนํามาใช้เป็นค่าเริ่มต้นสําหรับนักพัฒนากระเป๋าเงิน ดังนั้นจึงเป็นการแลกเปลี่ยนระหว่างการใช้เส้นทางการกระจายอํานาจอย่างหนักในการตรวจสอบและสนับสนุนสัญญา invoker อย่างต่อเนื่องซึ่งมีความเสี่ยงต่อความปลอดภัยของผู้ใช้ หรือเพียงแค่ใช้สัญญา Invoker จากแหล่งที่จัดตั้งขึ้นและมีชื่อเสียงพร้อมการรับประกันที่ดีกว่าสําหรับความปลอดภัยของผู้ใช้และการกํากับดูแลความปลอดภัยของสัญญาน้อยลง
ด้านอื่น ๆ ของจุดนี้คือฟังก์ชันต้นทุนที่เกี่ยวข้องกับการออกแบบ การตรวจสอบ และการตลาดอินโวกเกอร์ที่ทำงานได้และปลอดภัย ทีมเล็กๆ จะเสมอไปด้วยองค์กรที่ใหญ่กว่า - โดยเฉพาะในด้านการตลาด - ซึ่งมีชื่อเสียงที่เป็นที่ยอมรับบ้าง แม้ว่าผลิตภัณฑ์ของพวกเขาจะดีกว่า
EIP-3074 ดึงดูดรูปแบบลายเซ็น ECDSA เนื่องจากยังคงถือว่าถูกต้องมากกว่ารูปแบบการอนุญาตที่แนะนําผ่านผู้เรียกใช้ ในขณะที่มีข้อโต้แย้งว่าความต้านทานควอนตัมไม่ใช่ปัญหาที่ชัดเจนในขณะนี้และมีความเสี่ยงที่เลวร้ายกว่ามากในอนาคตที่ ECDSA เสียหายได้ เป้าหมายที่ค่อนข้างไม่มีสถานะของ Ethereum คือการนําหน้าปัญหาดังกล่าวเสมอ อาจเสียสละควอนตัมและการเซ็นเซอร์สําหรับการปรับปรุงเล็กน้อยใน UX อาจไม่ใช่ตัวเลือกที่ดีที่สุดในอนาคตอันใกล้
จุดอื่น ๆ ในอาร์กิวเมนต์เกี่ยวกับความเข้ากันได้ในอนาคตคือในขณะที่กำไรจาก 3074 ยังไม่ได้ถูกประเมิน ERC-4337 (ซึ่งไม่ต้องการการเปลี่ยนแปลงโปรโตคอลใด ๆ) มีตลาดที่ดีมากแล้ว ดังนั้นคุณต้องเข้ากันได้กับมันเช่นกันเพื่อหลีกเลี่ยงการแบ่งส่วนของระบบนิเวศ
แม้ว่าจะมีแผนการสรุปบัญชีภายในระบบ คำสั่ง [AUTH] และ [AUTHCALL] ใน EVM ก็จะกลายเป็นล้าสมัยในที่สุด ซึ่งทำให้ Ethereum ต้องมีหนี้สินทางเทคนิคมากมายเพื่อส่งมอบการปรับปรุง UX ที่ไม่มีคุณค่าน้อย
หลังจากส่งข้อความ [AUTH] และมอบหมายควบคุม คาดว่า EOA จะหลีกเลี่ยงระบบการอนุมัติด้วยกุญแจส่วนตัวแบบปกติ เนื่องจากการส่งธุรกรรม “ปกติ” ทำให้การอนุญาตที่มอบหมายให้กับผู้เรียกใช้ทุกคนถูกเพิกถอน
ดังนั้น โครงร่าง ECDSA ยังคงเป็นเท่าเทียมกับการรับรองจากโครงร่างใดๆ ที่สัญญาที่เกี่ยวข้องอาจเปิดใช้งาน ซึ่งหมายความว่า การสูญเสียกุญแจส่วนตัวจะ导致การสูญเสียทั้งหมดของสินทรัพย์ในบัญชี
ข้อเสนอนี้เริ่มต้นจากการกำหนดเป็นรูปแบบที่เล็กน้อยของ EIP 3074 และไม่ได้หมายถึงเพื่อที่จะเป็นการอัปเดตให้กับมัน มันถูกเกิดขึ้นเพื่อแก้ไขปัญหาความไมประสงค์ของ EIP 3074 โดยเฉพาะอย่างยิ่งความกังวลเกี่ยวกับความไมเข้ากันได้กับระบบนิเวศ 4337 ที่กำลังพัฒนาและแนวคิดการสรุปบัญชี RIP 7560
วิธีการทำงานของมันคือการเพิ่มประเภทธุรกรรมที่เป็นไปตามมาตรฐาน EIP 2718 ใหม่ - [SET_CODE_TX_TYPE] - ซึ่งช่วยให้ EOA สามารถทำงานเป็นบัญชีสมาร์ทสำหรับธุรกรรมที่ระบุไว้ได้
การออกแบบนี้ทำให้มีคุณสมบัติเดียวกันกับ EIP 5806 และอื่น ๆ อีกบางอย่าง พร้อมทั้งยังเหมาะสมกับแผนถนนการสรุปบัญชีธรรมชาติและโครงการที่มีอยู่
EIP-7702 ช่วยให้ EOA สามารถ "นำเข้า" เนื้อหาของโค้ดของสัญญาผ่านการทำธุรกรรมที่เป็นไปตามมาตรฐาน [SET_CODE_TX_TYPE] 2718 ของรูปแบบ:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
โหลดซีพร้อมกับ EIP 5806 ทั้งหมด ยกเว้นว่ามันนำเสนอ "รายการการอนุญาต" รายการนี้เป็นลำดับของค่าที่มีรูปแบบเป็น
[[chain_id, address, nonce, y_parity, r, s], …]
ที่แต่ละตัวเรียกค่า [address] ในแต่ละตัว
ก่อนดําเนินการต่อฝ่ายที่เกี่ยวข้องใน SET_CODE_TX_TYPE ได้แก่ :
เมื่อ [authority] ลงนาม SET_CODE_TX_TYPE ที่ระบุ [address] จะสร้างตัวกำหนดการมอบหมาย นี่คือ "โปรแกรมชี้" ซึ่งทำให้คำขอการเรียกรหาโค้ดทั้งหมดเนื่องจากการกระทำของ [authority] ที่ทุกช่วงเวลาถูกนำไปสู่โค้ดที่สามารถสังเกตได้ของ [address]
สำหรับทุกคู่ [chain_id, address, nonce, y_parity, r, s] การไหลของตรรกะของธุรกรรมประเภท 7702 คือดังนี้:
ฮึก! เพื่อผูกมันกลับมา; EIP นี้ช่วยให้ EOAs ส่งธุรกรรมที่ตั้งตัวชี้ไปยังโค้ดของสัญญา ทำให้พวกเขาสามารถนำตรรกะนี้มาใช้เป็นของตัวเองในธุรกรรมต่อไปได้ ดังนั้นมันจึงแข็งแกร่งกว่า EIP 5806 เพราะมันช่วยให้ EOAs มีเนื้อหาของโค้ดได้ตลอดเวลาที่พวกเขาต้องการ (ไม่เหมือนกับ EIP 5806 ที่อนุญาตให้ EOAs ส่ง delegate-calls เท่านั้น)
หากว่าจะอ้างว่ามันไม่ใช่การสรุปอีกต่อไปเนื่องจาก EOA ทำงานกับตรรกะที่มันต้องการจะดำเนินการเอง แต่มันก็ยังไม่ใช่ "เจ้าของหลัก" ของตรรกะดังกล่าว นอกจากนี้มันไม่มีตรรกะอยู่ภายในโดยตรง เพียงแค่ระบุตัวชี้ชวนไปยังตรรกะ (เพื่อลดความซับซ้อนของการคำนวณ) ดังนั้นเราเรียกมันว่า การสรุปการดำเนินการ!
ในขณะที่ข้อกำหนด require(msg.sender == tx.origin) ถูกแตกต่างเพื่ออนุญาตให้สปอนเซอร์ตนเอง แต่ EIP ยังอนุญาตให้การผสานของตัวแทนการทำธุรกรรมที่ได้รับการสปอนเซอร์ อย่างไรก็ตาม ข้อจำกัดคือตัวแทนเช่นนี้ต้องมีระบบที่เกี่ยวข้องกับชื่อเสียงหรือฐานะเพื่อป้องกันการโจมตีเพื่อทำให้เสียหาย
EOAs สามารถชี้ไปยังส่วนที่เฉพาะของโค้ดบัญชีได้อย่างเดียว ดังนั้นเฉพาะตรรกะของส่วนนั้นที่สามารถใช้ได้ในบริบทของพวกเขาเท่านั้น
นี่ยังช่วยให้มีการมีคีย์ย่อยซึ่งทำให้เกิด "การลดระดับสิทธิ" ซึ่งจะทำให้ dAPPs บางอย่างมีการเข้าถึงยอดเงินในบัญชีภายใต้เงื่อนไขที่เฉพาะเจาะจง เช่น คุณสามารถนึกภาพถึงการอนุญาตให้ใช้ ERC-20 โทเคน แต่ไม่ใช้ ETH หรือใช้ได้สูงสุด 1% ของยอดคงเหลือต่อวัน หรือเชื่อมต่อเพียงกับแอปพลิเคชันที่เฉพาะเจาะจงเท่านั้น
ธุรกรรม EIP-7702 อาจอนุญาตให้ผู้ใช้เข้าถึง opcode CREATE2 และใช้เพื่อปรับใช้ bytecode ไปยังที่อยู่โดยไม่มีพารามิเตอร์ที่ จํากัด อื่น ๆ เช่นตรรกะตลาดค่าธรรมเนียม (เช่น EIP-1559 และ EIP-4844) สิ่งนี้ช่วยให้ที่อยู่สามารถกู้คืนและใช้ในเครื่องสถานะหลายเครื่องด้วย bytecode เดียวกันโดยที่บัญชีในแต่ละห่วงโซ่จะรับผิดชอบในการกําหนดพารามิเตอร์ตัวแปรบริบทอื่น ๆ
ในขณะที่ EIP-7702 ยังคงเป็นเหตุการณ์ล่าสุดมากมาย มีการออกแบบและทดสอบสำหรับความขึ้นอยู่กับขึ้นอยู่กับปัญหาและข้อเสียหายที่เป็นไปได้ แต่โมเดลขนาดเล็กที่ลดน้อย มีความยืดหยุ่นมากมาย และด้วยเหตุนี้ มีประโยชน์ในบริบทที่แตกต่าง อย่างไรก็ตาม มันทำให้เกิดการลักษณะที่ผิดและไม่สามารถย้อนกลับได้ทันที
บางส่วนของตรรกะของมันรวมถึง:
ผู้ใช้ส่วนใหญ่ไม่รู้เรื่องเนื้อหาที่อยู่ในบัญชี (หรือแม้แต่ความแตกต่างระหว่างบัญชีและที่อยู่!) ดังนั้นการอนุญาตให้การชนที่อยู่เกิดขึ้นหมายความว่า EOA สามารถปลอมตัวเป็น CA และดึงเงินของผู้ใช้ในระหว่างที่ยาวนานเพื่อขโมยเงินทั้งหมด EIP-3607 แก้ปัญหานี้โดยกำหนดว่าบัญชีที่มีโค้ดไม่ควรสามารถใช้เงินในยอดเงินของตนโดยใช้ตรรกะการอนุญาตของตนเอง อย่างไรก็ตาม EIP 7702 ทำลายสถานะอันตรายนี้เพื่อให้ EOAs สามารถเป็นอิสระได้แม้ว่าจะได้รับความสามารถในการโปรแกรมบางส่วน
การลงชื่อเซ็นที่ที่อยู่ของบัญชีแทนเนื้อหาของรหัสเป็นเรื่องที่คล้ายกับระบบของ 3074 กับผู้เรียกใช้ มันไม่ให้การรับรองที่เข้มงวดเกี่ยวกับความสอดคล้องของเนื้อหาของรหัสที่เกี่ยวข้องกันข้ามเชื่อมโยงเนื่องจากที่อยู่สามารถมีเนื้อหาของรหัสที่แตกต่างกันบนเชื่อมโยงที่แตกต่างกัน นี่หมายความว่า ที่อยู่ที่มีเนื้อหาของรหัสที่มีตรรกะเดียวกันบนเชื่อมโยงหนึ่งอาจเป็นฉุกเฉินหรือเป็นอันตรายอย่างสิ้นเชิงบนเชื่อมโยงอื่น ๆ และสิ่งนี้อาจทำให้เกิดความเสียหายต่อเงินทุนของผู้ใช้
EOAs ในรูปแบบปัจจุบันของพวกเขา วันนี้มีข้อจำกัดมากเนื่องจากพวกเขาไม่อนุญาตให้ผู้ใช้ใช้ประโยชน์จากคุณลักษณะในการเขียนโปรแกรมที่มีอยู่ใน EVM อย่างไรก็ตาม ในขณะที่มีเส้นทางต่าง ๆ ในการอัพเกรดบัญชี ตามที่เราได้กล่าวถึงในตอนเริ่มต้นของรายงานนี้ โซลูชันที่ถูกเลือกต้องรักษาหลักการของการเก็บรักษาตนเองอย่างปลอดภัยและปลอดภัยอีกทั้งการอัพเกรด EOA อาจมีผลกระทบต่อประสบการณ์ของผู้ใช้และนักพัฒนาแอปพลิเคชันอย่างมาก ดังนั้น ควรพิจารณาเสียงของผู้มีส่วนได้ส่วนเสียทั้งหมด
การอนุญาตให้บัญชี EOA ทำการเรียกใช้โค้ดในทุกลักษณะ ทำให้ความสามารถของบัญชีขยายตัวอย่างมาก แต่ความสามารถใหม่นี้มาพร้อมกับความเสี่ยงและความไม่แน่นอนที่สำคัญ การแก้ปัญหาเหล่านี้เป็นสิ่งสำคัญในการนำเสนอการอัปเกรดที่มีประโยชน์ที่สุดสำหรับผู้ใช้ Ethereum โดยไม่มีการโต้แย้งใด ๆ
วัฒนธรรมการสนทนาเปิดเผยของ Ethereum ทำให้มันเป็นที่ทดสอบที่ยอดเยี่ยมสำหรับนวัตกรรมเช่นนี้เนื่องจากเกือบทุกผลของการออกแบบถูกถอดรหัสอย่างละเอียดโดยผู้เชี่ยวชาญด้านวิชาการ การพิจารณาอย่างละเอียดนี้ควรช่วยลดความเสี่ยงของการกระทำผิดจากเหตุการณ์ที่ตรงกันข้าม
ปัจจุบัน EIP-7702 เป็นลูกโปสเตอร์สําหรับกลไกที่พยายามนําความสามารถในการตั้งโปรแกรม EVM มาสู่ EOAs โดยได้รับการทําเครื่องหมายว่าทดแทนสล็อตของ EIP 3074 ในการอัพเกรด Pectra มันสืบทอดการออกแบบแบบเปิดของกลไกของ 3074 ในขณะที่ลดพื้นผิวการโจมตี / ความเสี่ยงลงอย่างมาก นอกจากนี้ยังช่วยให้มากขึ้นโดยการหลีกเลี่ยงข้อ จํากัด ของ 3074 กับ opcodes บางประเภท
ในขณะที่ยังมีการปรับปรุงบางส่วนในการออกแบบของข้อเสนอ มันได้รับความเห็นชอบและสนับสนุนจากนักพัฒนาโดยเฉพาะอย่างยิ่งเนื่องจากมีการสนับสนุนโดยตรงจาก Vitalik แล้ว
ภายในชุมชนมีข้อเรียกร้องว่าวิธีการสรุปบัญชีนี้อาจดีกว่าสมาร์ทแอคเคาท์ บทวิจารณ์นี้เน้นว่าถนัดมากขึ้นและไม่ซับซ้อนเท่านั้น และว่า EOAs ถูกบัญทึกไว้แล้ว อย่างไรก็ตามเราต้องจำไว้ว่าความปลอดภัยในอนาคตของการต้านทานควอนตัมเมื่อไหร่ก็ตามทุกระดับของเครือข่าย Ethereum ความปลอดภัยที่เกี่ยวกับควอนตัมนี้ไม่เป็นไปตามหลักโมเดลบัญชีปัจจุบันเนื่องจากการใช้ระบบลายเซ็นของ ECDSA สำหรับการยินยอม EOA
ดังนั้น ความสามารถในการโปรแกรม EOA ควรถูกมองเป็นขั้นตอนบนเส้นทางสู่บัญชีสมาร์ทและไม่ใช่เป้าหมาย มันทำให้ EOA มีพลังมากขึ้นและทำให้ผู้ใช้และนักพัฒนามีประสบการณ์ที่ดีขึ้น พร้อมทั้งยังเหมาะสมกับเป้าหมายของแนวคิดการสรุปบัญชีสมาร์ท
ในรายงานถัดไปของเราเราจะสำรวจโครงการย้าย EOA เพื่อดูว่ามันเหมาะกับโครงสร้างแนวคิดการสรุปบัญชีอย่างไร อยู่รอดูต่อไป!