Skip to content

Commit

Permalink
Added several ERC20 optimizations (#93)
Browse files Browse the repository at this point in the history
* Removed redundant requires as they are tested in SafeMath

* Added increased and decreased balance for storage contract

* Added first change suggested by @TrulsA

* Added the second change as suggested by @TrulsA

* Added extra use of storage decrease and increase in ERC20
  • Loading branch information
peteremiljensen committed Feb 5, 2019
1 parent 618f7a5 commit 49fbdc4
Show file tree
Hide file tree
Showing 3 changed files with 390 additions and 184 deletions.
50 changes: 18 additions & 32 deletions contracts/token/ERC20/ERC20.sol
Original file line number Diff line number Diff line change
Expand Up @@ -134,16 +134,10 @@ contract ERC20 {
internal
returns (bool)
{
require(value <= externalStorage.getBalance(originSender));
require(to != address(0));

externalStorage.setBalance(
originSender,
externalStorage.getBalance(originSender).sub(value));
externalStorage.setBalance(
to,
externalStorage.getBalance(to).add(value)
);
externalStorage.decreaseBalance(originSender, value);
externalStorage.increaseBalance(to, value);

emit Transfer(originSender, to, value);

Expand Down Expand Up @@ -191,13 +185,11 @@ contract ERC20 {
internal
returns (bool)
{
require(value <= externalStorage.getAllowed(from, originSender));

externalStorage.setAllowed(
from, originSender,
externalStorage.getAllowed(from, originSender).sub(value)
);
externalStorage.decreaseAllowed(from, originSender, value);

_transfer(from, to, value);

emit Approval(
from,
originSender,
Expand Down Expand Up @@ -227,10 +219,8 @@ contract ERC20 {
{
require(spender != address(0));

externalStorage.setAllowed(
originSender, spender,
externalStorage.getAllowed(originSender, spender).add(addedValue)
);
externalStorage.increaseAllowed(originSender, spender, addedValue);

emit Approval(
originSender, spender,
externalStorage.getAllowed(originSender, spender)
Expand Down Expand Up @@ -259,10 +249,10 @@ contract ERC20 {
{
require(spender != address(0));

externalStorage.setAllowed(
originSender, spender,
externalStorage.getAllowed(originSender, spender).sub(subtractedValue)
);
externalStorage.decreaseAllowed(originSender,
spender,
subtractedValue);

emit Approval(
originSender, spender,
externalStorage.getAllowed(originSender, spender)
Expand All @@ -281,10 +271,11 @@ contract ERC20 {
function _mint(address account, uint256 value) internal returns (bool)
{
require(account != 0);

externalStorage.setTotalSupply(
externalStorage.getTotalSupply().add(value));
externalStorage.setBalance(
account, externalStorage.getBalance(account).add(value));
externalStorage.increaseBalance(account, value);

emit Transfer(address(0), account, value);

return true;
Expand All @@ -299,14 +290,11 @@ contract ERC20 {
function _burn(address originSender, uint256 value) internal returns (bool)
{
require(originSender != 0);
require(value <= externalStorage.getBalance(originSender));

externalStorage.setTotalSupply(
externalStorage.getTotalSupply().sub(value));
externalStorage.setBalance(
originSender,
externalStorage.getBalance(originSender).sub(value)
);
externalStorage.decreaseBalance(originSender, value);

emit Transfer(originSender, address(0), value);

return true;
Expand All @@ -326,11 +314,9 @@ contract ERC20 {
{
require(value <= externalStorage.getAllowed(account, originSender));

externalStorage.setAllowed(
account, originSender,
externalStorage.getAllowed(account, originSender).sub(value)
);
externalStorage.decreaseAllowed(account, originSender, value);
_burn(account, value);

emit Approval(account, originSender,
externalStorage.getAllowed(account, originSender));

Expand Down
Loading

0 comments on commit 49fbdc4

Please sign in to comment.