import { JsonRpcEngine, createScaffoldMiddleware } from 'json-rpc-engine'; import { providerAsMiddleware } from 'eth-json-rpc-middleware'; import Ganache from 'ganache'; export function getTestSeed() { return 'people carpet cluster attract ankle motor ozone mass dove original primary mask'; } export function getTestAccounts() { return [ { address: '0x88bb7F89eB5e5b30D3e15a57C68DBe03C6aCCB21', key: Buffer.from( '254A8D551474F35CCC816388B4ED4D20B945C96B7EB857A68064CB9E9FB2C092', 'hex', ), }, { address: '0x1fe9aAB565Be19629fF4e8541ca2102fb42D7724', key: Buffer.from( '6BAB5A4F2A6911AF8EE2BD32C6C05F6643AC48EF6C939CDEAAAE6B1620805A9B', 'hex', ), }, { address: '0xbda5c89aa6bA1b352194291AD6822C92AbC87c7B', key: Buffer.from( '9B11D7F833648F26CE94D544855558D7053ECD396E4F4563968C232C012879B0', 'hex', ), }, ]; } export function createEngineForTestData() { return new JsonRpcEngine(); } export function providerFromEngine(engine) { const provider = { sendAsync: engine.handle.bind(engine) }; return provider; } export function createTestProviderTools(opts = {}) { const engine = createEngineForTestData(); // handle provided hooks engine.push(createScaffoldMiddleware(opts.scaffold || {})); // handle block tracker methods engine.push( providerAsMiddleware( Ganache.provider({ mnemonic: getTestSeed(), network_id: opts.networkId, chain: { chainId: opts.chainId }, hardfork: 'muirGlacier', }), ), ); // wrap in standard provider interface const provider = providerFromEngine(engine); return { provider, engine }; }