ethereumで取引されるトークンの標準規格となっているERC20トークンだが2つの重大な問題が存在する。
1.トランザクションハンドリングの欠如
ERC20トークンでトランザクションを実行するには次の2つの方法がある。
1.transfer()
2.approve+transferFrom()
どちらの場合もトークンを送信したとき受信側はトークンを受け取ったことに気づくことができない。
approve+transactionFrom()における二重支払い
approveを使って転送許可を与えることを考える。転送許可するトークンの量を変更する場合、変更前に転送許可を与えられた者がトークンを受け取ると変更前のトークン量と変更後のトークン量の両方を受け取ることができてしまう。