JSPM

@ceramicnetwork/anchor-listener

4.3.0-rc.0
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 339
    • Score
      100M100P100Q121509F
    • License (Apache-2.0 OR MIT)

    Ceramic anchor events listener

    Package Exports

    • @ceramicnetwork/anchor-listener

    Readme

    Ceramic Anchor listener

    ceramicnetwork MIT license Twitter

    Getting started

    Installation

    $ npm install @ceramicnetwork/anchor-listener

    Usage

    import {
      createBlockProofsListener,
      createBlocksProofsLoader,
      createAncestorBlocksProofsLoader,
    } from '@ceramicnetwork/anchor-listener'
    import { take, timeout } from 'rxjs'
    
    // Listen to new block events on the provider and load anchor proofs
    const subsription = createBlockProofsListener({ chainId: 'eip155:1', confirmations: 20, provider: ... }).subscribe({
      next(event) {
        // event contains the `block` and `proofs`
      }
    })
    // Unsubscribe to stop listening
    subscription.unsubscribe()
    
    // Load proofs for a range of blocks
    createBlocksProofsLoader({ chainId: 'eip155:1', fromBlock: 100, toBlock: 120, provider: ...  }).subscribe({
      next(event) {
        // event contains the `block` and `proofs`
      }
    })
    
    // Load proofs for blocks, walking up the parents until the expected ancestor hash is found
    createAncestorBlocksProofsLoader({ chainId: 'eip155:1', initialBlock: 'latest', targetAncestorHash: '...', provider: ...  }).pipe(
      // Operators can be used to add stopping conditions
      take(50), // attempt to load maximum 50 blocks
      timeout(300_000), // timeout after 5 minutes
    ).subscribe({
      next(event) {
        // event contains the `block` and `proofs`
        // unless interrupted, `block.parentHash` will be `targetAncestorHash` in the last event
      }
    })

    Development

    Run tests:

    npm test

    Run linter:

    npm run lint

    Contributing

    We are happy to accept small and large contributions. Make sure to check out the Ceramic specifications for details of how the protocol works.

    License

    MIT or Apache-2.0