Saturday, June 28, 2025
HomeอีเธอเรียมC ++ Dev Replace - July Version

C ++ Dev Replace – July Version


ตั้งแต่การอัปเดต C ++ Dev ครั้งล่าสุดมีหลายสิ่งหลายอย่างที่เกิดขึ้นในห้องเครื่องยนต์ซึ่งไม่สามารถมองเห็นได้จากภายนอก โพสต์นี้ต้องการให้ภาพรวมเกี่ยวกับสิ่งที่เรากำลังทำอยู่

นอกเหนือจากด้านคุณสมบัติแล้ว Bob ได้ดำเนินการในกระบวนการที่เสนอสำหรับการจดจำรหัสไคลเอนต์ C ++ Runtime อีกครั้งไปยัง Apache 2.0 ตามที่ได้รับการกล่าวถึงสองสามครั้งในเดือนหรือสองเดือนที่ผ่านมา คาดหวังข่าวเพิ่มเติมเกี่ยวกับเรื่องนั้นในไม่ช้า

โหมดทดสอบหน่วย ETH

ไม่เพียงเพราะมันเป็นสิ่งสำคัญสำหรับการทดสอบความแข็งแกร่งของเราผ่านการทดสอบแบบ end-to-end ผ่าน IPC, Dimitry Khoklov และอื่น ๆ เพิ่มจุดสิ้นสุด RPC ใหม่ให้กับไคลเอนต์ ETH ซึ่งช่วยให้มีความยืดหยุ่นมากขึ้นสำหรับการทดสอบสัญญาอัจฉริยะ หากคุณใช้ ETH -test -d/tmp/take a look at และเชื่อมต่อกับพอร์ต IPC AT /TMP/take a look at/geth.ipc (เราขอแนะนำให้ใช้ Ethereum-Console สำหรับสิ่งนั้นเพราะมีการเพิ่มคุณสมบัติเหล่านี้แล้ว) คุณสามารถ:

  • เปลี่ยนพารามิเตอร์ blockchain (เช่นลบหลักฐานการตรวจสอบการทำงานและบัญชีบางบัญชีล่วงหน้า)
  • ขุดบล็อกจำนวนหนึ่ง (ประมาณ 30 บล็อกต่อวินาที)
  • ปรับเปลี่ยนการประทับเวลาของบล็อกปัจจุบัน (เพื่อทดสอบเวลาทดสอบในสัญญาของคุณ)
  • ย้อนกลับ blockchain เป็นหมายเลขบล็อกที่กำหนด

สิ่งนี้ช่วยให้เราสามารถทำการทดสอบแบบ end-to-end 305 ในปัจจุบันในเวลาประมาณ 46 วินาทีในคอมพิวเตอร์ปานกลาง การทดสอบเหล่านี้แต่ละครั้งรวมถึงการทำธุรกรรมอย่างน้อยสองรายการ (บ่อยครั้งมากขึ้น) และจำนวนบล็อกที่ขุดเท่ากัน

ข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติเหล่านี้สามารถพบได้ที่ https://github.com/ethereum/ethereum-console

โปรดทราบว่าปัจจุบันมีให้เฉพาะสำหรับไบนารีที่มีให้ผ่าน Ubuntu Dev PPA

การเร่งความเร็วของเครื่องเสมือน

Greg Colvin ใช้เวลาหลายเดือนที่ผ่านมาเพื่อเร่งการใช้งาน C ++ ของ EVM Interpreter เขาเก็บเกี่ยวสิ่งที่เขาเรียกว่าผลไม้แขวนต่ำ (เขาทำงานให้กับ Oracle บนล่าม Java ก่อน … ) การปรับปรุงที่สำคัญที่สุดจนถึงขณะนี้ได้เปลี่ยนการคำนวณ 256 บิตด้วยการคำนวณ 64 บิตสำหรับการวัดแสงก๊าซและตรวจสอบให้แน่ใจว่าไม่มีการคำนวณการวัดแสงสำหรับการดำเนินการ VM แต่ละครั้งเกินความจำเป็น การเปลี่ยนแปลงเหล่านี้และอื่น ๆ ส่งผลให้เกิดผลลัพธ์ต่อไปนี้สำหรับการตั้งไข่ของPaweł Bylica ชุดมาตรฐาน– แผนภูมิต่อไปนี้แสดงการเร่งความเร็วเมื่อเทียบกับล่ามเก่า CPP Ethereum (CPP Int (เก่า))

สัมพัทธ์ _speedup

เพื่อความเป็นธรรมเราต้องบอกว่ามาตรฐานเหล่านี้วัดได้อย่างไร เกณฑ์มาตรฐานแรก (ที่ EVMJIT ออกจากสเกลด้วยการเร่งความเร็ว 472X) ทำลูปที่ว่างเปล่าเป็นล้านและแสดงให้เห็นว่า GOTO ที่คำนวณได้ของ EVM ช้าลงเมื่อเทียบกับการกระโดดโดยตรงของ JIT – การแก้ไขที่อยู่ถัดไปบนสแต็ก เกณฑ์มาตรฐานที่สองคือเครื่องกำเนิดตัวเลขสุ่มที่ไม่ดีซึ่งทำลูปล้านที่มีการคูณสี่ครั้งและการเพิ่มสี่ต่อลูป มันถูกครอบงำโดยการคำนวณ 256 บิตดังนั้น JIT จึงสร้างความแตกต่างน้อยลง (โปรดทราบว่า GO JIT ไม่ได้รวบรวมเป็นรหัสดั้งเดิม แต่เป็นตัวแทนที่ตีความได้เร็วขึ้น)

ในทางปฏิบัติการเร่งความเร็วเหล่านี้จะ เท่านั้น มีความเกี่ยวข้องกับสัญญา“ การรันหมายเลข” เนื่องจากเวลาการคำนวณนั้นถูกครอบงำโดยการเข้าถึงพื้นที่เก็บข้อมูลเป็นส่วนใหญ่ ในทางกลับกันเกณฑ์มาตรฐาน“ RNG” นั้นค่อนข้างคล้ายกับการดำเนินการเข้ารหัสซึ่งดึงสิ่งต่าง ๆ ดังกล่าวเข้าไปในขอบเขตของการใช้งานบนห่วงโซ่จริง

Paweł Bylica กำลังทำงานกับไฟล์ อินเตอร์เฟสภาษา C ระหว่างการใช้งานเครื่องเสมือนและไคลเอนต์ที่โฮสต์โดยมีเป้าหมายเพื่อให้สามารถเสียบ VM ที่แตกต่างกันเข้ากับไคลเอนต์ Ethereum ด้วยวิธีนี้ Geth ยังสามารถได้รับประโยชน์จากการเปลี่ยนแปลงของเราไปยังเครื่องเสมือน C ++ และโดยเฉพาะอย่างยิ่งจากคอมไพเลอร์ LLVM ในเวลา

โปรดทราบว่าการเปลี่ยนแปลงเหล่านี้ยังไม่ได้รับการปล่อยตัว แต่เป็นส่วนหนึ่งของไฟล์ Ubuntu Dev PPA

รีมิกซ์

Yann Levreau และ Liana Husikyan กำลังทำงานเกี่ยวกับ EVM Debugger Remix ใหม่ของเรา เราเปิดตัวเวอร์ชันอัลฟ่าเมื่อหลายวันก่อน:

แอปพลิเคชันคำแนะนำ

สำหรับตอนนี้คุณสามารถ“ ใช้” เท่านั้นเพื่อตรวจสอบทุกขั้นตอนในการดำเนินการธุรกรรมใด ๆ ใน blockchain ดูที่สแต็กปัจจุบันหน่วยความจำและเนื้อหาที่เก็บข้อมูลและดูลำดับของคำแนะนำ ขั้นตอนต่อไปคือการอนุญาตให้ทำการดีบักระดับแหล่งที่มาซึ่งคุณสามารถดูตำแหน่งปัจจุบันในซอร์สโค้ดได้ขั้นตอนที่บรรทัดหรือระดับคำสั่งและดูค่าที่ถอดรหัสของตัวแปร (แทนที่จะเป็นค่า hex ดิบเท่านั้น)

ดีบักเกอร์มีไว้สำหรับคุณชุมชนและเรามีความยินดีที่ได้ทราบว่า Etherscan ได้รวมรีมิกซ์เข้ากับพวกเขาแล้ว Blockchain Explorer

การปรับโครงสร้างองค์กร

Bob Summerwill อุทิศตนเพื่อนำ C ++ กลับมา-Ethereum ไปยังบ้านเก่า https://github.com/ethereum/cpp-ethereum และทำให้การแยกที่ไม่จำเป็น เรากำลังก้าวหน้าอย่างมากที่นั่นหนึ่งในขั้นตอนแรกที่มองเห็นได้จริงคือการแยกโครงสร้างพื้นฐานการทดสอบของความแข็งแกร่งจากการใช้งานเครื่องเสมือนจริง ตอนนี้การทดสอบความแข็งแกร่งสามารถรวบรวมได้โดยไม่ต้องใช้เครื่องเสมือนจริงและพวกเขาจะทำงานโดยการสื่อสารกับกระบวนการ ETH ที่กำหนดค่าเป็นพิเศษ (หนึ่งที่กล่าวถึงข้างต้น) ผ่านอินเตอร์เฟส IPC ปกติ

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

เมื่อรวมกับขั้นตอนนี้เราน่าเสียดายที่ต้องทำ กล่าวคำอำลากับ Alethzero (Spirit of Combine จะอยู่ในโครงการรีมิกซ์ใหม่) ภาระที่พวกเขาลากไปจะใหญ่เกินไปเพราะมันมี QT และการมีเพศสัมพันธ์แน่นกับความแข็งแกร่ง ดังที่ได้อธิบายไว้แล้วในโพสต์ก่อนหน้านี้การเชื่อมต่อ IPC แบบหลวมของเครื่องมือเหล่านี้กับการใช้งานไคลเอนต์ขนาดเล็กทำให้เรามีความยืดหยุ่นมากขึ้นและการสนับสนุนชุมชนที่มาพร้อมกับการเปลี่ยนแปลงเครื่องมือ JavaScript และเว็บบนเว็บเช่นรีมิกซ์และเบราว์เซอร์

การตรวจสอบอย่างเป็นทางการ

เรากำลังขยายเครื่องมือตรวจสอบอย่างเป็นทางการที่มีอยู่รวมกับความแข็งแกร่งเพื่อการโทรข้ามสัญญา สิ่งนี้จะช่วยให้การพิสูจน์อัตโนมัติว่าเช่นการโจมตีการโทรแบบเรียกซ้ำไม่สามารถใช้กับสัญญาที่แน่นอนได้ นอกจากนี้ทำไม 3 (เครื่องมือที่เราใช้ในการยกหนัก) เพิ่งถูกส่งไปยังเมื่อเร็ว ๆ นี้ เบราว์เซอร์เราอาจคาดหวังได้ว่ามันจะพร้อมใช้งานภายในเบราว์เซอร์-โซลและเครื่องมืออื่น ๆ เช่นนักสำรวจบล็อกเชน!

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

การพิสูจน์แนวคิดนี้หวังว่าจะพัฒนาเป็นเครื่องมือที่ใช้งานได้ในสัปดาห์หน้า

หลายคนจากชุมชนและจากภายในมูลนิธิกำลังทำงานเกี่ยวกับเครื่องมือเพื่อความแข็งแกร่งหรือ EVM โดยทั่วไป เหล่านี้รวมถึง:

  1. การวิเคราะห์ความแข็งแกร่ง AST สำหรับคำเตือนโดย Dave Hoover (@Redsquirrel)
  2. Solidity โดย Raineorshine เวอร์ชันพิมพ์ Solidity-REPL
  3. กราฟการวิเคราะห์การควบคุมการไหล นอกจากนี้โดย Raineorshine
  4. Disassembler EVM โดย Nick Johnson
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

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