This is service to indexing tradelogs from event
This server serve the endpoints to manage backfill task: list, create, cancel, restart tasks
- URL:
/backfill
- Method:
POST
- Description: Creates a new backfill task.
- Request Body:
from_block
(uint64, required): The starting block number.to_block
(uint64, required): The ending block number.exchange
(string, required): The exchange name.
- Response:
- 200 OK: On success.
{ "success": true, "id": "<task_id>", "message": "<message>" }
- 400 Bad Request: If there is a validation error (e.g., missing fields, invalid exchange).
{ "success": false, "error": "<error_message>" }
- 500 Internal Server Error: If there is an error during task creation.
{ "success": false, "error": "<error_message>" }
- 200 OK: On success.
- URL:
/backfill
- Method:
GET
- Description: Retrieves all backfill tasks.
- Response:
- 200 OK: On success. The task with id -1 is the service's default backfill flow.
{ "success": true, "tasks": [ { "id": -1, "exchange": "", "from_block": 20926953, "to_block": 20962657, "processed_block": 20962657, "created_at": "0001-01-01T00:00:00Z", "updated_at": "0001-01-01T00:00:00Z", "status": "processing" }, { "id": 1, "exchange": "zerox", "from_block": 20962657, "to_block": 20962658, "processed_block": 20962657, "created_at": "2024-10-14T09:07:01.059135Z", "updated_at": "2024-10-14T17:18:32.814065Z", "status": "done" } ] }
- 500 Internal Server Error: If there is an error retrieving the tasks.
{ "success": false, "error": "<error_message>" }
- 200 OK: On success. The task with id -1 is the service's default backfill flow.
- URL:
/backfill/:id
- Method:
GET
- Description: Retrieves a specific backfill task by its ID.
- URL Parameters:
id
(int, required): The task ID.
- Response:
- 200 OK: On success.
{ "success": true, "task": { "id": 1, "exchange": "zerox", "from_block": 20962657, "to_block": 20962658, "processed_block": 20962657, "created_at": "2024-10-14T09:07:01.059135Z", "updated_at": "2024-10-14T17:18:32.814065Z", "status": "done" } }
- 400 Bad Request: If the task ID is invalid.
{ "success": false, "error": "invalid task id: <id>" }
- 500 Internal Server Error: If there is an error retrieving the task.
{ "success": false, "error": "<error_message>" }
- 200 OK: On success.
- URL:
/backfill/cancel/:id
- Method:
GET
- Description: Cancels a specific backfill task by its ID. Pass id -1 to stop system backfill task (backfill all exchanges).
- URL Parameters:
id
(int, required): The task ID.
- Response:
- 200 OK: On success.
{ "success": true }
- 400 Bad Request: If the task ID is invalid.
{ "success": false, "error": "invalid task id: <error_message>" }
- 500 Internal Server Error: If there is an error canceling the task.
{ "success": false, "error": "<error_message>" }
- 200 OK: On success.
- URL:
/backfill/restart/:id
- Method:
GET
- Description: Restarts a specific backfill task by its ID. Pass id -1 to run system backfill task (backfill all exchanges).
- URL Parameters:
id
(int, required): The task ID.
- Response:
- 200 OK: On success.
{ "success": true }
- 400 Bad Request: If the task ID is invalid.
{ "success": false, "error": "invalid task id: <error_message>" }
- 500 Internal Server Error: If there is an error restarting the task.
{ "success": false, "error": "<error_message>" }
- 200 OK: On success.
This server serve the endpoints to subscribe trade logs
-
URL:
/eventlogws
-
Method:
GET
-
Description: Connect WebSocket.
-
Request Params:
id
(string, optional): The ID of websocket connection, also the consumer group ID. Empty if you need to create new connection and subscribe from the newest offset. Else, pass the ID to continue from the most recently event.maker
(string, optional): The maker you want to subscribe.taker
(string, optional): The taker you want to subscribe.maker_token
(string, optional): The maker token you want to subscribe.taker_token
(string, optional): The taker token you want to subscribe.event_hash
(string, optional): The event hash you want to subscribe.
The filter will combine non-empty fields (AND). If no field are pass, all the trade logs will be sent.
-
Response:
- ID Message: With new connection, the first message will be the ID of session.
{ "id": "<session_id>" }
- Trade log Message: with type
trade_log
and the data containing trade log information{ "type": "trade_log", "data": { "order_hash": "0xcccf91f6cc3f636f0c7864ae8bcbc7cddbb54971997f90d81891a139c36c33e9", "maker": "0x51C72848c68a965f66FA7a88855F9f7784502a7F", "taker": "0x22F9dCF4647084d6C31b2765F6910cd85C178C18", "maker_token": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "taker_token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "maker_token_amount": "20210895540598740", "taker_token_amount": "50995428", "contract_address": "0xDef1C0ded9bec7F1a1670819833240f027b25EfF", "block_number": 21034739, "tx_hash": "0x6926077a7cfdc78cd1649c43e85da918f10b4ee0c6e930d5107a50de0c9d0837", "log_index": 489, "timestamp": 1729764251000, "event_hash": "0xac75f773e3a92f1a02b12134d65e1f47f8a14eabe4eaf1e24624918e6a8b269f", "expiration_date": 1729764301, "maker_token_price": 0, "taker_token_price": 0, "maker_usd_amount": 0, "taker_usd_amount": 0, "state": "" } }
- Revert Message: with type
revert
and data containing the block numbers of reverted blocks{ "type": "revert", "data": [11, 12, 13] }
- ID Message: With new connection, the first message will be the ID of session.
First, you need to install mockery
Then you use the mockery
to generate mock files from interface
mockery --dir=<interface directory> --name=<interface name> --output=<output dir> --structname=<name of output struct> --filename=<output filename>
Example: generate Storage
interface to a struct name MockStorage
mockery --dir=v2/pkg/storage/state --name=Storage --output=v2/mocks/ --structname=MockState --filename=State.go
For more information mockery --help