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

วาดบนความสำเร็จ ข้อกำหนดเลเยอร์ฉันทามติเรามุ่งมั่นที่จะสร้างข้อกำหนดปฏิบัติการที่คล้ายกันสำหรับเลเยอร์การดำเนินการ
ปัจจุบัน
ปัจจุบัน EELS มีการบริโภคเป็น ที่เก็บ Python ดั้งเดิม และเป็น เอกสารแสดงผล– ขอบของมันยังค่อนข้างหยาบอยู่ และไม่ได้ให้คำอธิบายประกอบหรือคำอธิบายภาษาอังกฤษมากนักเกี่ยวกับการทำงานของชิ้นส่วนต่างๆ แต่สิ่งเหล่านั้นจะต้องเป็นไปตามกาลเวลา
มันเป็นเพียงหลาม
หวังว่าการเปรียบเทียบ Yellow Paper และโค้ดที่เทียบเท่าจาก EELS แบบเคียงข้างกันสามารถแสดงให้เห็นว่าเหตุใด EELS จึงเป็นส่วนเสริมที่มีคุณค่า:
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
ในขณะที่ รูปที่ 2 อาจจะย่อยได้สำหรับนักวิชาการ รูปที่ 3 เป็นธรรมชาติมากกว่าสำหรับโปรแกรมเมอร์อย่างไม่ต้องสงสัย
นี่คือวิดีโอ การแนะนำการเพิ่มคำสั่ง EVM อย่างง่าย ถ้านั่นเป็นเรื่องของคุณ
การทดสอบการเขียน
มันต้องทำซ้ำ: EELS เป็นเพียง Python ธรรมดา สามารถทดสอบได้เหมือนกับไลบรารี Python อื่น ๆ ! นอกเหนือจากนั้นทั้งหมดแล้ว อีเธอเรียม/การทดสอบ ห้องสวีท เราก็มีให้เลือก ไพเทสต์ การทดสอบ
ด้วยความช่วยเหลือเล็กๆ น้อยๆ จาก การทดสอบข้อมูลจำเพาะการดำเนินการการทดสอบใดๆ ที่เขียนขึ้นสำหรับ EELS สามารถนำไปใช้กับลูกค้าที่ใช้งานจริงได้!2
แสดงความแตกต่าง
การมีสแน็ปช็อตในแต่ละทางแยกนั้นยอดเยี่ยมสำหรับนักพัฒนาสัญญาอัจฉริยะที่เข้ามาดูวิธีการทำงานของคำสั่ง EVM โดยเฉพาะ แต่ก็ไม่ได้มีประโยชน์มากนักสำหรับนักพัฒนาไคลเอนต์เอง สำหรับพวกเขา EELS สามารถแสดงความแตกต่างระหว่างส้อมได้:
ตัวอย่าง EIP
EIP-6780 เป็น EIP แรกที่ได้รับ การดำเนินการ EELS จัดทำโดยผู้เขียน กิโยม บัลเลต์– มาดูกันดีกว่า
ก่อนอื่นเราขอแนะนำก 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 ของคุณ เข้าร่วมกับเราที่ #ข้อมูลจำเพาะ ช่องทางหรือหยิบประเด็นจากเรา พื้นที่เก็บข้อมูล–