Tuesday, July 15, 2025
Homeอีเธอเรียมความคิดเพิ่มเติมเกี่ยวกับการเขียนสคริปต์และความเข้ากันได้ในอนาคต

ความคิดเพิ่มเติมเกี่ยวกับการเขียนสคริปต์และความเข้ากันได้ในอนาคต



โพสต์ก่อนหน้าของฉันแนะนำ Ethereum Script 2.0 ได้รับการตอบสนองด้วยการตอบสนองจำนวนมากบางคนที่ให้การสนับสนุนอย่างสูงคนอื่น ๆ แนะนำว่าเราเปลี่ยนไปใช้กระบวนทัศน์ที่ใช้สแต็ค / แอสเซมบลี / การใช้งานที่ต้องการและนำเสนอการวิพากษ์วิจารณ์ที่เฉพาะเจาะจงที่เรากำลังมองหาอย่างหนัก บางทีคำวิจารณ์ที่แข็งแกร่งที่สุดในครั้งนี้มาจาก Sergio Damian Lernerนักวิจัยด้านความปลอดภัยของ Bitcoin ผู้พัฒนา Qixcoin และผู้ที่เรารู้สึกขอบคุณเขา การวิเคราะห์กริช– Sergio วิพากษ์วิจารณ์การเปลี่ยนแปลงสองด้านโดยเฉพาะอย่างยิ่ง: ระบบค่าธรรมเนียมซึ่งเปลี่ยนจากการออกแบบแบบง่าย ๆ แบบง่าย ๆ ที่ทุกอย่างเป็น basefee ที่มีความหลากหลายและการสูญเสียของ crypto opcodes

crypto opcodes เป็นส่วนสำคัญของการโต้แย้งของ Sergio และฉันจะจัดการกับปัญหานั้นก่อน ใน Ethereum Script 1.0 ชุด opcode มีคอลเลกชันของ opcodes ที่มีความเชี่ยวชาญรอบฟังก์ชั่นการเข้ารหัสบางอย่าง – ตัวอย่างเช่นมี opcode sha3 ซึ่งจะใช้ความยาวและดัชนีหน่วยความจำเริ่มต้นออกจากสแต็กแล้วผลัก sha3 ของสตริงที่นำมาจากจำนวนบล็อกที่ต้องการในหน่วยความจำเริ่มต้นจากดัชนีเริ่มต้น มี opcodes ที่คล้ายกันสำหรับ sha256 และ ripemd160 และยังมี crypto opcodes ที่มุ่งเน้นรอบ Secp256K1 การผ่าตัดรูปวงรี ใน ES2 opcodes เหล่านั้นหายไป แต่พวกเขาจะถูกแทนที่ด้วยระบบของเหลวที่ผู้คนจะต้องเขียน sha256 ใน ES ด้วยตนเอง (ในทางปฏิบัติเราจะนำเสนอ commision หรือ bounty สำหรับสิ่งนี้) และต่อมาในล่ามอัจฉริยะสามารถแทนที่สคริปต์ sha256 es ด้วยรหัสเครื่องจักรเก่า จากมุมมองภายนอก ES SHA256 และรหัสเครื่อง SHA256 นั้นแยกไม่ออก พวกเขาทั้งสองคำนวณฟังก์ชั่นเดียวกันและดังนั้นจึงทำการเปลี่ยนแปลงแบบเดียวกันกับสแต็กความแตกต่างเพียงอย่างเดียวคือหลังนั้นเร็วกว่าหลายร้อยเท่าทำให้เรามีประสิทธิภาพเหมือนกันราวกับว่า SHA256 เป็น opcode จากนั้นระบบค่าธรรมเนียมที่ยืดหยุ่นนั้นสามารถนำไปใช้เพื่อให้ SHA256 ราคาถูกกว่าเพื่อรองรับเวลาในการคำนวณที่ลดลงทำให้ราคาถูกเท่ากับ Opcode ตอนนี้

อย่างไรก็ตาม Sergio ชอบวิธีการที่แตกต่าง: การมาพร้อมกับ crypto opcodes จำนวนมากออกจากกล่องและใช้การเปลี่ยนแปลงโปรโตคอลการแสบร้อนเพื่อเพิ่มใหม่หากจำเป็นต้องลงบรรทัดเพิ่มเติม เขาเขียน:

ครั้งแรกหลังจาก 3 ปีของการเฝ้าดู bitcoin อย่างใกล้ชิดฉันก็เข้าใจสิ่งนั้น cryptocurrency ไม่ใช่โปรโตคอลหรือสัญญาหรือเครือข่ายคอมพิวเตอร์ cryptocurrency เป็นชุมชน– ด้วยข้อยกเว้นของค่าคงที่น้อยมากเช่นฟังก์ชั่นการจัดหาเงินและยอดคงเหลือทั่วโลกทุกอย่างสามารถเปลี่ยนแปลงได้ในอนาคตตราบใดที่การเปลี่ยนแปลงประกาศล่วงหน้า โปรโตคอล Bitcoin ทำงานได้ดีจนถึงตอนนี้ แต่เรารู้ว่าในระยะยาวมันจะเผชิญกับปัญหาความสามารถในการปรับขนาดและจะต้องเปลี่ยนตามนั้น ผลประโยชน์ระยะสั้นเช่นความเรียบง่ายของโปรโตคอลและฐานรหัสช่วยให้ Bitcoin ได้รับการยอมรับทั่วโลกและเอฟเฟกต์เครือข่าย รหัสอ้างอิงของ Bitcoin เวอร์ชัน 0.8 เป็นเรื่องง่ายเหมือนรุ่น 0.3 หรือไม่? ไม่เลย. ขณะนี้มีแคชและการเพิ่มประสิทธิภาพทุกที่เพื่อให้ได้ประสิทธิภาพสูงสุดและความปลอดภัยของ DOS ที่สูงขึ้น แต่ไม่มีใครสนใจเรื่องนี้ (และไม่มีใครควร) cryptocurrency ถูก bootstrapped โดยเริ่มต้นด้วยข้อเสนอค่าง่าย ๆ ที่ทำงานในระยะสั้น/กลาง

นี่คือจุดที่มักจะนำขึ้นมาเกี่ยวกับ bitcoin อย่างไรก็ตามยิ่งฉันดูสิ่งที่เกิดขึ้นจริงในการพัฒนา bitcoin ยิ่งฉันตั้งค่าอย่างมั่นคงในตำแหน่งของฉันว่ายกเว้นโปรโตคอลการเข้ารหัสในระยะเริ่มแรกที่อยู่ในวัยเด็กและเห็นการใช้งานจริงต่ำมาก ขณะนี้มีข้อบกพร่องมากมายใน Bitcoin ที่สามารถเปลี่ยนแปลงได้หากเรามีความตั้งใจร่วมกันเท่านั้น เพื่อใช้ตัวอย่างเล็ก ๆ น้อย ๆ :

  1. ขีด จำกัด ขนาดบล็อก 1 MB– ขณะนี้มีข้อ จำกัด อย่างหนักที่บล็อก bitcoin ไม่สามารถทำธุรกรรมได้มากกว่า 1 MB ในการทำธุรกรรมประมาณเจ็ดรายการต่อวินาที เราเริ่มแปรงกับขีด จำกัด นี้แล้วโดยมีประมาณ 250 kb ในแต่ละบล็อกและมันกดดันค่าธรรมเนียมการทำธุรกรรมแล้ว ในประวัติศาสตร์ส่วนใหญ่ของ Bitcoin ค่าธรรมเนียมอยู่ที่ประมาณ $ 0.01 และทุกครั้งที่ราคาเพิ่มขึ้นค่าธรรมเนียม BTC เริ่มต้นที่ผู้ขุดยอมรับจะถูกปรับลดลง อย่างไรก็ตามตอนนี้ค่าธรรมเนียมติดอยู่ที่ $ 0.08 และนักพัฒนาไม่ได้ปรับตัวลงเนื่องจากการปรับค่าธรรมเนียมกลับลงไปที่ $ 0.01 จะทำให้จำนวนการทำธุรกรรมเพื่อแปรงกับขีด จำกัด 1 MB การลบขีด จำกัด นี้หรืออย่างน้อยที่สุดการตั้งค่าให้เป็นค่าที่เหมาะสมกว่าเช่น 32 MB คือการเปลี่ยนแปลงเล็กน้อย มันเป็นเพียงหมายเลขเดียวในซอร์สโค้ดและมันจะทำสิ่งที่ดีมากในการตรวจสอบให้แน่ใจว่า bitcoin ยังคงใช้ในระยะกลาง และยังนักพัฒนา Bitcoin ล้มเหลวอย่างสมบูรณ์ที่จะทำ
  2. ข้อผิดพลาด op_checkmultisig– มีข้อผิดพลาดที่รู้จักกันดีใน Op_CheckMultisig Operator ใช้ในการใช้ธุรกรรมหลายมิติใน Bitcoin ซึ่งต้องใช้ศูนย์จำลองเพิ่มเติมเป็นอาร์กิวเมนต์ที่ถูกผุดออกมาจากสแต็กและไม่ได้ใช้ นี่เป็นสิ่งที่ไม่ง่ายและสับสน เมื่อฉันทำงานเป็นการส่วนตัว Pybitcointoolsฉันติดอยู่หลายวันพยายามที่จะคิดออกว่า Dummy Zero ควรจะอยู่ที่ด้านหน้าหรือแทนที่คีย์สาธารณะที่หายไปใน 2-of-3 multisig และไม่ว่าจะมีสองศูนย์จำลองใน multisig 1-of-3 ในที่สุดฉันก็คิดออก แต่ฉันจะคิดออกเร็วกว่ามากหากมีการทำงานของผู้ประกอบการ TheOP_CheckMultisig นั้นใช้งานง่ายกว่า และถึงกระนั้นข้อผิดพลาดก็ยังไม่ได้รับการแก้ไข
  3. ไคลเอนต์ Bitcoind– ไคลเอนต์ Bitcoind เป็นที่รู้จักกันดีว่าเป็นสิ่งที่ไม่แน่นอนและไม่เป็นโมเดล ในความเป็นจริงปัญหานั้นร้ายแรงมากที่ทุกคนที่ต้องการสร้างทางเลือก bitcoind ที่ปรับขนาดได้มากขึ้นและเป็นมิตรกับองค์กรไม่ได้ใช้ bitcoind เลยแทนที่จะเริ่มต้นจากศูนย์ นี่ไม่ใช่ปัญหาหลักของโปรโตคอลและการเปลี่ยนแปลงในทางทฤษฎีไคลเอนต์ Bitcoind ไม่จำเป็นต้องเกี่ยวข้องกับการเปลี่ยนแปลงที่ยากลำบากใด ๆ เลย แต่การปฏิรูปที่จำเป็นยังไม่ได้ดำเนินการ

ปัญหาทั้งหมดเหล่านี้ไม่ได้อยู่ที่นั่นเพราะนักพัฒนา Bitcoin นั้นไร้ความสามารถ พวกเขาไม่ได้; ในความเป็นจริงพวกเขาเป็นโปรแกรมเมอร์ที่มีทักษะมากที่มีความรู้อย่างลึกซึ้งเกี่ยวกับการเข้ารหัสและปัญหาฐานข้อมูลและเครือข่ายที่มีอยู่ในการออกแบบไคลเอนต์ cryptocurrency ปัญหาอยู่ที่นั่นเพราะนักพัฒนา Bitcoin ตระหนักดีว่า Bitcoin เป็นรถไฟ 10 พันล้านดอลลาร์ที่พุ่งสูงขึ้นที่ 400 กิโลเมตรต่อชั่วโมงและหากพวกเขาพยายามเปลี่ยนเครื่องยนต์กึ่งกลางและแม้แต่สลักเกลียวที่น้อยที่สุด การเปลี่ยนแปลงอย่างง่ายเหมือนการสลับฐานข้อมูลย้อนกลับไปในเดือนมีนาคม 2554 เกือบจะทำ– นี่คือเหตุผลว่าทำไมในความคิดของฉันจึงไม่รับผิดชอบที่จะทิ้งโปรโตคอลที่ได้รับการออกแบบมาไม่ดีและไม่พิสูจน์ในอนาคตและเพียงแค่บอกว่าโปรโตคอลสามารถอัปเดตได้ในเวลาที่กำหนด ในทางตรงกันข้ามโปรโตคอลจะต้องได้รับการออกแบบให้มีระดับความยืดหยุ่นที่เหมาะสมตั้งแต่เริ่มต้นเพื่อให้การเปลี่ยนแปลงสามารถทำได้โดยฉันทามติเป็นโดยอัตโนมัติโดยไม่จำเป็นต้องอัปเดตซอฟต์แวร์ใด ๆ

ตอนนี้เพื่อแก้ไขปัญหาที่สองของ Sergio qualm หลักของเขาที่มีค่าธรรมเนียมที่แก้ไขได้: หากค่าธรรมเนียมสามารถขึ้นและลงได้มันจะกลายเป็นเรื่องยากมากสำหรับสัญญาที่จะกำหนดค่าธรรมเนียมของตัวเองและหากมีค่าธรรมเนียมเพิ่มขึ้นโดยไม่คาดคิดนั่นอาจเปิดช่องโหว่ที่ผู้โจมตีอาจสามารถบังคับสัญญา ฉันต้องขอบคุณ Sergio ที่ทำประเด็นนี้ มันเป็นสิ่งที่ฉันยังไม่ได้พิจารณาอย่างเพียงพอและเราจะต้องคิดอย่างรอบคอบเมื่อทำการออกแบบของเรา อย่างไรก็ตามการแก้ปัญหาของเขาการอัปเดตโปรโตคอลด้วยตนเองนั้นไม่ดีไปกว่านี้อีกแล้ว การอัปเดตโปรโตคอลที่โครงสร้างค่าธรรมเนียมการเปลี่ยนแปลงสามารถเปิดเผยช่องโหว่ทางเศรษฐกิจใหม่ในสัญญาได้เช่นกันและพวกเขาก็ยากที่จะชดเชยเพราะไม่มีข้อ จำกัด ใด ๆ เกี่ยวกับการอัปเดตโปรโตคอลเนื้อหา

แล้วเราจะทำอย่างไร? ก่อนอื่นมีวิธีแก้ปัญหาระดับกลางมากมายระหว่างวิธีการของ Sergio-มาพร้อมกับชุด opcodes แบบ จำกัด ที่ จำกัด ซึ่งสามารถเพิ่มได้เฉพาะกับการเปลี่ยนแปลงโปรโตคอลที่ยากลำบาก-และความคิดที่ฉันให้ไว้ในบล็อก ES2 ของการมีคนงานเหมืองโหวตค่าธรรมเนียมที่เปลี่ยนแปลงอย่างคล่องแคล่ว วิธีหนึ่งอาจทำให้ระบบการลงคะแนนไม่ต่อเนื่องมากขึ้นดังนั้นจะมีเส้นแบ่งที่ยากระหว่างสคริปต์ที่ต้องจ่ายค่าธรรมเนียม 100% และสคริปต์ที่“ ได้รับการเลื่อนตำแหน่ง” เป็น opcode ที่ต้องจ่าย cryptofee 20x เท่านั้น สิ่งนี้สามารถทำได้ผ่านการรวมกันของการนับการใช้งานการลงคะแนนคนงานเหมืองการลงคะแนนผู้ถืออีเธอร์หรือกลไกอื่น ๆ นี่เป็นกลไกในตัวสำหรับการทำ Hardforks ที่ไม่ต้องการการอัพเดทซอร์สโค้ดใด ๆ ในทางเทคนิคทำให้มันเป็นของเหลวและไม่หยุดนิ่งมากกว่าวิธีการทำงานแบบแมนนวล ประการที่สองมันเป็นสิ่งสำคัญที่จะชี้ให้เห็นอีกครั้งว่าความสามารถในการเข้ารหัสลับที่แข็งแกร่งนั้นไม่ได้หายไปแม้มาจาก Genesis Block; เมื่อเราเปิดตัว Ethereum เราจะสร้างสัญญา SHA256 สัญญา SHA3 ฯลฯ และ“ premine” พวกเขาเข้าสู่สถานะการใช้รหัสหลอกตั้งแต่เริ่มต้น ดังนั้น Ethereum จะมาพร้อมกับแบตเตอรี่ ความแตกต่างคือแบตเตอรี่จะรวมอยู่ในลักษณะที่ช่วยให้สามารถรวมแบตเตอรี่ได้มากขึ้นในอนาคต

แต่มันเป็นสิ่งสำคัญที่จะต้องทราบว่าฉันพิจารณาความสามารถนี้ในการเพิ่ม crypto ops ที่มีประสิทธิภาพในอนาคตที่จะต้องบังคับ ในทางทฤษฎีมันเป็นไปได้ที่จะมีสัญญา“ Zerocoin” ภายใน Ethereum หรือสัญญาโดยใช้หลักฐานการเข้ารหัสลับของการคำนวณ (SCIP) และการเข้ารหัส homomorphic อย่างเต็มที่เพื่อให้คุณสามารถใช้ Ethereum เป็น“ อินสแตนซ์ Amazon EC2 ที่กระจายอำนาจ” เมื่อการคำนวณควอนตัมออกมาเราอาจต้องย้ายไปทำสัญญาที่พึ่งพา NTRU หนึ่ง sha4 หรือ sha5 ออกมาเราอาจต้องย้ายไปทำสัญญาที่พึ่งพาพวกเขา ครั้งหนึ่ง เทคโนโลยีการทำให้งงงวย การครบกำหนดสัญญาจะต้องพึ่งพาสิ่งนั้นเพื่อจัดเก็บข้อมูลส่วนตัว แต่เพื่อให้ทุกอย่างเป็นไปได้ด้วยสิ่งใดที่น้อยกว่าค่าธรรมเนียม $ 30 ต่อการทำธุรกรรมการเข้ารหัสพื้นฐานจะต้องดำเนินการใน C ++ หรือรหัสเครื่องและจะต้องมีโครงสร้างค่าธรรมเนียมที่ลดค่าธรรมเนียมสำหรับการดำเนินการอย่างเหมาะสมเมื่อทำการปรับให้เหมาะสม นี่เป็นความท้าทายที่ฉันไม่เห็นคำตอบง่าย ๆ และความคิดเห็นและคำแนะนำยินดีต้อนรับอย่างมาก

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

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