Lição 3

เทคนิคการปรับแก๊สให้เหมาะสมพร้อมรีมิกซ์

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

การเพิ่มประสิทธิภาพการจัดเก็บข้อมูล

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

เหตุใดพื้นที่เก็บข้อมูลจึงมีราคาแพง?

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

ตัวแปรการจัดเก็บการบรรจุ

แนะนำสกุลเงิน

Solidity เก็บตัวแปรไว้ในช่อง แต่ละช่องมีขนาด 32 ไบต์ เมื่อตัวแปรสามารถใส่ลงในช่องเดียวได้ ก็สามารถอ่านหรืออัพเดตได้ด้วยการดำเนินการ SLOAD หรือ SSTORE เดียวตามลำดับ

ดังภาพตัวอย่าง

พิจารณาสัญญาสองฉบับ:

ความแข็งแกร่ง 
 // ไม่มีการเพิ่มประสิทธิภาพ 
 ความแข็งแกร่งของ pragma ^0.8.9; 

 สัญญา UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
ความแข็งแกร่ง 
 // ด้วยการเพิ่มประสิทธิภาพ 
 ความแข็งแกร่งของ pragma ^0.8.9; OptimizedStorage 

 สัญญา {
    uint128 public value1;
    uint128 public value2;
}
  1. ปรับใช้สัญญาทั้งสองใน Remix และจดบันทึกความแตกต่างของก๊าซเมื่อโต้ตอบกับตัวแปร

  2. ในเวอร์ชันที่ปรับให้เหมาะสม ทั้ง value1 และ value2 จะใช้ช่องขนาด 32 ไบต์ร่วมกัน

การใช้ช่องจัดเก็บข้อมูลซ้ำ

แนะนำสกุลเงิน

เมื่อคุณใช้ช่องจัดเก็บข้อมูลเสร็จแล้ว โดยเฉพาะการจัดเก็บข้อมูลชั่วคราว คุณสามารถลบหรือลบช่องดังกล่าวออกเพื่อรับค่าน้ำมันคืนได้

ดังภาพตัวอย่าง

ความแข็งแกร่ง 
 ความแข็งแกร่งของแพรกมา ^0.8.9; ตัวอย่างการคืนเงิน 

 สัญญา { 
 uint256 public temporaryData; 

 ฟังก์ชั่น storeTemporaryData (ข้อมูล uint256) สาธารณะ {
        temporaryData = data;
    }

    ฟังก์ชั่น clearTemporaryData () สาธารณะ {
        delete temporaryData;
    }
}
  1. ปรับใช้สัญญานี้ใน Remix

  2. เก็บข้อมูลชั่วคราวบางส่วนแล้วล้างข้อมูล

  3. ตรวจสอบค่าน้ำมัน. สังเกตการคืนเงินค่าน้ำมันที่คุณได้รับจากการดำเนินการ delete

การใช้เหตุการณ์แทนการจัดเก็บข้อมูลสำหรับข้อมูลในอดีต

แนะนำสกุลเงิน

หากไม่จำเป็นต้องเข้าถึงข้อมูลแบบออนไลน์ ให้พิจารณาบันทึกเป็นเหตุการณ์แทนที่จะเก็บไว้ กิจกรรมมีราคาถูกกว่าการดำเนินการจัดเก็บข้อมูลมาก

ดังภาพตัวอย่าง

ความแข็งแกร่ง 
 ความแข็งแกร่งของแพรกมา ^0.8.9; 

 สัญญา EventExample { 
 เหตุการณ์ DataStored (ข้อมูล uint256); 

 ฟังก์ชั่น storeData (ข้อมูล uint256) สาธารณะ {
        emit DataStored(data);
    }
}
  1. ปรับใช้และโต้ตอบกับสัญญาใน Remix

  2. สังเกตต้นทุนก๊าซที่ถูกกว่าเมื่อเปรียบเทียบกับการจัดเก็บ

มองไปข้างหน้า

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

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 3

เทคนิคการปรับแก๊สให้เหมาะสมพร้อมรีมิกซ์

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

การเพิ่มประสิทธิภาพการจัดเก็บข้อมูล

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

เหตุใดพื้นที่เก็บข้อมูลจึงมีราคาแพง?

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

ตัวแปรการจัดเก็บการบรรจุ

แนะนำสกุลเงิน

Solidity เก็บตัวแปรไว้ในช่อง แต่ละช่องมีขนาด 32 ไบต์ เมื่อตัวแปรสามารถใส่ลงในช่องเดียวได้ ก็สามารถอ่านหรืออัพเดตได้ด้วยการดำเนินการ SLOAD หรือ SSTORE เดียวตามลำดับ

ดังภาพตัวอย่าง

พิจารณาสัญญาสองฉบับ:

ความแข็งแกร่ง 
 // ไม่มีการเพิ่มประสิทธิภาพ 
 ความแข็งแกร่งของ pragma ^0.8.9; 

 สัญญา UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
ความแข็งแกร่ง 
 // ด้วยการเพิ่มประสิทธิภาพ 
 ความแข็งแกร่งของ pragma ^0.8.9; OptimizedStorage 

 สัญญา {
    uint128 public value1;
    uint128 public value2;
}
  1. ปรับใช้สัญญาทั้งสองใน Remix และจดบันทึกความแตกต่างของก๊าซเมื่อโต้ตอบกับตัวแปร

  2. ในเวอร์ชันที่ปรับให้เหมาะสม ทั้ง value1 และ value2 จะใช้ช่องขนาด 32 ไบต์ร่วมกัน

การใช้ช่องจัดเก็บข้อมูลซ้ำ

แนะนำสกุลเงิน

เมื่อคุณใช้ช่องจัดเก็บข้อมูลเสร็จแล้ว โดยเฉพาะการจัดเก็บข้อมูลชั่วคราว คุณสามารถลบหรือลบช่องดังกล่าวออกเพื่อรับค่าน้ำมันคืนได้

ดังภาพตัวอย่าง

ความแข็งแกร่ง 
 ความแข็งแกร่งของแพรกมา ^0.8.9; ตัวอย่างการคืนเงิน 

 สัญญา { 
 uint256 public temporaryData; 

 ฟังก์ชั่น storeTemporaryData (ข้อมูล uint256) สาธารณะ {
        temporaryData = data;
    }

    ฟังก์ชั่น clearTemporaryData () สาธารณะ {
        delete temporaryData;
    }
}
  1. ปรับใช้สัญญานี้ใน Remix

  2. เก็บข้อมูลชั่วคราวบางส่วนแล้วล้างข้อมูล

  3. ตรวจสอบค่าน้ำมัน. สังเกตการคืนเงินค่าน้ำมันที่คุณได้รับจากการดำเนินการ delete

การใช้เหตุการณ์แทนการจัดเก็บข้อมูลสำหรับข้อมูลในอดีต

แนะนำสกุลเงิน

หากไม่จำเป็นต้องเข้าถึงข้อมูลแบบออนไลน์ ให้พิจารณาบันทึกเป็นเหตุการณ์แทนที่จะเก็บไว้ กิจกรรมมีราคาถูกกว่าการดำเนินการจัดเก็บข้อมูลมาก

ดังภาพตัวอย่าง

ความแข็งแกร่ง 
 ความแข็งแกร่งของแพรกมา ^0.8.9; 

 สัญญา EventExample { 
 เหตุการณ์ DataStored (ข้อมูล uint256); 

 ฟังก์ชั่น storeData (ข้อมูล uint256) สาธารณะ {
        emit DataStored(data);
    }
}
  1. ปรับใช้และโต้ตอบกับสัญญาใน Remix

  2. สังเกตต้นทุนก๊าซที่ถูกกว่าเมื่อเปรียบเทียบกับการจัดเก็บ

มองไปข้างหน้า

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

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.