Docs

eth_newFilter - Create event filter

Create Centrifuge event filter. Log subscription.

Creates a filter object, based on filter options, to notify when the state changes (logs) on the Centrifuge network. This method is essential for tracking smart contract events and state changes.

Implementation Example

Bash
curl -X POST https://api-centrifuge.n.dwellir.com/YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_newFilter",
    "params": [{
      "fromBlock": "0x1",
      "toBlock": "0x2",
      "address": "0x8888f1f195afa192cfee860698584c030f4c9db1",
      "topics": [
        "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"
      ]
    }],
    "id": 1
  }'

Advanced Usage

Monitor Multiple Contracts

JSON
{
  "params": [{
    "fromBlock": "latest",
    "address": [
      "0x1234567890abcdef1234567890abcdef12345678",
      "0xabcdef1234567890abcdef1234567890abcdef12"
    ]
  }]
}

Complex Topic Filtering

JSON
{
  "params": [{
    "topics": [
      "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",  // Transfer event
      null,  // Any sender
      [      // Specific recipients
        "0x0000000000000000000000001234567890abcdef1234567890abcdef12345678",
        "0x000000000000000000000000abcdef1234567890abcdef1234567890abcdef12"
      ]
    ]
  }]
}

Monitor All Events from Latest Block

JSON
{
  "params": [{
    "fromBlock": "latest",
    "toBlock": "latest"
  }]
}

Workflow Example

JavaScript
// 1. Create filter
const createFilter = await fetch(url, {
  method: 'POST',
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'eth_newFilter',
    params: [{ fromBlock: 'latest' }],
    id: 1
  })
});
const { result: filterID } = await createFilter.json();

// 2. Poll for changes
const getChanges = await fetch(url, {
  method: 'POST',
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'eth_getFilterChanges',
    params: [filterID],
    id: 2
  })
});
const { result: logs } = await getChanges.json();

// 3. Clean up
const uninstall = await fetch(url, {
  method: 'POST',
  body: JSON.stringify({
    jsonrpc: '2.0',
    method: 'eth_uninstallFilter',
    params: [filterID],
    id: 3
  })
});

Notes

  • Block Range Limits: Free plans typically limited to 5 blocks, paid plans up to 10,000 blocks
  • Filter Timeout: Filters expire after ~5 minutes of inactivity - poll regularly with eth_getFilterChanges
  • Topics Order: Topics are order-dependent; the first topic is usually the event signature hash
  • Filter Management: Always uninstall filters when done to free up resources
  • Performance: Create specific filters to reduce the amount of data processed

Need help? Contact our support team or check the Centrifuge documentation.