Wondering what’s next for npm?Check out our public roadmap! »

    redundant-rpc-provider

    1.1.0 • Public • Published

    redundant-rpc-provider

    Redundant RPC provider for metamasks eth provider engine

    What it does?

    • For transaction sending it pushes your transaction to all RPCs but only waits for the first one to respond.
    • For data-fetching calls it queries the random RPC and failovers to others if it's down

    API

    new RedundantRPCSubprovider([
                url_1,
                url_2,
                ...
                url_n
            ],
            RpcSubprovider
    )
    

    Example usage

    const ProviderEngine = require('web3-provider-engine')
    const CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')
    const FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')
    const FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')
    const VmSubprovider = require('web3-provider-engine/subproviders/vm.js')
    const HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')
    const NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')
    const RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')
    const RedundantRPCSubprovider = require('redundant-rpc-provider')
    const Web3 = require('web3')
    
    var engine = new ProviderEngine();
    var web3 = new Web3(engine);
    
    // static results
    engine.addProvider(new FixtureSubprovider({
        web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',
        net_listening: true,
        eth_hashrate: '0x00',
        eth_mining: false,
        eth_syncing: true
    }))
    
    // cache layer
    engine.addProvider(new CacheSubprovider())
    
    // filters
    engine.addProvider(new FilterSubprovider())
    
    // pending nonce
    engine.addProvider(new NonceSubprovider())
    
    // vm
    engine.addProvider(new VmSubprovider())
    
    // data source
    const INFURA_RPC = 'https://ropsten.infura.io/'
    const MEW_RPC = 'https://api.myetherapi.com/rop'
    
    engine.addProvider(
        new RedundantRPCSubprovider([
                INFURA_RPC,
                MEW_RPC
            ],
            RpcSubprovider
        )
    )
    
    // log new blocks
    engine.on('block', function (block) {
        console.log('================================')
        console.log('BLOCK CHANGED:', '#' + block.number.toString('hex'), '0x' + block.hash.toString('hex'))
        console.log('================================')
    })
    
    // network connectivity error
    engine.on('error', function (err) {
        // report connectivity errors
        console.error(err.stack)
    })
    
    // start polling for blocks
    engine.start()
    

    Install

    npm i redundant-rpc-provider

    DownloadsWeekly Downloads

    8

    Version

    1.1.0

    License

    MIT

    Last publish

    Collaborators

    • avatar