From 90b9d403e63720074ca99262af3ff9cf71979018 Mon Sep 17 00:00:00 2001 From: Hendrik Hofstadt Date: Thu, 6 Aug 2020 18:59:58 +0200 Subject: [PATCH] Optimize contract --- ethereum/contracts/WrappedAsset.sol | 42 +++++++---------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/ethereum/contracts/WrappedAsset.sol b/ethereum/contracts/WrappedAsset.sol index 3ca92823..db051b49 100644 --- a/ethereum/contracts/WrappedAsset.sol +++ b/ethereum/contracts/WrappedAsset.sol @@ -108,7 +108,7 @@ contract WrappedAsset is IERC20, Context { * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ - function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } @@ -116,7 +116,7 @@ contract WrappedAsset is IERC20, Context { /** * @dev See {IERC20-allowance}. */ - function allowance(address owner, address spender) public view virtual override returns (uint256) { + function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } @@ -127,7 +127,7 @@ contract WrappedAsset is IERC20, Context { * * - `spender` cannot be the zero address. */ - function approve(address spender, uint256 amount) public virtual override returns (bool) { + function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } @@ -144,7 +144,7 @@ contract WrappedAsset is IERC20, Context { * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ - function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { + function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; @@ -162,7 +162,7 @@ contract WrappedAsset is IERC20, Context { * * - `spender` cannot be the zero address. */ - function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { + function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } @@ -181,7 +181,7 @@ contract WrappedAsset is IERC20, Context { * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ - function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { + function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } @@ -200,12 +200,10 @@ contract WrappedAsset is IERC20, Context { * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ - function _transfer(address sender, address recipient, uint256 amount) internal virtual { + function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); - _beforeTokenTransfer(sender, recipient, amount); - _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); @@ -220,11 +218,9 @@ contract WrappedAsset is IERC20, Context { * * - `to` cannot be the zero address. */ - function _mint(address account, uint256 amount) internal virtual { + function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); - _beforeTokenTransfer(address(0), account, amount); - _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); @@ -241,11 +237,9 @@ contract WrappedAsset is IERC20, Context { * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ - function _burn(address account, uint256 amount) internal virtual { + function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); - _beforeTokenTransfer(account, address(0), amount); - _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); @@ -264,7 +258,7 @@ contract WrappedAsset is IERC20, Context { * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ - function _approve(address owner, address spender, uint256 amount) internal virtual { + function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); @@ -282,20 +276,4 @@ contract WrappedAsset is IERC20, Context { function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } - - /** - * @dev Hook that is called before any transfer of tokens. This includes - * minting and burning. - * - * Calling conditions: - * - * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens - * will be to transferred to `to`. - * - when `from` is zero, `amount` tokens will be minted for `to`. - * - when `to` is zero, `amount` of ``from``'s tokens will be burned. - * - `from` and `to` are never both zero. - * - * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. - */ - function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} }