หนึ่งในวิธีที่ตรงไปตรงมาที่สุดในการประหยัดน้ำมันก็คือการทำให้โค้ดของคุณง่ายขึ้น ยิ่งมีโค้ดให้รันน้อยก็กินแก๊สน้อยลง
พิจารณาฟังก์ชันต่อไปนี้:
ความแข็งแกร่ง
ความแข็งแกร่งของแพรกมา ^0.8.9;
สัญญาการเพิ่มประสิทธิภาพตัวอย่าง {
ที่อยู่ [] ผู้ดูแลระบบสาธารณะ;
ฟังก์ชั่น isUserAdmin (ผู้ใช้ที่อยู่) มุมมองสาธารณะส่งคืน (บูล) {
สำหรับ (uint i = 0; i < admins.length; i++) {
if (admins[i] == user) return true;
}
คืนค่าเท็จ;
}
}
ฟังก์ชันด้านบนใช้การวนซ้ำ ซึ่งจะมีค่าใช้จ่ายมากขึ้นเมื่อมีการเพิ่มผู้ดูแลระบบมากขึ้น โครงสร้างที่ประหยัดก๊าซมากขึ้นจะใช้การทำแผนที่:
Solidity
สัญญา OptimizationExampleOptimized {
การแมป (ที่อยู่ => บูล) ผู้ดูแลระบบสาธารณะ;
ฟังก์ชั่น isUserAdmin (ผู้ใช้ที่อยู่) มุมมองสาธารณะส่งคืน (บูล) {
return admins[user];
}
}
เมื่อทำงานกับ Ethereum โปรดจำไว้ว่าคุณต้องจ่ายเงินสำหรับพื้นที่จัดเก็บทุกบิต หากคุณพบว่าตัวเองจัดเก็บข้อมูลเดียวกันไว้ในหลายๆ ที่ ให้ลองพิจารณาว่าจะเก็บข้อมูลดังกล่าวเพียงครั้งเดียวและอ้างอิงไปที่อื่นได้อย่างไร
Libraries in Solidity เป็นโค้ดที่สามารถนำมาใช้ซ้ำได้ พวกเขาสามารถช่วยคุณเขียนโค้ดโมดูลาร์ได้ และเนื่องจากมีการใช้งานเพียงครั้งเดียวและเชื่อมโยงกับสัญญาอื่นๆ จึงช่วยประหยัดน้ำมันในระยะยาว
Solidity
ไลบรารี SafeMath {
ฟังก์ชั่น เพิ่ม (uint a, uint b) ผลตอบแทนบริสุทธิ์ภายใน (uint) {
uint c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
//... ฟังก์ชันทางคณิตศาสตร์อื่นๆ
}
สัญญา การใช้SafeMath {
ใช้ SafeMath สำหรับ uint;
ไม่ใช่คุณค่าสาธารณะ; การเพิ่มฟังก์ชัน
รายการ (uint _value) สาธารณะ {
value = value.add(_value);
}
}
คีย์เวิร์ด delete
ใน Solidity ช่วยให้คุณสามารถลบล้างตัวแปร ซึ่งจะคืนค่าแก๊สบางส่วน หากคุณจัดเก็บพื้นที่บางส่วนเสร็จแล้ว ให้ลบออกเพื่อรับเงินคืน
แม้ว่าการจัดเก็บข้อมูลบนบล็อกเชนอาจมีค่าใช้จ่ายสูง แต่เหตุการณ์การบันทึกก็ค่อนข้างถูกกว่า หากคุณมีข้อมูลที่ไม่จำเป็นต้องอ่านจากสัญญาแต่ควรตรวจสอบได้ ให้ลองใช้บันทึกเหตุการณ์
การดำเนินการบางอย่างต้องใช้แก๊สมากกว่าการดำเนินการอื่นๆ ตัวอย่างเช่น:
การเพิ่มประสิทธิภาพสัญญาอัจฉริยะสำหรับก๊าซเป็นทั้งศิลปะและวิทยาศาสตร์ แนวทางที่กล่าวถึงในหลักสูตรนี้เมื่อรวมกันแล้วมีศักยภาพในการลดต้นทุนค่าน้ำมันในสัญญาของคุณได้อย่างมาก โปรดทราบว่าระบบนิเวศของ Ethereum และเครื่องมือต่างๆ รวมถึง Remix นั้นมีการเปลี่ยนแปลงอยู่เสมอ ติดตามข่าวสารล่าสุด และทดสอบและปรับปรุงสัญญาของคุณเป็นประจำเพื่อการเพิ่มประสิทธิภาพ ชุมชน Ethereum มีขนาดใหญ่และให้ความช่วยเหลือ ดังนั้นอย่ากลัวที่จะขอคำแนะนำหรือแนวปฏิบัติที่ดีที่สุด ขอให้สนุกในการเขียนโค้ด!
หนึ่งในวิธีที่ตรงไปตรงมาที่สุดในการประหยัดน้ำมันก็คือการทำให้โค้ดของคุณง่ายขึ้น ยิ่งมีโค้ดให้รันน้อยก็กินแก๊สน้อยลง
พิจารณาฟังก์ชันต่อไปนี้:
ความแข็งแกร่ง
ความแข็งแกร่งของแพรกมา ^0.8.9;
สัญญาการเพิ่มประสิทธิภาพตัวอย่าง {
ที่อยู่ [] ผู้ดูแลระบบสาธารณะ;
ฟังก์ชั่น isUserAdmin (ผู้ใช้ที่อยู่) มุมมองสาธารณะส่งคืน (บูล) {
สำหรับ (uint i = 0; i < admins.length; i++) {
if (admins[i] == user) return true;
}
คืนค่าเท็จ;
}
}
ฟังก์ชันด้านบนใช้การวนซ้ำ ซึ่งจะมีค่าใช้จ่ายมากขึ้นเมื่อมีการเพิ่มผู้ดูแลระบบมากขึ้น โครงสร้างที่ประหยัดก๊าซมากขึ้นจะใช้การทำแผนที่:
Solidity
สัญญา OptimizationExampleOptimized {
การแมป (ที่อยู่ => บูล) ผู้ดูแลระบบสาธารณะ;
ฟังก์ชั่น isUserAdmin (ผู้ใช้ที่อยู่) มุมมองสาธารณะส่งคืน (บูล) {
return admins[user];
}
}
เมื่อทำงานกับ Ethereum โปรดจำไว้ว่าคุณต้องจ่ายเงินสำหรับพื้นที่จัดเก็บทุกบิต หากคุณพบว่าตัวเองจัดเก็บข้อมูลเดียวกันไว้ในหลายๆ ที่ ให้ลองพิจารณาว่าจะเก็บข้อมูลดังกล่าวเพียงครั้งเดียวและอ้างอิงไปที่อื่นได้อย่างไร
Libraries in Solidity เป็นโค้ดที่สามารถนำมาใช้ซ้ำได้ พวกเขาสามารถช่วยคุณเขียนโค้ดโมดูลาร์ได้ และเนื่องจากมีการใช้งานเพียงครั้งเดียวและเชื่อมโยงกับสัญญาอื่นๆ จึงช่วยประหยัดน้ำมันในระยะยาว
Solidity
ไลบรารี SafeMath {
ฟังก์ชั่น เพิ่ม (uint a, uint b) ผลตอบแทนบริสุทธิ์ภายใน (uint) {
uint c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
//... ฟังก์ชันทางคณิตศาสตร์อื่นๆ
}
สัญญา การใช้SafeMath {
ใช้ SafeMath สำหรับ uint;
ไม่ใช่คุณค่าสาธารณะ; การเพิ่มฟังก์ชัน
รายการ (uint _value) สาธารณะ {
value = value.add(_value);
}
}
คีย์เวิร์ด delete
ใน Solidity ช่วยให้คุณสามารถลบล้างตัวแปร ซึ่งจะคืนค่าแก๊สบางส่วน หากคุณจัดเก็บพื้นที่บางส่วนเสร็จแล้ว ให้ลบออกเพื่อรับเงินคืน
แม้ว่าการจัดเก็บข้อมูลบนบล็อกเชนอาจมีค่าใช้จ่ายสูง แต่เหตุการณ์การบันทึกก็ค่อนข้างถูกกว่า หากคุณมีข้อมูลที่ไม่จำเป็นต้องอ่านจากสัญญาแต่ควรตรวจสอบได้ ให้ลองใช้บันทึกเหตุการณ์
การดำเนินการบางอย่างต้องใช้แก๊สมากกว่าการดำเนินการอื่นๆ ตัวอย่างเช่น:
การเพิ่มประสิทธิภาพสัญญาอัจฉริยะสำหรับก๊าซเป็นทั้งศิลปะและวิทยาศาสตร์ แนวทางที่กล่าวถึงในหลักสูตรนี้เมื่อรวมกันแล้วมีศักยภาพในการลดต้นทุนค่าน้ำมันในสัญญาของคุณได้อย่างมาก โปรดทราบว่าระบบนิเวศของ Ethereum และเครื่องมือต่างๆ รวมถึง Remix นั้นมีการเปลี่ยนแปลงอยู่เสมอ ติดตามข่าวสารล่าสุด และทดสอบและปรับปรุงสัญญาของคุณเป็นประจำเพื่อการเพิ่มประสิทธิภาพ ชุมชน Ethereum มีขนาดใหญ่และให้ความช่วยเหลือ ดังนั้นอย่ากลัวที่จะขอคำแนะนำหรือแนวปฏิบัติที่ดีที่สุด ขอให้สนุกในการเขียนโค้ด!