Ethereum ERC20 Token Interface, in Python
ethtoken.py
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
Usage
Install
virtualenv -p python3 venv
. venv/bin/activate
pip install --pre ethtoken
Initialize
from ethtoken import token
Use the ENS name that points to your token contract here:
omg = token("omg.thetoken.eth")
Use standard EIP20 methods
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
Custom methods
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.
Completely Untested: Transfers
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'), }, )
Ownership Disclosure
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.