Try   HackMD

Specification for Predicate Indexer for Limit Order Predicate

Overview

This specification outlines the requirements for a predicate indexer for a limit order predicate. The indexer will track and index events related to order creation, cancellation, and fulfillment based on the predicate's logic, tests, and scripts.

Predicate Reference

Test Suite

Testnet Scripts

Event Indexing

The indexer will be responsible for monitoring and storing the following events:

  1. Create Order Event: Triggered when an order is created.
  2. Cancel Order Event: Triggered when an order is canceled.
  3. Fulfill Order Event: Triggered when an order is fulfilled.

Implementation Details

  1. Data Collection: The indexer will listen for events emitted by the limit order predicate on the Fuel Beta 5 testnet.
  2. Data Storage: Relevant data from each event will be stored in a structured format, ensuring quick retrieval and query capabilities. This may include order details, transaction identifiers, timestamps, and participant addresses.
  3. Script Execution Tracking: For the cancel_order and fulfill_order scripts, the indexer will capture the outcomes and the sequence of actions within each script execution.
  4. Event Parsing: Each event type will be parsed to extract and store relevant information, such as order ID, trader address, order size, price, and status changes.
  5. Integration with Test Suites: The indexer will be integrated with the local test suite to validate the correctness of indexed data against known outcomes.

Requirements

  • Real-Time Indexing: The system should index events in real-time or near-real-time for prompt data availability.
  • Scalability: The indexer should be scalable to handle an increasing number of transactions and events without significant performance degradation.
  • Reliability: The system should ensure data integrity and consistency, even in cases of network or system failures.
  • Query Interface: Provide an API or query interface for retrieving indexed data, supporting queries based on order ID, trader address, and order status.

Testing and Validation

  • Local Test Integration: Validate the indexer against local tests for create, cancel, and fulfill orders.
  • Testnet Script Results Analysis: Analyze the results of the cancel_order and fulfill_order scripts executed on the testnet to ensure accurate indexing and representation of events.

Output Documentation

  • Indexing Results: Document the outcomes and indexed data for both local tests and testnet script executions.
  • Discrepancies and Anomalies: Any deviations from expected results should be documented and analyzed for root cause determination.

Future Considerations

  • Upgrades and Maintenance: Plan for regular updates and maintenance to accommodate changes in the limit order predicate and the Fuel ecosystem.
  • Expansion of Indexed Events: Consider future expansion to include additional event types as the limit order predicate evolves.

Cancel Order script output

maker address = 0x194c4d5d321ea3bc2e87109f4a86520ad60f924998f67007d487d3cc0acc45d2

amount0 = 40000 USDC (0450e4d385cbd2914f74505f18f01587cc4f4ad1fdef4b80cbde2a8155a86d72)
amount1 = 1 BTC (593b117a05f5ea64b39ba1f9bc3fb7e7a791c9be130e28376ad552eacdb3b746)
price = 0 USDC/BTC
predicate root = Bech32Address { hrp: "fuel", hash: 02d8f51b84a8ad850a7d844af62331c16c6cc1068c9303b45879b77ca5a1b2fd }

create order tx: 1192b64a4742d7729652bdb7906f2e454d2c5ae114937e9f1b3c83476fc7039b

cancel order tx: dda0c8a501aeca4acf1c3f61895fbbac0ef5b192f3802cc4cd26c102b4406416

Fulfill Order script output

maker address = 0x194c4d5d321ea3bc2e87109f4a86520ad60f924998f67007d487d3cc0acc45d2

taker address = 0x47010c8ecfeaa888954d7a536131fa962060e28552f3353c06954afdc558410e

amount0 = 40000 USDC (0450e4d385cbd2914f74505f18f01587cc4f4ad1fdef4b80cbde2a8155a86d72)
amount1 = 1 BTC (593b117a05f5ea64b39ba1f9bc3fb7e7a791c9be130e28376ad552eacdb3b746)
price = 0 USDC/BTC
predicate root = Bech32Address { hrp: "fuel", hash: 02d8f51b84a8ad850a7d844af62331c16c6cc1068c9303b45879b77ca5a1b2fd }

create order tx: dc4ec0b49d8e34ef8a56c2bc8af48578445633b233d36de829319f262b1251a4

fulfill order tx: 0b8b0ca86951c1923d5377410a064eda025651e011d9869d04c040fdc3daba4d