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.
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];
}
}
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.
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);
}
}
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.
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.
Một số hoạt động sử dụng nhiều gas hơn những hoạt động khác. Ví dụ:
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ẻ!
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.
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];
}
}
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.
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);
}
}
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.
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.
Một số hoạt động sử dụng nhiều gas hơn những hoạt động khác. Ví dụ:
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ẻ!