Skip to content
This repository has been archived by the owner on Sep 15, 2020. It is now read-only.

OMG token transfers not supported #3

Open
michaelbnewman opened this issue Nov 6, 2018 · 1 comment
Open

OMG token transfers not supported #3

michaelbnewman opened this issue Nov 6, 2018 · 1 comment

Comments

@michaelbnewman
Copy link

I have successfully tested txManager against several tokens, including DAI, BAT, ENJ, etc., but have found that the OMG token does not work. From my initial tests, it appears that OMG token transfers do not transfer into the txManager contract, resulting in reverted transactions.

In discussion with another developer, it appears that OMG transfer function does not return a success/failure bool:

OMG:
https://etherscan.io/address/0xd26114cd6EE289AccF82350c8d8487fedB8A0C07#code
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) constant returns (uint);
function transferFrom(address from, address to, uint value);
function approve(address spender, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}

Versus other tokens:

DAI:
https://etherscan.io/address/0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359#code
contract ERC20 is ERC20Events {
function totalSupply() public view returns (uint);
function balanceOf(address guy) public view returns (uint);
function allowance(address src, address guy) public view returns (uint);
function approve(address guy, uint wad) public returns (bool);
function transfer(address dst, uint wad) public returns (bool);
function transferFrom(address src, address dst, uint wad) public returns (bool);
}

BAT:
https://etherscan.io/address/0x0d8775f648430679a709e98d2b0cb6250d2887ef#code
contract Token {
uint256 public totalSupply;
function balanceOf(address _owner) constant returns (uint256 balance);
function transfer(address _to, uint256 _value) returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
function approve(address _spender, uint256 _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

ENJ:
https://etherscan.io/address/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c#code
contract IERC20Token {
function name() public constant returns (string) { name; }
function symbol() public constant returns (string) { symbol; }
function decimals() public constant returns (uint8) { decimals; }
function totalSupply() public constant returns (uint256) { totalSupply; }
function balanceOf(address _owner) public constant returns (uint256 balance) { _owner; balance; }
function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { _owner; _spender; remaining; }
function transfer(address _to, uint256 _value) public returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
function approve(address _spender, uint256 _value) public returns (bool success);
}

For a similar issue, see:
d14c63a

@michaelbnewman
Copy link
Author

This article covers a much larger list of tokens that are affected by the same bug: https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant