Skip to content

Instantly share code, notes, and snippets.

@banteg
Last active December 5, 2017 11:00
Show Gist options
  • Save banteg/dcde551c6bf573ace9e72302c052987f to your computer and use it in GitHub Desktop.
Save banteg/dcde551c6bf573ace9e72302c052987f to your computer and use it in GitHub Desktop.
interact with eos token sale contract from python
from web3 import Web3, KeepAliveRPCProvider
web3 = Web3(KeepAliveRPCProvider(host='localhost', port='8545'))
address = '0xd0a6e6c54dbc68db5db3a091b171a77407ff7ccf'
abi = [{'constant': True, 'inputs': [{'name': '', 'type': 'uint256'}, {'name': '', 'type': 'address'}], 'name': 'claimed', 'outputs': [{'name': '', 'type': 'bool'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'owner_', 'type': 'address'}], 'name': 'setOwner', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'time', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'totalSupply', 'outputs': [{'name': '', 'type': 'uint128'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'foundersAllocation', 'outputs': [{'name': '', 'type': 'uint128'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'day', 'type': 'uint256'}], 'name': 'claim', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'foundersKey', 'outputs': [{'name': '', 'type': 'string'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [{'name': '', 'type': 'uint256'}, {'name': '', 'type': 'address'}], 'name': 'userBuys', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [{'name': 'day', 'type': 'uint256'}], 'name': 'createOnDay', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [], 'name': 'freeze', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [{'name': '', 'type': 'address'}], 'name': 'keys', 'outputs': [{'name': '', 'type': 'string'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'startTime', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'authority_', 'type': 'address'}], 'name': 'setAuthority', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [{'name': '', 'type': 'uint256'}], 'name': 'dailyTotals', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'owner', 'outputs': [{'name': '', 'type': 'address'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [], 'name': 'buy', 'outputs': [], 'payable': True, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'openTime', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'EOS', 'outputs': [{'name': '', 'type': 'address'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'today', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'authority', 'outputs': [{'name': '', 'type': 'address'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'eos', 'type': 'address'}], 'name': 'initialize', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'createFirstDay', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [], 'name': 'claimAll', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [{'name': 'timestamp', 'type': 'uint256'}], 'name': 'dayFor', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'day', 'type': 'uint256'}, {'name': 'limit', 'type': 'uint256'}], 'name': 'buyWithLimit', 'outputs': [], 'payable': True, 'type': 'function'}, {'constant': False, 'inputs': [], 'name': 'collect', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'numberOfDays', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'constant': False, 'inputs': [{'name': 'key', 'type': 'string'}], 'name': 'register', 'outputs': [], 'payable': False, 'type': 'function'}, {'constant': True, 'inputs': [], 'name': 'createPerDay', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'type': 'function'}, {'inputs': [{'name': '_numberOfDays', 'type': 'uint256'}, {'name': '_totalSupply', 'type': 'uint128'}, {'name': '_openTime', 'type': 'uint256'}, {'name': '_startTime', 'type': 'uint256'}, {'name': '_foundersAllocation', 'type': 'uint128'}, {'name': '_foundersKey', 'type': 'string'}], 'payable': False, 'type': 'constructor'}, {'payable': True, 'type': 'fallback'}, {'anonymous': False, 'inputs': [{'indexed': False, 'name': 'window', 'type': 'uint256'}, {'indexed': False, 'name': 'user', 'type': 'address'}, {'indexed': False, 'name': 'amount', 'type': 'uint256'}], 'name': 'LogBuy', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'name': 'window', 'type': 'uint256'}, {'indexed': False, 'name': 'user', 'type': 'address'}, {'indexed': False, 'name': 'amount', 'type': 'uint256'}], 'name': 'LogClaim', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'name': 'user', 'type': 'address'}, {'indexed': False, 'name': 'key', 'type': 'string'}], 'name': 'LogRegister', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'name': 'amount', 'type': 'uint256'}], 'name': 'LogCollect', 'type': 'event'}, {'anonymous': False, 'inputs': [], 'name': 'LogFreeze', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': True, 'name': 'authority', 'type': 'address'}], 'name': 'LogSetAuthority', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': True, 'name': 'owner', 'type': 'address'}], 'name': 'LogSetOwner', 'type': 'event'}]
contract = web3.eth.contract(abi, address)
eos = contract.call()
@banteg
Copy link
Author

banteg commented Jul 3, 2017

for example, to get daily totals

eos.dailyTotals(day) / 1e18

to get token price in ether

eos.dailyTotals(day) / eos.createOnDay(day)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment