sohkai / erc20-battery

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ERC-20 Battery

Test harness to compare ERC-20s.

Tokens courtesy of their respective teams, pulled from Etherscan :).

Gas

test/gas.js runs tokens through a suite of "typical" operations and compares their gas costs per operation.

┌──────────────────────────────────────────┬────────┬───────────┬───────┬───────┬───────────┬───────┐
│                                          │ ANTv1  │ ANTv2     │ Comp  │ Uni   │ UniLpV2   │ Yfi   │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transfers                            │ 122245 │ 50974     │ 55472 │ 55494 │ 50905 (*) │ 51079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transfers-all                        │ 122245 │ 35974     │ 40496 │ 40530 │ 35905 (*) │ 36079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:approves                             │ 47752  │ 43974 (*) │ 45514 │ 45562 │ 43974 (*) │ 44046 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transferFroms                        │ 115330 │ 42617 (*) │ 50184 │ 50234 │ 43426     │ 44705 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transferFroms-dust                   │ 122245 │ 50974     │ 55472 │ 55494 │ 50905 (*) │ 51079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transferFroms-infinity-allowance     │ 130330 │ 52387     │ 57064 │ 57111 │ 52247 (*) │ 59705 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ new:transferFroms-all                    │ 122245 │ 35974     │ 40496 │ 40530 │ 35905 (*) │ 36079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transfers                        │ 114786 │ 35974     │ 40472 │ 40494 │ 35905 (*) │ 36079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transfers-all                    │ 114786 │ 20974     │ 25508 │ 25542 │ 20905 (*) │ 21079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:approves                         │ 47752  │ 43974 (*) │ 45514 │ 45562 │ 43974 (*) │ 44046 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transferFroms                    │ 107871 │ 27617 (*) │ 35184 │ 35234 │ 28426     │ 29705 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transferFroms-dust               │ 114786 │ 35974     │ 40472 │ 40494 │ 35905 (*) │ 36079 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transferFroms-infinity-allowance │ 122871 │ 37387     │ 42064 │ 42111 │ 37247 (*) │ 44705 │
├──────────────────────────────────────────┼────────┼───────────┼───────┼───────┼───────────┼───────┤
│ prevbal:transferFroms-all                │ 114786 │ 20974     │ 25508 │ 25542 │ 20905 (*) │ 21079 │
└──────────────────────────────────────────┴────────┴───────────┴───────┴───────┴───────────┴───────┘

Tokens with delegation enabled
┌──────────────────────────────────────────┬───────────┬─────────┬─────────────┬────────────┐
│                                          │ Comp Del  │ Uni Del │ Comp Del to │ Uni Del to │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transfers                            │ 87841 (*) │ 87863   │ 133185      │ 133218     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transfers-all                        │ 72865 (*) │ 72899   │ 118209      │ 118254     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:approves                             │ 45514 (*) │ 45562   │ 45514 (*)   │ 45562      │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transferFroms                        │ 82553 (*) │ 82603   │ 127898      │ 127959     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transferFroms-dust                   │ 87841 (*) │ 87863   │ 133185      │ 133218     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transferFroms-infinity-allowance     │ 89433 (*) │ 89480   │ 134777      │ 134835     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ new:transferFroms-all                    │ 72865 (*) │ 72899   │ 118209      │ 118254     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transfers                        │ 72841 (*) │ 72863   │ 105136      │ 105169     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transfers-all                    │ 57877 (*) │ 57911   │ 90172       │ 90217      │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:approves                         │ 45514 (*) │ 45562   │ 45514 (*)   │ 45562      │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transferFroms                    │ 67553 (*) │ 67603   │ 99849       │ 99910      │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transferFroms-dust               │ 72841 (*) │ 72863   │ 105136      │ 105169     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transferFroms-infinity-allowance │ 74433 (*) │ 74480   │ 106728      │ 106786     │
├──────────────────────────────────────────┼───────────┼─────────┼─────────────┼────────────┤
│ prevbal:transferFroms-all                │ 57877 (*) │ 57911   │ 90172       │ 90217      │
└──────────────────────────────────────────┴───────────┴─────────┴─────────────┴────────────┘

Notes on operations:

  • new: recipient did not already have a pre-existing balance or approval
  • prevbal: recipient already had a pre-existing balance of approval (receives gas refunds on SSTORE)

Notes on delegation suites:

  • Del: recipient has been delegated to
  • Del to: recipient is both delegating and has been delegated to

About


Languages

Language:Solidity 91.9%Language:JavaScript 8.1%