Monday, July 14, 2025
Homeอีเธอเรียมข้อมูลจำเพาะเลเยอร์การดำเนินการ Ethereum | บล็อกมูลนิธิ Ethereum

ข้อมูลจำเพาะเลเยอร์การดำเนินการ Ethereum | บล็อกมูลนิธิ Ethereum


tl;ดร

  • EELS เป็นการดำเนินการอ้างอิงเลเยอร์การดำเนินการใน Python
  • มันอัพเดทด้วย mainnet
  • มันเติมการทดสอบและผ่านการทดสอบที่มีอยู่
  • มีตัวอย่างของ EIP ที่ใช้งานใน EELS ด้านล่าง

การแนะนำ

หลังจากพัฒนามานานกว่าหนึ่งปี เรามีความยินดีที่จะเปิดตัวสู่สาธารณะ ข้อมูลจำเพาะของเลเยอร์การดำเนินการ Ethereum (รู้จักกันในชื่อ EELS) EELS เป็นการนำไปใช้อ้างอิง Python ของส่วนประกอบหลักของไคลเอนต์การประมวลผล Ethereum ที่เน้นไปที่ความสามารถในการอ่านและความชัดเจน มุ่งหวังที่จะเป็นผู้สืบทอดจิตวิญญาณต่อไป กระดาษสีเหลือง ที่เป็นมิตรกับโปรแกรมเมอร์มากขึ้นและทันสมัยด้วยส้อมหลังการรวม EELS สามารถเติมและดำเนินการทดสอบสถานะติดตาม mainnet1และเป็นสถานที่ที่ดีเยี่ยมในการสร้างต้นแบบ EIP ใหม่

EELS ให้ภาพรวมที่สมบูรณ์ของโปรโตคอลในแต่ละทางแยก รวมถึงโปรโตคอลที่กำลังจะเกิดขึ้น ทำให้ติดตามได้ง่ายกว่ามาก EIP (ซึ่งเสนอการเปลี่ยนแปลงเท่านั้น) และไคลเอนต์ที่ใช้งานจริง (ซึ่งมักจะผสมหลายทางแยกในเส้นทางรหัสเดียวกัน)

ประวัติศาสตร์

เริ่มต้นในปี 2021 ในฐานะโครงการของทีม Quilt ของ ConsenSys และมูลนิธิ Ethereum Basis ข้อมูลจำเพาะ eth1.0 (ดังที่ทราบกันดีอยู่แล้ว) ได้รับแรงบันดาลใจจากความหงุดหงิดที่ต้องถอดรหัสสัญกรณ์ที่เป็นความลับของกระดาษสีเหลือง (รูปที่ 1) เพื่อทำความเข้าใจพฤติกรรมเฉพาะของคำสั่ง EVM

ภาพหน้าจอของสูตร 2, 3 และ 4 จากกระดาษสีเหลือง
รูปที่ 1. อักษรรูนลึกลับที่อธิบายพื้นฐานของกระบวนทัศน์บล็อคเชน

วาดบนความสำเร็จ ข้อกำหนดเลเยอร์ฉันทามติเรามุ่งมั่นที่จะสร้างข้อกำหนดปฏิบัติการที่คล้ายกันสำหรับเลเยอร์การดำเนินการ

ปัจจุบัน

ปัจจุบัน EELS มีการบริโภคเป็น ที่เก็บ Python ดั้งเดิม และเป็น เอกสารแสดงผล– ขอบของมันยังค่อนข้างหยาบอยู่ และไม่ได้ให้คำอธิบายประกอบหรือคำอธิบายภาษาอังกฤษมากนักเกี่ยวกับการทำงานของชิ้นส่วนต่างๆ แต่สิ่งเหล่านั้นจะต้องเป็นไปตามกาลเวลา

มันเป็นเพียงหลาม

หวังว่าการเปรียบเทียบ Yellow Paper และโค้ดที่เทียบเท่าจาก EELS แบบเคียงข้างกันสามารถแสดงให้เห็นว่าเหตุใด EELS จึงเป็นส่วนเสริมที่มีคุณค่า:

opcode น้อยกว่า (LT)

รูปที่ 2. น้อยกว่า (ร.ท) คำสั่ง EVM จาก Yellow Paper

def less_than(evm: Evm) -> None:
    # STACK
    left = pop(evm.stack)
    proper = pop(evm.stack)

    # GAS
    charge_gas(evm, GAS_VERY_LOW)

    # OPERATION
    outcome = U256(left < proper)

    push(evm.stack, outcome)

    # PROGRAM COUNTER
    evm.laptop += 1

รูปที่ 3. น้อยกว่า (ร.ท) คำสั่ง EVM จาก EELS

ในขณะที่ รูปที่ 2 อาจจะย่อยได้สำหรับนักวิชาการ รูปที่ 3 เป็นธรรมชาติมากกว่าสำหรับโปรแกรมเมอร์อย่างไม่ต้องสงสัย

นี่คือวิดีโอ การแนะนำการเพิ่มคำสั่ง EVM อย่างง่าย ถ้านั่นเป็นเรื่องของคุณ

การทดสอบการเขียน

มันต้องทำซ้ำ: EELS เป็นเพียง Python ธรรมดา สามารถทดสอบได้เหมือนกับไลบรารี Python อื่น ๆ ! นอกเหนือจากนั้นทั้งหมดแล้ว อีเธอเรียม/การทดสอบ ห้องสวีท เราก็มีให้เลือก ไพเทสต์ การทดสอบ

ด้วยความช่วยเหลือเล็กๆ น้อยๆ จาก การทดสอบข้อมูลจำเพาะการดำเนินการการทดสอบใดๆ ที่เขียนขึ้นสำหรับ EELS สามารถนำไปใช้กับลูกค้าที่ใช้งานจริงได้!2

แสดงความแตกต่าง

การมีสแน็ปช็อตในแต่ละทางแยกนั้นยอดเยี่ยมสำหรับนักพัฒนาสัญญาอัจฉริยะที่เข้ามาดูวิธีการทำงานของคำสั่ง EVM โดยเฉพาะ แต่ก็ไม่ได้มีประโยชน์มากนักสำหรับนักพัฒนาไคลเอนต์เอง สำหรับพวกเขา EELS สามารถแสดงความแตกต่างระหว่างส้อมได้:

ภาพหน้าจอแสดงความแตกต่างในฟังก์ชัน Apply_fork ระหว่าง homestead และ DAO fork

รูปที่ 4. ความแตกต่างอย่างหนึ่งระหว่าง homestead และ DAO fork

ตัวอย่าง EIP

EIP-6780 เป็น EIP แรกที่ได้รับ การดำเนินการ EELS จัดทำโดยผู้เขียน กิโยม บัลเลต์– มาดูกันดีกว่า

ภาพหน้าจอของส่วนข้อมูลจำเพาะของ EIP-6780

รูปที่ 5. ส่วนข้อมูลจำเพาะของ EIP-6768

ก่อนอื่นเราขอแนะนำก create_contracts ตัวแปรเป็น EVM พร้อมขอบเขตระดับธุรกรรม:

 @dataclass
 class Atmosphere:
     caller: Deal with
     block_hashes: Record(Hash32)
     origin: Deal with
     coinbase: Deal with
     quantity: Uint
     base_fee_per_gas: Uint
     gas_limit: Uint
     gas_price: Uint
     time: U256
     prev_randao: Bytes32
     state: State
     chain_id: U64
+    created_contracts: Set(Deal with)

ประการที่สอง เราทราบว่าสัญญาใดที่ถูกสร้างขึ้นในแต่ละธุรกรรม:

+    evm.env.created_contracts.add(contract_address)

ในที่สุดเราก็ปรับเปลี่ยน ทำลายตนเอง ดังนั้นจึงใช้ได้กับสัญญาที่ระบุไว้ในเท่านั้น create_contracts

-    # register account for deletion
-    evm.accounts_to_delete.add(originator)
-
+    # Solely proceed if the contract has been created in the identical tx
+    if originator in evm.env.created_contracts:
+
+        # register account for deletion
+        evm.accounts_to_delete.add(originator)
+

อนาคต

เราต้องการให้ EELS เป็นวิธีเริ่มต้นในการระบุ Core EIP ซึ่งเป็นที่แรกที่ผู้เขียน EIP ใช้เพื่อสร้างต้นแบบข้อเสนอของตน และเป็นข้อมูลอ้างอิงที่ดีที่สุดที่เป็นไปได้สำหรับวิธีการทำงานของ Ethereum

หากคุณสนใจที่จะมีส่วนร่วมหรือสร้างต้นแบบ EIP ของคุณ เข้าร่วมกับเราที่ #ข้อมูลจำเพาะ ช่องทางหรือหยิบประเด็นจากเรา พื้นที่เก็บข้อมูล

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

ความเห็นล่าสุด