xDeFi Labs: ทุกแง่มุมของ Ethereum Gas
ชื่อเรื่องรอง
1. ตรรกะการบริโภคของ Ethereum blockchain Gas: GasPrice และ GasLimit
บนระบบบล็อกเชน ETH ไม่ว่าจะดำเนินการแบบใด ราคาก๊าซและค่าจำกัดก๊าซคือราคาที่คุณต้องจ่ายและต้องเข้าใจเมื่อดำเนินการ
หน่วยของ gasPrice มักจะเป็น gwei เนื่องจาก 1wei = 10^-18 eth ซึ่งเป็นหน่วยดั้งเดิมที่เล็กที่สุดของ eth 1gwei = 10^9wei = 10^-9th ซึ่งเป็นค่าที่ได้รับจากผู้ที่ต้องการดำเนินการกับ eth ในแต่ละครั้งที่พวกเขาแข่งขันกันเพื่อบรรจุทรัพยากรธุรกรรมในบล็อก กล่าวคือ อันที่มีราคาสูงสุดจะบรรจุไว้ ไม่เช่นนั้น ไม่สามารถบรรจุได้
บล็อกของ Eth ประสบปัญหา "บล็อกเต็ม" ชั่วคราว 2 ครั้งในช่วง 1CO mania ปลายปี 2017 และ 312 พังเมื่อต้นปี 2020 นั่นคือเมื่อผู้ใช้ใช้งานก็ต้องแย่งชิงพื้นที่บล็อกก็มีเช่นกัน ผู้ใช้จำนวนมากและใบเสนอราคาต่ำเกินไปที่จะบรรจุ ธุรกรรมล้มเหลวหลังจากช่วงระยะเวลาหนึ่ง แต่เนื่องจากการใช้ ERC-20USDT อย่างแพร่หลายในปี 2019 และการใช้ Uniswap อย่างแพร่หลายในปี 2020 จึงนำไปสู่การบล็อกเต็มรูปแบบตามปกติ (ปริมาณการใช้ก๊าซทั้งหมด gasLimit เกิน 12,500,000 ที่บล็อกสามารถรับได้
ชื่อเรื่องรอง
2. ทำอย่างไรให้มั่นใจว่า Gas ต่ำกว่าที่ระดับการคำนวณโปรแกรม Solidity
สไตล์การเขียนของ Solidity นั้นคล้ายกับจาวาสคริปต์เล็กน้อย และระดับการดำเนินการเฉพาะนั้นขึ้นอยู่กับการคอมไพล์เป็น opcodes ที่เรียกใช้ EVM ได้ ไม่ว่าจะคอมไพล์ opcode ประเภทใดเพื่อประหยัดน้ำมัน อย่างน้อยก็ในระดับ Solidity คุณสามารถค้นหาโอกาสในการประหยัดน้ำมันให้ได้มากที่สุด
การคิดคำนวณจำนวนเต็ม
Solidity ไม่มีเลขทศนิยมที่กำหนดโดย IEEE-754: การคำนวณเลขทศนิยมประเภทนี้แต่เดิมเป็นแนวทางในการออกแบบการลงทะเบียน CPU สำหรับฉันทามติของ "สากล เชิงกำหนด และสอดคล้องกัน" ประเภทข้อมูลที่พบมากที่สุดคือ uint256 และใช้จำนวนเต็มในการจำลองทศนิยมก่อนแล้วจึงจำลองพฤติกรรมของเลขทศนิยม แต่โดยรวมแล้ว ผู้เขียนโปรแกรมจำเป็นต้องมีการคิดเลขจำนวนเต็ม
สมมติว่าคุณมีไลบรารีคณิตศาสตร์ที่สะดวก คุณจะพบว่า a.div(2) นั้นไม่เร็วเท่ากับ a>>1 เนื่องจากการคูณและการหารของไลบรารีคณิตศาสตร์ยังคงทำได้โดยการเรียกใช้การดำเนินการที่ถูกกว่า
โชคดีที่ผู้บุกเบิกการพัฒนา eth (เช่น openzeppelin, gnosis, balancer เป็นต้น) ได้สร้างไลบรารีทางคณิตศาสตร์ขึ้นมาบางส่วนในกระบวนการดำเนินโครงการเพื่อให้คนอื่นๆ ใช้ การดำเนินการเหล่านี้ประกอบด้วยการดำเนินการเลขคณิตสี่รายการ การดึงกำลัง และการดำเนินการลอการิทึมเอกซ์โปเนนเชียล .
ต่อไปนี้คือคำแนะนำที่ดีเกี่ยวกับรูปแบบการคำนวณนอกเหนือจากการดำเนินการทั้งสี่เว็บลิงค์
B หลีกเลี่ยงการวนซ้ำเว้นแต่คุณจะรู้ถึงความซับซ้อนในการคำนวณของคุณ
เมื่อเงื่อนไขลูปเปิดอยู่ เช่น เงื่อนไขที่สองของลูป for ว่างเปล่า หรือเมื่อคำสั่ง while ตัดสินว่าเงื่อนไขเป็นจริง มันเป็นเรื่องง่ายที่จะไม่สามารถประมาณปริมาณการใช้ก๊าซของการคำนวณในเนื้อความของลูป ซึ่งจะทำให้ปริมาณการใช้แก๊สไม่เป็นที่ยอมรับ หรือ Metamask (และเครื่องมืออื่นๆ) ไม่สามารถประมาณค่า gasLimit ได้อย่างถูกต้อง ทำให้การเรียกสัญญา eth ล้มเหลว
นอกจากนี้ หากนักวิทยาศาสตร์ที่คุ้นเคยกับการเขียนสัญญาแบบ solidity เป็นพิเศษสามารถใช้ความพยายามเพียงเล็กน้อยในวิชาคณิตศาสตร์ ขอแนะนำให้อ้างถึง "Hacker's Delight" ซึ่งไม่เพียงเป็นประโยชน์ในการทำความเข้าใจไลบรารีทางคณิตศาสตร์เท่านั้น แต่ยังช่วยให้โค้ดแก๊สง่ายขึ้นอีกด้วย การบริโภค. ตัวอย่างเช่น ในกระบวนการพัฒนาคอมพิวเตอร์ เราได้เห็นการประยุกต์ใช้อัลกอริทึมของ Thor 3 กับวิธีการของนิวตัน:เว็บลิงค์แม้ว่าอัลกอริทึมนี้ยังคงใช้ได้เฉพาะกับตัวเลขทศนิยมมาตรฐาน IEEE-754 แต่ในด้านความมั่นคง ก็ยังมีเครื่องมือเพิ่มประสิทธิภาพอัลกอริทึมระดับมืออาชีพที่ลดการคำนวณที่รุนแรงให้กับอัลกอริทึมที่มีการสูญเสียน้อยมาก เช่นชื่อเรื่องรอง
ตาม
ตามเว็บลิงค์เมื่อได้รับเบาะแส Ethereum Yellow Paper จะแจกแจงรายละเอียดค่าธรรมเนียม
บทความนี้กล่าวถึงความแตกต่างของค่าใช้จ่ายระหว่าง Gtxdatazero และ Gtxdatanonzero ตรรกะของความแตกต่างหลักนี้คือ: ยิ่ง 00s ในที่อยู่ eth (โปรดทราบว่า 0 จะปรากฏเป็นคู่) โดยไม่คำนึงว่าที่อยู่นั้นเป็นสัญญาหรือการโอนโดยบุคคลธรรมดาก็ตาม ที่อยู่ออกจะช่วยประหยัดค่าน้ำมันได้มากหรือน้อย 0.4-5%
นอกจากนี้ อ้างอิงถึงรหัสการดำเนินการที่สอดคล้องกับการดำเนินการต่างๆ บน EVM คุณยังสามารถหลีกเลี่ยงการดำเนินการที่ใช้ก๊าซสูงได้มากที่สุด และใช้การดำเนินการที่ใช้ก๊าซต่ำเพื่อสร้างรหัสความแข็ง
สำหรับคนทั่วไป มันง่ายมากที่จะมีที่อยู่ที่ขึ้นต้นด้วย 0x00 และหนึ่งในเครื่องมือที่ใช้งานได้จริงที่สุดคือเว็บลิงค์ชื่อเรื่องรอง
4. ตระกูล GasToken: อีกหนึ่งการใช้งานจริง
นี่เป็นกรณีจริงของการสร้างก๊าซที่สามารถขอคืนได้เพื่อการทำลายล้าง
GST และ GST2 ถูกกำหนดขึ้นโดยนักวิจัยบางคนโดยพิจารณาจากลักษณะของ Gsclear และ Gssuicide ที่คืนเงินค่าธรรมเนียมก๊าซ ในหมู่พวกเขา GST ขึ้นอยู่กับการปล่อยพื้นที่จัดเก็บ (การคืนเงินของ Gsclear) และ GST2 ขึ้นอยู่กับสัญญาการปล่อยตัว (Gssuicide) โดยทั่วไปแล้วผู้คนจะคิดว่า ว่า GST2 รุ่นที่สองจะสมเหตุสมผลมากกว่า แต่ในกระบวนการพัฒนาเทคโนโลยี อันที่จริง GST2 อาจไม่มีข้อได้เปรียบเหนือ GST เสมอไป: หากการเพิ่มประสิทธิภาพการจัดเก็บสถานะปรากฏในเส้นทางทางเทคนิค ETH 1.x GST ก็อาจ นำในการฟื้นฟู
CHI gastoken ขนาด 1 นิ้วขึ้นอยู่กับ GST2 และจำนวน 00 ที่อยู่ในโทเค็นแอดเดรสนั้นเพิ่มขึ้น แต่เนื่องจากการดำเนินการเชิงพาณิชย์ที่ใช้งานมากขึ้นของ 1inch การดำเนินการนี้จึงค่อย ๆ กลายเป็นที่รู้จักอย่างกว้างขวาง
ชื่อเรื่องรอง
5. xDeFi&Labs เพิ่มประสิทธิภาพก๊าซอย่างไร
เมื่อพิจารณาถึงต้นทุนการตรวจสอบหลายล้านดอลลาร์ของโซลูชัน zksnarks layer2 ทีม xDeFi&Labs เลือกที่จะตรวจสอบความถูกต้องของผลิตภัณฑ์ก่อนเป็นการชั่วคราว
ในกระบวนการเพิ่มประสิทธิภาพผลิตภัณฑ์ ธุรกรรมของผู้ใช้ได้เกี่ยวข้องกับตรรกะของ a**b แล้ว โดยที่ b เป็นทศนิยมแทนด้วย uint256 และรับบทบาทปลอมเป็นทศนิยม ในกระบวนการออกแบบผลิตภัณฑ์ทางการเงิน การออกแบบความสมดุลของพูลสามารถลดค่า b จากทศนิยมระหว่าง [1,49] เป็น {1,2,3,4,6,8,12} ได้อย่างรวดเร็ว ของจำนวนเต็มบวกเพื่อประหยัดค่าน้ำมันหลายพันถึงหลายหมื่นบาท เมื่อเรียกไลบรารีคณิตศาสตร์ ส่วนที่เศษส่วนของไลบรารีคณิตศาสตร์บาลานเซอร์ไม่ได้ถูกเรียกจริงๆ แต่เรียกเฉพาะ bpowi เท่านั้น
ในระหว่างกระบวนการออกโทเค็นของ XDEX นั้น xDeFi&Labs ทำให้มั่นใจถึงความสามารถในการแข่งขันของที่อยู่ 0x00 ของตัวเองตามวิธีการที่กล่าวถึงในบทที่ 3 (มีการคำนวณว่า 12 ศูนย์เป็นทางออกเดียวที่เป็นไปได้ในขณะนี้ ซึ่งมากกว่า 11 ศูนย์ที่ใช้โดย TokenLon, ETH2 เลขศูนย์ 8 ตัวของที่อยู่การชำระเงิน 0 และเลขศูนย์ 6 ตัวของ GST2 จะสอดคล้องกับเลขศูนย์ 12 ตัวของ CHI 1 นิ้ว)
ในขั้นตอนการออกแบบของ xHalfLife เพื่อยืนยันว่าผู้ใช้มีรายได้เท่าใดที่สามารถถอนออกจากบัญชีที่ได้รับสิทธิ์ เวอร์ชันดั้งเดิมใช้วิธีการคำนวณแบบวงกลม และจำนวนรอบจะเกี่ยวข้องกับความแตกต่างของความสูงของบล็อกในกรณีที่รุนแรง เราสามารถรู้ได้ว่าหนึ่งสัปดาห์ครอบคลุมความแตกต่างของความสูงของบล็อกเป็นพันถึงหลายหมื่น หากแต่ละ loop body ใช้แก๊สเป็นร้อย ดังนั้น เมื่อผู้ใช้ถอนเงิน เท่าของค่าใช้จ่ายในการโอน) ดังนั้น จากสามฟังก์ชันของ fundStream, BalanceOf และ Withdraw การวนรอบจะถูกลบออก และ **b วิธีการทำให้ง่ายขึ้นจะดำเนินต่อไป ในเวลานี้ เราใช้ Keep clearer logic และปล่อยให้ความเรียบง่าย รหัสลูปในความคิดเห็นรหัส GitHub เมื่อโทร พิจารณาจากประสบการณ์ของผู้ใช้ (รายได้ของซูชิกระโดดขึ้นทุกบล็อค และรหัส xHalfLife เวอร์ชันแรกอาจทำไม่ได้) ความเป็นไปได้ที่ b จะเป็นทศนิยมถูกสงวนไว้


