efbf093bc4
If one request failed, the whole batch would fail. This caused issue as one of the contract is constantly returning an error now, and essentially there was not way to fetch balance. Also extend the timeout to 20s as we throw 165 request to Infura in one go and it takes its time to reply to those, although it seems like we should batch them on our side instead of sending them all cuncurrently. |
||
---|---|---|
.. | ||
erc20 | ||
ierc20 | ||
README.md | ||
api.go | ||
async.go | ||
balance.go | ||
balance_cache.go | ||
balance_test.go | ||
commands.go | ||
commands_test.go | ||
concurrent.go | ||
concurrent_test.go | ||
database.go | ||
database_test.go | ||
downloader.go | ||
downloader_test.go | ||
events.go | ||
iterative.go | ||
iterative_test.go | ||
reactor.go | ||
service.go | ||
service_test.go | ||
transfer_view.go | ||
transfers_query.go | ||
transmitter.go |
README.md
Wallet
Wallet service starts a loop that watches for new transfers (eth and erc20). To correctly start the service two values need to be changed in the config:
- Set Enable to true in WalletConfig
{
"WalletConfig": {
"Enabled": true,
}
}
- And expose wallet API with APIModules
{
APIModules: "eth,net,web3,peer,wallet",
}
API
wallet_getTransfersByAddress
Returns avaiable transfers in a given range.
Parameters
address
:HEX
- ethereum address encoded in hextoBlock
:BIGINT
- end of the range. if nil query will return last transfers.limit
:BIGINT
- limit of returned transfers.
Examples
{"jsonrpc":"2.0","id":7,"method":"wallet_getTransfersByAddress","params":["0xb81a6845649fa8c042dfaceb3f7a684873406993","0x0","0x5"]}
Returns
Objects in the same format.
wallet_getTokensBalances
Returns tokens balances mapping for every account. See section below for the response example.
Parameters
accounts
HEX
- list of ethereum addresses encoded in hextokens
HEX
- list of ethereum addresses encoded in hex
{"jsonrpc":"2.0","id":11,"method":"wallet_getTokensBalances","params":[["0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de", "0x0ed535be4c0aa276942a1a782669790547ad8768"], ["0x5e4bbdc178684478a615354d83c748a4393b20f0", "0x5e4bbdc178684478a615354d83c748a4393b20f0"]]}
Returns
First level keys accounts, second level keys are tokens.
{
"0x066ed5c2ed45d70ad72f40de0b4dd97bd67d84de": {
"0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 12,
"0x5e4bbdc178684478a615354d83c748a4393b20f0": 12
},
"0x0ed535be4c0aa276942a1a782669790547ad8768": {
"0x1dfb2099f936b3e98bfc9b7059a8fb04edcce5b3": 14,
"0x5e4bbdc178684478a615354d83c748a4393b20f0": 14
}
}
Signals
Two signals can be emitted:
newblock
signal
Emitted when transfers from new block were added to the database. In this case block number if the number of this new block. Client expected to request transfers starting from received block.
{
"type": "wallet",
"event": {
"type": "newblock",
"blockNumber": 0,
"accounts": [
"0x42c8f505b4006d417dd4e0ba0e880692986adbd8",
"0x3129mdasmeo132128391fml1130410k312312mll"
]
}
}
reorg
signal.
Emitted when part of blocks were removed. Starting from a given block number all transfers were removed. Client expected to request new transfers from received block and replace transfers that were received previously.
{
"type": "wallet",
"event": {
"type": "reorg",
"blockNumber": 0,
"accounts": [
"0x42c8f505b4006d417dd4e0ba0e880692986adbd8"
]
}
}
history
signal
Emmited when historical transfers were downloaded. Block number will refer the first block where historical transfers were found.
{
"type": "wallet",
"event": {
"type": "history",
"blockNumber": 0,
"accounts": [
"0x42c8f505b4006d417dd4e0ba0e880692986adbd8"
]
}
}