on `FiatTokenV2.sol` and `FiatTokenV1.sol`, `name` , `symbol`, `decimals` and `curenccy` can be set as constant inside contract so it would be more gas efficient.
The only SafeERC20.functions() are used in this contract is safeTransferFrom() & safeTransfer(). Using transfer & transferFrom function from ERC20 is the better way
for gas saving
Use the same compiler as before for saving more gas
https://github.com/code-423n4/2022-02-jpyc/blob/main/contracts/v2/FiatTokenV2.sol https://github.com/code-423n4/2022-02-jpyc/blob/main/contracts/v1/FiatTokenV1.sol
SafeERC20
lib usagehttps://github.com/code-423n4/2022-02-jypc/blob/main/contracts/v1/Rescuable.sol#L32 https://github.com/code-423n4/2022-02-jpyc/blob/main/contracts/v1/Rescuable.sol#L65
The only
SafeERC20.functions()
are used in this contract issafeTransferFrom()
&safeTransfer()
. Usingtransfer
&transferFrom
function fromERC20
is the better way for gas savinghttps://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/StorageSlot.sol https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/interfaces/draft-IERC1822.sol
Dont set
uint
value https://github.com/code-423n4/2022-02-jpyc/blob/main/contracts/v1/FiatTokenV1.sol#L58 the default value of uint is 0. dont set it to save gas!= operator can save gas https://github.com/code-423n4/2022-02-jpyc/blob/main/contracts/v1/FiatTokenV1.sol#L136 using != to validate
_amount
can save gas