Lição 5

Phần cuối tối ưu hóa hợp đồng thông minh - Mẹo và thủ thuật nâng cao

Trong các bài học trước, chúng tôi đã đề cập đến các khái niệm và công cụ cơ bản mà bạn cần để tối ưu hóa gas trên hợp đồng thông minh Ethereum, đặc biệt là sử dụng Remix IDE. Khi chúng ta kết thúc khóa học này, hãy cùng đi sâu vào một số kỹ thuật nâng cao và các phương pháp hay nhất. Bài học cuối cùng này sẽ kết hợp kiến thức mà chúng tôi đã tích lũy, đảm bảo rằng bạn sẽ có được sự hiểu biết toàn diện về tối ưu hóa gas trong hợp đồng thông minh Ethereum.

Tái cấu trúc và giảm độ phức tạp của mã

Một trong những cách đơn giản nhất để tiết kiệm xăng là làm cho mã của bạn đơn giản hơn. Càng có ít mã để thực thi thì lượng gas tiêu thụ càng ít.

Ví dụ thực hành

Hãy xem xét chức năng sau:

Độ rắn 
 độ rắn pragma ^0.8.9; 

 hợp đồng Tối ưu hóaVí dụ { 
 địa chỉ[] quản trị viên công khai; 

 hàm isUserAdmin(địa chỉ người dùng) dạng xem công khai trả về (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        trả về sai; 
 } 
 }

Hàm trên sử dụng vòng lặp, việc này sẽ tốn kém hơn khi có thêm nhiều quản trị viên. Một cấu trúc tiết kiệm khí hơn sẽ sử dụng bản đồ:

Hợp đồng Solidity 
 OptimizationExampleOptimized { 
 quản trị viên công khai ánh xạ (địa chỉ => bool); 

 hàm isUserAdmin(địa chỉ người dùng) chế độ xem công khai trả về (bool) {
        return admins[user];
    }
}

Tái sử dụng dữ liệu

Khi làm việc với Ethereum, hãy nhớ rằng bạn đang trả tiền cho từng chút dung lượng lưu trữ. Nếu bạn thấy mình đang lưu trữ cùng một dữ liệu ở nhiều nơi, hãy xem xét cách bạn có thể lưu trữ dữ liệu đó một lần và tham chiếu nó ở nơi khác.

Sử dụng thư viện

Các thư viện trong Solidity là những đoạn mã có thể tái sử dụng. Chúng có thể giúp bạn viết mã mô-đun và vì chúng chỉ được triển khai một lần và được liên kết với các hợp đồng khác nên về lâu dài chúng có thể tiết kiệm xăng.

Thư viện Solidity 
 SafeMath { 
 function add(uint a, uint b) nội bộ trả về thuần túy (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... các hàm toán học khác 
 } 

 hợp đồng Sử dụngSafeMath { 
 sử dụng SafeMath cho uint; 

 uint giá trị công cộng; 

 hàm tăng(uint _value) public {
        value = value.add(_value);
    }
}

Xóa bộ nhớ không cần thiết

Từ khóa delete trong Solidity cho phép bạn vô hiệu hóa các biến, giúp hoàn lại một phần gas. Nếu bạn đã dùng hết một phần bộ nhớ cụ thể, hãy xóa phần bộ nhớ đó để yêu cầu hoàn lại khoản tiền này.

Xem xét nhật ký sự kiện

Mặc dù việc lưu trữ dữ liệu trên blockchain có thể tốn kém nhưng việc ghi lại các sự kiện lại tương đối rẻ hơn. Nếu bạn có dữ liệu không cần phải đọc từ hợp đồng nhưng có thể xác minh được, hãy cân nhắc sử dụng nhật ký sự kiện.

Tránh sử dụng các hoạt động tốn kém

Một số hoạt động sử dụng nhiều gas hơn những hoạt động khác. Ví dụ:

  • Các cuộc gọi chức năng bên ngoài đắt hơn các cuộc gọi nội bộ.
  • Tương tác với bộ nhớ đắt hơn tương tác với bộ nhớ.
  • Mảng động đôi khi có thể tốn nhiều gas hơn mảng có kích thước cố định.

Phần kết luận

Tối ưu hóa hợp đồng thông minh cho gas vừa là nghệ thuật vừa là khoa học. Khi kết hợp các phương pháp được thảo luận trong khóa học này, có khả năng giảm đáng kể chi phí gas trong hợp đồng của bạn. Hãy nhớ rằng hệ sinh thái Ethereum và các công cụ của nó, bao gồm cả Remix, luôn thay đổi. Luôn cập nhật, kiểm tra và cải thiện hợp đồng của bạn một cách thường xuyên để tối ưu hóa. Cộng đồng Ethereum rất lớn và hữu ích, vì vậy đừng ngại tìm kiếm hướng dẫn hoặc các phương pháp hay nhất. Chúc bạn viết mã vui vẻ!

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 5

Phần cuối tối ưu hóa hợp đồng thông minh - Mẹo và thủ thuật nâng cao

Trong các bài học trước, chúng tôi đã đề cập đến các khái niệm và công cụ cơ bản mà bạn cần để tối ưu hóa gas trên hợp đồng thông minh Ethereum, đặc biệt là sử dụng Remix IDE. Khi chúng ta kết thúc khóa học này, hãy cùng đi sâu vào một số kỹ thuật nâng cao và các phương pháp hay nhất. Bài học cuối cùng này sẽ kết hợp kiến thức mà chúng tôi đã tích lũy, đảm bảo rằng bạn sẽ có được sự hiểu biết toàn diện về tối ưu hóa gas trong hợp đồng thông minh Ethereum.

Tái cấu trúc và giảm độ phức tạp của mã

Một trong những cách đơn giản nhất để tiết kiệm xăng là làm cho mã của bạn đơn giản hơn. Càng có ít mã để thực thi thì lượng gas tiêu thụ càng ít.

Ví dụ thực hành

Hãy xem xét chức năng sau:

Độ rắn 
 độ rắn pragma ^0.8.9; 

 hợp đồng Tối ưu hóaVí dụ { 
 địa chỉ[] quản trị viên công khai; 

 hàm isUserAdmin(địa chỉ người dùng) dạng xem công khai trả về (bool) { 
 for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == user) return true;
        }
        trả về sai; 
 } 
 }

Hàm trên sử dụng vòng lặp, việc này sẽ tốn kém hơn khi có thêm nhiều quản trị viên. Một cấu trúc tiết kiệm khí hơn sẽ sử dụng bản đồ:

Hợp đồng Solidity 
 OptimizationExampleOptimized { 
 quản trị viên công khai ánh xạ (địa chỉ => bool); 

 hàm isUserAdmin(địa chỉ người dùng) chế độ xem công khai trả về (bool) {
        return admins[user];
    }
}

Tái sử dụng dữ liệu

Khi làm việc với Ethereum, hãy nhớ rằng bạn đang trả tiền cho từng chút dung lượng lưu trữ. Nếu bạn thấy mình đang lưu trữ cùng một dữ liệu ở nhiều nơi, hãy xem xét cách bạn có thể lưu trữ dữ liệu đó một lần và tham chiếu nó ở nơi khác.

Sử dụng thư viện

Các thư viện trong Solidity là những đoạn mã có thể tái sử dụng. Chúng có thể giúp bạn viết mã mô-đun và vì chúng chỉ được triển khai một lần và được liên kết với các hợp đồng khác nên về lâu dài chúng có thể tiết kiệm xăng.

Thư viện Solidity 
 SafeMath { 
 function add(uint a, uint b) nội bộ trả về thuần túy (uint) {
        uint c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    //... các hàm toán học khác 
 } 

 hợp đồng Sử dụngSafeMath { 
 sử dụng SafeMath cho uint; 

 uint giá trị công cộng; 

 hàm tăng(uint _value) public {
        value = value.add(_value);
    }
}

Xóa bộ nhớ không cần thiết

Từ khóa delete trong Solidity cho phép bạn vô hiệu hóa các biến, giúp hoàn lại một phần gas. Nếu bạn đã dùng hết một phần bộ nhớ cụ thể, hãy xóa phần bộ nhớ đó để yêu cầu hoàn lại khoản tiền này.

Xem xét nhật ký sự kiện

Mặc dù việc lưu trữ dữ liệu trên blockchain có thể tốn kém nhưng việc ghi lại các sự kiện lại tương đối rẻ hơn. Nếu bạn có dữ liệu không cần phải đọc từ hợp đồng nhưng có thể xác minh được, hãy cân nhắc sử dụng nhật ký sự kiện.

Tránh sử dụng các hoạt động tốn kém

Một số hoạt động sử dụng nhiều gas hơn những hoạt động khác. Ví dụ:

  • Các cuộc gọi chức năng bên ngoài đắt hơn các cuộc gọi nội bộ.
  • Tương tác với bộ nhớ đắt hơn tương tác với bộ nhớ.
  • Mảng động đôi khi có thể tốn nhiều gas hơn mảng có kích thước cố định.

Phần kết luận

Tối ưu hóa hợp đồng thông minh cho gas vừa là nghệ thuật vừa là khoa học. Khi kết hợp các phương pháp được thảo luận trong khóa học này, có khả năng giảm đáng kể chi phí gas trong hợp đồng của bạn. Hãy nhớ rằng hệ sinh thái Ethereum và các công cụ của nó, bao gồm cả Remix, luôn thay đổi. Luôn cập nhật, kiểm tra và cải thiện hợp đồng của bạn một cách thường xuyên để tối ưu hóa. Cộng đồng Ethereum rất lớn và hữu ích, vì vậy đừng ngại tìm kiếm hướng dẫn hoặc các phương pháp hay nhất. Chúc bạn viết mã vui vẻ!

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.