forked from AmazingAng/WTF-Solidity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathError.sol
37 lines (30 loc) · 1.2 KB
/
Error.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
// O custo de gás foi testado no Remix usando a versão 0.8.17 de compilação.
// Parâmetros utilizados tokenId = 123, address = {qualquer endereço}
// Erro personalizado
error TransferNotOwner();
// erro TransferNotOwner(endereço remetente);
contract Errors {
// Um mapa que registra o proprietário de cada TokenId
mapping(uint256 => address) private _owners;
// Error method: custo de gás 24457
// Erro com o parâmetro: custo de gás 24660
function transferOwner1(uint256 tokenId, address newOwner) public {
if (_owners[tokenId] != msg.sender) {
revert TransferNotOwner();
// revert TransferNotOwner(msg.sender);
}
_owners[tokenId] = newOwner;
}
// require方法: custo de gas 24755
function transferOwner2(uint256 tokenId, address newOwner) public {
require(_owners[tokenId] == msg.sender, "Transfer Not Owner");
_owners[tokenId] = newOwner;
}
// assert método: custo de gas 24473
function transferOwner3(uint256 tokenId, address newOwner) public {
assert(_owners[tokenId] == msg.sender);
_owners[tokenId] = newOwner;
}
}