This is a tiny library leveraging web3.py to make an interface for working with EIP20 tokens on Ethereum. (formerly ERC20)
It is currently in Alpha, with 0 automated tests
virtualenv -p python3 venv
. venv/bin/activate
pip install --pre ethtoken
from ethtoken import token
# Use the ENS name that points to your token contract here:
omg = token("omg.thetoken.eth")
Most EIP20 methods are optional. ethtoken
makes no attempt to
verify which methods are implemented by a token contract.
Here's an example with all the read functions working:
>>> omg.name()
'OMGToken'
>>> omg.symbol()
'OMG'
>>> omg.decimals()
18
>>> omg.totalSupply()
140245398245132780789239631
# Use the ENS name of the owner address here:
>>> omg.balanceOf('ethereumfoundation.eth')
308744633639977714804
ethtoken
has a single custom method not in the EIP20 spec: token_balance
.
>>> omg.token_balance("ethereumfoundation.eth")
Decimal('308.744633639977714804')
It returns the balance of an address, with the decimal point shifted according
to the decimals()
value on the contract. In other words,
it is the human-readable number of tokens that the given address owns.
In theory, you could use this to send a token. I haven't even tried it once yet. Just don't use it. If you're going to ignore me, don't blame me if you lose tokens or ether.
This should theoretically transfer 1 giga units from 0x0 to 0xdead. (That's 1 nanotoken, at 18 decimals). Of course, this won't work if you don't control the 0x0 address. (hint: you don't)
from web3 import Web3
>>> omg.transfer(
'0x000000000000000000000000000000000000dEaD',
10 ** 9,
transact={
'from': '0x0000000000000000000000000000000000000000',
'gasPrice': Web3.toWei('0.1', 'gwei'),
},
)
I own some OmiseGo tokens, because anyone who had some ether during their airdrop got some. I don't have any opinions on the company or token.