Solidity.

Bài viết

Chia sẻ kiến thức của bạn.

0x914b...756b.
Feb 16, 2024
Thảo Luận

Làm rõ về hoàn tiền gas và so sánh giữa “yêu cầu” và “hoàn lại” trong hợp đồng thông minh

Chào mọi người,

Tôi đang cố gắng hiểu sâu hơn về các điều kiện nhất định trong phát triển hợp đồng thông minh và tôi có một câu hỏi về một kịch bản cụ thể.

Giả sử có một điều kiện “yêu cầu” trong hợp đồng thông minh phải được đáp ứng. Nếu điều kiện này không thành công, hợp đồng cần hoàn lại tất cả các thay đổi được thực hiện và hoàn lại bất kỳ khí nào được sử dụng trong giao dịch. Câu hỏi của tôi là, quá trình hoàn trả khí hoạt động như thế nào khi xét đến việc khí luôn được tiêu thụ trong quá trình tính toán?

Ngoài ra, tôi đã nghe nói về điều kiện “đảo ngược” nhưng sẽ đánh giá cao một số cách làm rõ về sự khác biệt của nó với “yêu cầu” trong phát triển hợp đồng thông minh.

  • Smart Contract
  • Solidity
2
1
Chia sẻ
Bình luận
.

Câu trả lời

1
Sergey Ilin.
Feb 16 2024, 15:27

requireCó 3 chức năng để xác nhận trong Solidity:revert,assert, và.

Yêu cầu

  • Được sử dụng khi bắt đầu một chức năng
  • Xác thực chống lại đầu vào bất hợp pháp
  • Xác minh các điều kiện trạng thái trước khi thực hiện
  • Hoàn tiền xăng còn sót lại

Ví dụ:

require(msg.sender == owner, "Only. owner can execute this action");

Đổi

  • Giống với yêu cầu
  • Hữu ích cho các cổng luồng logic phức tạp hơn (tức là các khối if-then phức tạp)
  • Hoàn tiền xăng còn sót lại

Ví dụ:

revert("Something funky has occured");

Khẳng giả

  • Được sử dụng ở cuối một chức năng
  • Xác nhận một cái gì đó không thể
  • Quan trọng đối với các công cụ phân tích mã tĩnh
  • Không hoàn lại lượng khí còn sót lại

Ví dụ:

assert(num >= 0);

Lưu ý rằng requirerevertchỉ hoàn lại lượng khí còn lại. Bất kỳ khí nào được sử dụng trước tuyên bố đó sẽ được tiêu thụ. Cả hai chức năng này đều sử dụng cùng một opcode REVERT dưới mui xe.

assertkhác vì nó không hoàn lại bất kỳ khí đốt nào và sử dụng tất cả khí có sẵn cho giao dịch. Nó dự kiến sẽ được sử dụng ít thường xuyên hơn và nên được sử dụng để kiểm tra các điều kiện bất thường và không dự kiến xảy ra.

1
Bình luận
.

Bạn có biết câu trả lời không?

Hãy đăng nhập và chia sẻ nó.

Chúng tôi sử dụng cookie để đảm bảo bạn có trải nghiệm tốt nhất trên trang web của chúng tôi.
Thêm thông tin