Repository: rotki/rotki

Issue:
Missing token from balances, requires pagination for aleth.io
## Problem Definition

I'm missing a token from my balances. When I query aleth.io API for my token balances I get a paginated response back. Rotki does only load tokens from the first page (10 items).


Discussion:

Resolving patch:
diff --git a/rotkehlchen/externalapis/alethio.py b/rotkehlchen/externalapis/alethio.py
--- a/rotkehlchen/externalapis/alethio.py
+++ b/rotkehlchen/externalapis/alethio.py
@@ -40,6 +40,7 @@ def _query(  # pylint: disable=no-self-use
             self,
             root_endpoint: Literal['accounts'],
             path: str,
+            full_query_str: Optional[str] = None,
     ) -> List[Dict[str, Any]]:
         ...
 
@@ -48,11 +49,21 @@ def _query(  # pylint: disable=no-self-use
             self,
             root_endpoint: Literal['foo'],
             path: str,
+            full_query_str: Optional[str] = None,
     ) -> Dict[str, Any]:
         ...
 
-    def _query(self, root_endpoint: str, path: str) -> Union[Dict[str, Any], List]:  # noqa: F811
-        query_str = f'https://api.aleth.io/v1/{root_endpoint}/{path}'
+    def _query(  # noqa: F811
+            self,
+            root_endpoint: str,
+            path: str,
+            full_query_str: Optional[str] = None,
+    ) -> Union[Dict[str, Any], List]:  # noqa: F811
+        if full_query_str:
+            # If this is a pagination call
+            query_str = full_query_str
+        else:
+            query_str = f'https://api.aleth.io/v1/{root_endpoint}/{path}?page[limit]=100'
         log.debug(f'Querying alethio for {query_str}')
 
         api_key = self._get_api_key()
@@ -116,6 +127,34 @@ def _query(self, root_endpoint: str, path: str) -> Union[Dict[str, Any], List]:
                     msg = str(errors)
                 raise RemoteError(f'alethio response error: {msg}')
 
+            has_next = False
+            try:
+                has_next = json_ret['meta']['page']['hasNext']
+            except KeyError:
+                raise RemoteError(
+                    f'Alethio response does not contain pagination information: {response.text}',
+                )
+
+            if has_next:
+                try:
+                    link = json_ret['links']['next']
+                except KeyError:
+                    raise RemoteError(
+                        f'Alethio response does not contain next page link: {response.text}',
+                    )
+
+                next_data = self._query(  # type: ignore
+                    root_endpoint=root_endpoint,
+                    path=path,
+                    full_query_str=link,
+                )
+                if root_endpoint == 'accounts':
+                    data.extend(next_data)
+                else:
+                    raise AssertionError(
+                        'Have not yet implemented alethio endpoints returning non lists',
+                    )
+
             # if we got here we should return
             break
 


Test patch:
diff --git a/rotkehlchen/tests/external_apis/test_alethio.py b/rotkehlchen/tests/external_apis/test_alethio.py
--- a/rotkehlchen/tests/external_apis/test_alethio.py
+++ b/rotkehlchen/tests/external_apis/test_alethio.py
@@ -1,7 +1,13 @@
 from unittest.mock import patch
 
+from rotkehlchen.constants.misc import ZERO
 from rotkehlchen.fval import FVal
-from rotkehlchen.tests.utils.alethio import ALETHIO_TOKEN_BALANCES
+from rotkehlchen.tests.utils.alethio import (
+    ALETHIO_MULTIPAGE_TOKEN_BALANCES1,
+    ALETHIO_MULTIPAGE_TOKEN_BALANCES2,
+    ALETHIO_MULTIPAGE_TOKEN_BALANCES3,
+    ALETHIO_SIMPLE_TOKEN_BALANCES,
+)
 from rotkehlchen.tests.utils.mock import MockResponse
 
 
@@ -9,7 +15,18 @@ def patch_alethio(alethio):
     def mock_response(url, *args):  # pylint: disable=unused-argument
         if 'tokenBalances' in url:
             if '0x9531C059098e3d194fF87FebB587aB07B30B1306' in url:
-                data = ALETHIO_TOKEN_BALANCES
+                data = ALETHIO_SIMPLE_TOKEN_BALANCES
+            elif '0xa57Bd00134B2850B2a1c55860c9e9ea100fDd6CF' in url:
+                data = ALETHIO_MULTIPAGE_TOKEN_BALANCES1
+            else:
+                raise AssertionError(
+                    'Unexpected Alethio tokenBalance call during mocking in tests',
+                )
+        elif 'token-balances?filter' in url:
+            if 'f432555e5c898f83fc5f00df631bd9c2801fea289' in url:
+                data = ALETHIO_MULTIPAGE_TOKEN_BALANCES2
+            elif 'fac9bb427953ac7fddc562adca86cf42d988047fd' in url:
+                data = ALETHIO_MULTIPAGE_TOKEN_BALANCES3
             else:
                 raise AssertionError(
                     'Unexpected Alethio tokenBalance call during mocking in tests',
@@ -22,12 +39,38 @@ def mock_response(url, *args):  # pylint: disable=unused-argument
     return alethio_patch
 
 
-def test_get_token_balances(alethio):
+def test_get_simple_token_balances(alethio):
+    """Test that getting token balances of an account works with alethio for single page"""
     alethio_patch = patch_alethio(alethio)
     with alethio_patch:
         balances = alethio.get_token_balances('0x9531C059098e3d194fF87FebB587aB07B30B1306')
 
     assert len(balances) == 3
     assert balances['DAI'] == FVal('5.7')
-    assert balances['SAI'] == FVal('0')
+    assert balances['SAI'] == ZERO
     assert balances['USDC'] == FVal('20')
+
+
+def test_get_multipage_token_balances(alethio):
+    """Test that getting token balances of an account works with alethio for multiple pages"""
+    alethio_patch = patch_alethio(alethio)
+    with alethio_patch:
+        balances = alethio.get_token_balances('0xa57Bd00134B2850B2a1c55860c9e9ea100fDd6CF')
+
+    assert len(balances) == 13
+    expected_balances = {
+        'TUSD': ZERO,
+        'PKG': FVal('100'),
+        'BAT': ZERO,
+        'REP': ZERO,
+        'WBTC': ZERO,
+        'AMB': FVal('0.1'),
+        'LINK': ZERO,
+        'DAI': FVal('106029.46635018318'),
+        'SAI': FVal('24.974762270881137'),
+        'USDC': FVal('1000'),
+        'WETH': FVal('1139.6876129573913'),
+        'KNC': ZERO,
+        'ZRX': ZERO,
+    }
+    assert balances == expected_balances
diff --git a/rotkehlchen/tests/utils/alethio.py b/rotkehlchen/tests/utils/alethio.py
--- a/rotkehlchen/tests/utils/alethio.py
+++ b/rotkehlchen/tests/utils/alethio.py
@@ -1 +1,6 @@
-ALETHIO_TOKEN_BALANCES = '{"data":[{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f","attributes":{"balance":"5700000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f/account"}},"token":{"data":{"type":"Token","id":"0x6b175474e89094c44da98b954eedeac495271d0f"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f"}},{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359/account"}},"token":{"data":{"type":"Token","id":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359"}},{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","attributes":{"balance":"20000000"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/account"}},"token":{"data":{"type":"Token","id":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}],"links":{"next":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0x9531c059098e3d194ff87febb587ab07b30b1306\u0026page%5Blimit%5D=10\u0026page%5Bnext%5D=0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","prev":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0x9531c059098e3d194ff87febb587ab07b30b1306\u0026page%5Blimit%5D=10\u0026page%5Bprev%5D=0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f"},"meta":{"confirmedBlock":{"number":9655856,"blockCreationTime":1584004250,"blockHash":"0x903df6c4a94da01dacf53f7417b4941e268a14fa58147af5b6053884a293f8a1"},"count":3,"latestBlock":{"number":9655856,"blockCreationTime":1584004250,"blockHash":"0x903df6c4a94da01dacf53f7417b4941e268a14fa58147af5b6053884a293f8a1"},"page":{"hasNext":false,"hasPrev":false},"query":{"block":{"data":{"id":"0x598cc41b881d8afa271f0b3e2f89e355e10ec822cb32ed7743e7e47cb89432d1","type":"Block"},"links":{"self":"https://api.aleth.io/v1/blocks/0x598cc41b881d8afa271f0b3e2f89e355e10ec822cb32ed7743e7e47cb89432d1"}}}}}'  # noqa: E501
+ALETHIO_SIMPLE_TOKEN_BALANCES = '{"data":[{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f","attributes":{"balance":"5700000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f/account"}},"token":{"data":{"type":"Token","id":"0x6b175474e89094c44da98b954eedeac495271d0f"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f"}},{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359/account"}},"token":{"data":{"type":"Token","id":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b130689d24a6b4ccb1b6faa2625fe562bdd9a23260359"}},{"type":"TokenBalance","id":"0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","attributes":{"balance":"20000000"},"relationships":{"account":{"data":{"type":"Account","id":"0x9531c059098e3d194ff87febb587ab07b30b1306"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/account"}},"token":{"data":{"type":"Token","id":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"links":{"related":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}}],"links":{"next":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0x9531c059098e3d194ff87febb587ab07b30b1306\u0026page%5Blimit%5D=10\u0026page%5Bnext%5D=0x9531c059098e3d194ff87febb587ab07b30b1306a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","prev":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0x9531c059098e3d194ff87febb587ab07b30b1306\u0026page%5Blimit%5D=10\u0026page%5Bprev%5D=0x9531c059098e3d194ff87febb587ab07b30b13066b175474e89094c44da98b954eedeac495271d0f"},"meta":{"confirmedBlock":{"number":9655856,"blockCreationTime":1584004250,"blockHash":"0x903df6c4a94da01dacf53f7417b4941e268a14fa58147af5b6053884a293f8a1"},"count":3,"latestBlock":{"number":9655856,"blockCreationTime":1584004250,"blockHash":"0x903df6c4a94da01dacf53f7417b4941e268a14fa58147af5b6053884a293f8a1"},"page":{"hasNext":false,"hasPrev":false},"query":{"block":{"data":{"id":"0x598cc41b881d8afa271f0b3e2f89e355e10ec822cb32ed7743e7e47cb89432d1","type":"Block"},"links":{"self":"https://api.aleth.io/v1/blocks/0x598cc41b881d8afa271f0b3e2f89e355e10ec822cb32ed7743e7e47cb89432d1"}}}}}'  # noqa: E501
+
+ALETHIO_MULTIPAGE_TOKEN_BALANCES1 = '{"data":[{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000085d4780b73119b644ae5ecd22b376","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000085d4780b73119b644ae5ecd22b376/account"}},"token":{"data":{"type":"Token","id":"0x0000000000085d4780b73119b644ae5ecd22b376"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000085d4780b73119b644ae5ecd22b376/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000085d4780b73119b644ae5ecd22b376"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000b3f879cb30fe243b4dfee438691c04","attributes":{"balance":"60922"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000b3f879cb30fe243b4dfee438691c04/account"}},"token":{"data":{"type":"Token","id":"0x0000000000b3f879cb30fe243b4dfee438691c04"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000b3f879cb30fe243b4dfee438691c04/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000b3f879cb30fe243b4dfee438691c04"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf02f2d4a04e6e01ace88bd2cd632875543b2ef577","attributes":{"balance":"100000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf02f2d4a04e6e01ace88bd2cd632875543b2ef577/account"}},"token":{"data":{"type":"Token","id":"0x02f2d4a04e6e01ace88bd2cd632875543b2ef577"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf02f2d4a04e6e01ace88bd2cd632875543b2ef577/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf02f2d4a04e6e01ace88bd2cd632875543b2ef577"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0b150524707e66a3d85f15de9ab3865572e4e5f4","attributes":{"balance":"50000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0b150524707e66a3d85f15de9ab3865572e4e5f4/account"}},"token":{"data":{"type":"Token","id":"0x0b150524707e66a3d85f15de9ab3865572e4e5f4"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0b150524707e66a3d85f15de9ab3865572e4e5f4/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0b150524707e66a3d85f15de9ab3865572e4e5f4"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0d8775f648430679a709e98d2b0cb6250d2887ef","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0d8775f648430679a709e98d2b0cb6250d2887ef/account"}},"token":{"data":{"type":"Token","id":"0x0d8775f648430679a709e98d2b0cb6250d2887ef"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0d8775f648430679a709e98d2b0cb6250d2887ef/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0d8775f648430679a709e98d2b0cb6250d2887ef"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0f8b6440a1f7be3354fe072638a5c0f500b044be","attributes":{"balance":"777000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0f8b6440a1f7be3354fe072638a5c0f500b044be/account"}},"token":{"data":{"type":"Token","id":"0x0f8b6440a1f7be3354fe072638a5c0f500b044be"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0f8b6440a1f7be3354fe072638a5c0f500b044be/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0f8b6440a1f7be3354fe072638a5c0f500b044be"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf1985365e9f78359a9b6ad760e32412f4a445e862","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf1985365e9f78359a9b6ad760e32412f4a445e862/account"}},"token":{"data":{"type":"Token","id":"0x1985365e9f78359a9b6ad760e32412f4a445e862"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf1985365e9f78359a9b6ad760e32412f4a445e862/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf1985365e9f78359a9b6ad760e32412f4a445e862"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf21d1f49d699d1f6324ccb5b6ba9847e2bf470811","attributes":{"balance":"10000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf21d1f49d699d1f6324ccb5b6ba9847e2bf470811/account"}},"token":{"data":{"type":"Token","id":"0x21d1f49d699d1f6324ccb5b6ba9847e2bf470811"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf21d1f49d699d1f6324ccb5b6ba9847e2bf470811/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf21d1f49d699d1f6324ccb5b6ba9847e2bf470811"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf2260fac5e5542a773aa44fbcfedf7c193bc2c599","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf2260fac5e5542a773aa44fbcfedf7c193bc2c599/account"}},"token":{"data":{"type":"Token","id":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf2260fac5e5542a773aa44fbcfedf7c193bc2c599/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf2260fac5e5542a773aa44fbcfedf7c193bc2c599"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf432555e5c898f83fc5f00df631bd9c2801fea289","attributes":{"balance":"500000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf432555e5c898f83fc5f00df631bd9c2801fea289/account"}},"token":{"data":{"type":"Token","id":"0x432555e5c898f83fc5f00df631bd9c2801fea289"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf432555e5c898f83fc5f00df631bd9c2801fea289/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf432555e5c898f83fc5f00df631bd9c2801fea289"}}],"links":{"next":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bnext%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf432555e5c898f83fc5f00df631bd9c2801fea289","prev":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bprev%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf0000000000085d4780b73119b644ae5ecd22b376"},"meta":{"confirmedBlock":{"number":9804841,"blockCreationTime":1585994599,"blockHash":"0x126a7e8212bab68a7d7058eee6937016750ac512a2d38632ccc4d384a9c620e3"},"count":10,"latestBlock":{"number":9804841,"blockCreationTime":1585994599,"blockHash":"0x126a7e8212bab68a7d7058eee6937016750ac512a2d38632ccc4d384a9c620e3"},"page":{"hasNext":true,"hasPrev":false},"query":{"block":{"data":{"id":"0xef0ed2b6a0ceeeae5102467952f1c0bf31da95dafaaf368341616b7c210af21d","type":"Block"},"links":{"self":"https://api.aleth.io/v1/blocks/0xef0ed2b6a0ceeeae5102467952f1c0bf31da95dafaaf368341616b7c210af21d"}}}}}'  # noqa: E501
+
+ALETHIO_MULTIPAGE_TOKEN_BALANCES2 = '{"data":[{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf4dc3643dbc642b72c158e7f3d2ff232df61cb6ce","attributes":{"balance":"100000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf4dc3643dbc642b72c158e7f3d2ff232df61cb6ce/account"}},"token":{"data":{"type":"Token","id":"0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf4dc3643dbc642b72c158e7f3d2ff232df61cb6ce/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf514910771af9ca656af840dff83e8264ecf986ca","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf514910771af9ca656af840dff83e8264ecf986ca/account"}},"token":{"data":{"type":"Token","id":"0x514910771af9ca656af840dff83e8264ecf986ca"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf514910771af9ca656af840dff83e8264ecf986ca/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf514910771af9ca656af840dff83e8264ecf986ca"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf5c406d99e04b8494dc253fcc52943ef82bca7d75","attributes":{"balance":"1000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf5c406d99e04b8494dc253fcc52943ef82bca7d75/account"}},"token":{"data":{"type":"Token","id":"0x5c406d99e04b8494dc253fcc52943ef82bca7d75"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf5c406d99e04b8494dc253fcc52943ef82bca7d75/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf5c406d99e04b8494dc253fcc52943ef82bca7d75"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6b175474e89094c44da98b954eedeac495271d0f","attributes":{"balance":"106029466350183178691413"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6b175474e89094c44da98b954eedeac495271d0f/account"}},"token":{"data":{"type":"Token","id":"0x6b175474e89094c44da98b954eedeac495271d0f"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6b175474e89094c44da98b954eedeac495271d0f/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6b175474e89094c44da98b954eedeac495271d0f"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6ff313fb38d53d7a458860b1bf7512f54a03e968","attributes":{"balance":"49950000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6ff313fb38d53d7a458860b1bf7512f54a03e968/account"}},"token":{"data":{"type":"Token","id":"0x6ff313fb38d53d7a458860b1bf7512f54a03e968"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6ff313fb38d53d7a458860b1bf7512f54a03e968/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf6ff313fb38d53d7a458860b1bf7512f54a03e968"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf7e96ecc14fa5c77e1eab08eb175b434b47470760","attributes":{"balance":"1000000000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf7e96ecc14fa5c77e1eab08eb175b434b47470760/account"}},"token":{"data":{"type":"Token","id":"0x7e96ecc14fa5c77e1eab08eb175b434b47470760"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf7e96ecc14fa5c77e1eab08eb175b434b47470760/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf7e96ecc14fa5c77e1eab08eb175b434b47470760"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf89d24a6b4ccb1b6faa2625fe562bdd9a23260359","attributes":{"balance":"24974762270881137775"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf89d24a6b4ccb1b6faa2625fe562bdd9a23260359/account"}},"token":{"data":{"type":"Token","id":"0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf89d24a6b4ccb1b6faa2625fe562bdd9a23260359/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf89d24a6b4ccb1b6faa2625fe562bdd9a23260359"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf98976a6dfaaf97b16a4bb06035cc84be12e79110","attributes":{"balance":"200000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf98976a6dfaaf97b16a4bb06035cc84be12e79110/account"}},"token":{"data":{"type":"Token","id":"0x98976a6dfaaf97b16a4bb06035cc84be12e79110"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf98976a6dfaaf97b16a4bb06035cc84be12e79110/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf98976a6dfaaf97b16a4bb06035cc84be12e79110"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","attributes":{"balance":"1000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/account"}},"token":{"data":{"type":"Token","id":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfac9bb427953ac7fddc562adca86cf42d988047fd","attributes":{"balance":"1000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfac9bb427953ac7fddc562adca86cf42d988047fd/account"}},"token":{"data":{"type":"Token","id":"0xac9bb427953ac7fddc562adca86cf42d988047fd"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfac9bb427953ac7fddc562adca86cf42d988047fd/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfac9bb427953ac7fddc562adca86cf42d988047fd"}}],"links":{"next":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bnext%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfac9bb427953ac7fddc562adca86cf42d988047fd","prev":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bprev%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"},"meta":{"confirmedBlock":{"number":9805054,"blockCreationTime":1585997401,"blockHash":"0x8a797dc0fc4af3531d144066346dede91b17488103a1ec6e224375abe318d5fa"},"count":10,"latestBlock":{"number":9805054,"blockCreationTime":1585997401,"blockHash":"0x8a797dc0fc4af3531d144066346dede91b17488103a1ec6e224375abe318d5fa"},"page":{"hasNext":true,"hasPrev":true},"query":{"block":{"data":{"id":"0xa4b142abab23bc32c95a09abfa2b4395c86989f282f14030004bf6217b29122a","type":"Block"},"links":{"self":"https://api.aleth.io/v1/blocks/0xa4b142abab23bc32c95a09abfa2b4395c86989f282f14030004bf6217b29122a"}}}}}'  # noqa: E501
+ALETHIO_MULTIPAGE_TOKEN_BALANCES3 = '{"data":[{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbe22ec66710caa72ab690bf816f8bce785fbbac2","attributes":{"balance":"7579529152"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbe22ec66710caa72ab690bf816f8bce785fbbac2/account"}},"token":{"data":{"type":"Token","id":"0xbe22ec66710caa72ab690bf816f8bce785fbbac2"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbe22ec66710caa72ab690bf816f8bce785fbbac2/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbe22ec66710caa72ab690bf816f8bce785fbbac2"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa","attributes":{"balance":"1410000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa/account"}},"token":{"data":{"type":"Token","id":"0xbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","attributes":{"balance":"1139687612957391312303"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/account"}},"token":{"data":{"type":"Token","id":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc12d1c73ee7dc3615ba4e37e4abfdbddfa38907e","attributes":{"balance":"88888800000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc12d1c73ee7dc3615ba4e37e4abfdbddfa38907e/account"}},"token":{"data":{"type":"Token","id":"0xc12d1c73ee7dc3615ba4e37e4abfdbddfa38907e"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc12d1c73ee7dc3615ba4e37e4abfdbddfa38907e/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfc12d1c73ee7dc3615ba4e37e4abfdbddfa38907e"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfd110bb8a24b100c37af7310416e685af807c1f10","attributes":{"balance":"600000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfd110bb8a24b100c37af7310416e685af807c1f10/account"}},"token":{"data":{"type":"Token","id":"0xd110bb8a24b100c37af7310416e685af807c1f10"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfd110bb8a24b100c37af7310416e685af807c1f10/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfd110bb8a24b100c37af7310416e685af807c1f10"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfdd974d5c2e2928dea5f71b9825b8b646686bd200","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfdd974d5c2e2928dea5f71b9825b8b646686bd200/account"}},"token":{"data":{"type":"Token","id":"0xdd974d5c2e2928dea5f71b9825b8b646686bd200"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfdd974d5c2e2928dea5f71b9825b8b646686bd200/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfdd974d5c2e2928dea5f71b9825b8b646686bd200"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfe41d2489571d322189246dafa5ebde1f4699f498","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfe41d2489571d322189246dafa5ebde1f4699f498/account"}},"token":{"data":{"type":"Token","id":"0xe41d2489571d322189246dafa5ebde1f4699f498"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfe41d2489571d322189246dafa5ebde1f4699f498/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfe41d2489571d322189246dafa5ebde1f4699f498"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff18432ef894ef4b2a5726f933718f5a8cf9ff831","attributes":{"balance":"50000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff18432ef894ef4b2a5726f933718f5a8cf9ff831/account"}},"token":{"data":{"type":"Token","id":"0xf18432ef894ef4b2a5726f933718f5a8cf9ff831"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff18432ef894ef4b2a5726f933718f5a8cf9ff831/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff18432ef894ef4b2a5726f933718f5a8cf9ff831"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff53ad2c6851052a81b42133467480961b2321c09","attributes":{"balance":"0"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff53ad2c6851052a81b42133467480961b2321c09/account"}},"token":{"data":{"type":"Token","id":"0xf53ad2c6851052a81b42133467480961b2321c09"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff53ad2c6851052a81b42133467480961b2321c09/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cff53ad2c6851052a81b42133467480961b2321c09"}},{"type":"TokenBalance","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cffe2786d7d1ccab8b015f6ef7392f67d778f8d8d7","attributes":{"balance":"200000000000000000000"},"relationships":{"account":{"data":{"type":"Account","id":"0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cffe2786d7d1ccab8b015f6ef7392f67d778f8d8d7/account"}},"token":{"data":{"type":"Token","id":"0xfe2786d7d1ccab8b015f6ef7392f67d778f8d8d7"},"links":{"related":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cffe2786d7d1ccab8b015f6ef7392f67d778f8d8d7/token"}}},"links":{"self":"https://api.aleth.io/v1/token-balances/0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cffe2786d7d1ccab8b015f6ef7392f67d778f8d8d7"}}],"links":{"next":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bnext%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cffe2786d7d1ccab8b015f6ef7392f67d778f8d8d7","prev":"https://api.aleth.io/v1/token-balances?filter%5Baccount%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf\u0026page%5Blimit%5D=10\u0026page%5Bprev%5D=0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cfbe22ec66710caa72ab690bf816f8bce785fbbac2"},"meta":{"confirmedBlock":{"number":9805056,"blockCreationTime":1585997452,"blockHash":"0xc40a8a6e81173ef149fcb7c57e4f79a67be6946c0fe3cf2e60f3afa4a43d0dc9"},"count":10,"latestBlock":{"number":9805056,"blockCreationTime":1585997452,"blockHash":"0xc40a8a6e81173ef149fcb7c57e4f79a67be6946c0fe3cf2e60f3afa4a43d0dc9"},"page":{"hasNext":false,"hasPrev":true},"query":{"block":{"data":{"id":"0x3f1b9826210202fad3023e3ccbd87c025728a3f6bdbccac9ca84944205860bdc","type":"Block"},"links":{"self":"https://api.aleth.io/v1/blocks/0x3f1b9826210202fad3023e3ccbd87c025728a3f6bdbccac9ca84944205860bdc"}}}}}'  # noqa: E501