Skip to main content

Local Chain

In this tutorial, we will go through the steps of connecting to a local Chain using Ganache. Connecting to a local Chain can be useful for local development of DApps for a number of reasons:

  • Transactions are faster,
  • Possibility to work offline,
  • Not relying on testnet faucets.


The tutorial assumes the user has already started with the basics of useDApp.

See the Getting Started guide if you are a new user.

Start ganache

Ganache is a personal blockchain for rapid Ethereum distributed application development. You can use Ganache across the entire development cycle; enabling you to develop, deploy, and test your dApps in a safe and deterministic environment.


npm install ganache



You will see something like:

ganache v7.0.3 (@ganache/cli: 0.1.4, @ganache/core: 0.1.4)
Starting RPC server

Available Accounts
(0) 0x83e670e1a9FC3c3c1399a80325083741D1a362f2 (1000 ETH)
(1) 0xD52EFcd9d7dd4c27ff3BBC0e5bE796D9DF8503F0 (1000 ETH)
(2) 0xd680d18708938aA350eEE857f201E1DFBc7202cf (1000 ETH)
(3) 0xb8597c215460712c080C18636fc82960136437F1 (1000 ETH)
(4) 0xd2b3694138b3379De32A027A09bEa207821A306D (1000 ETH)
(5) 0xa6Fd3C54AB8B9F781Ca02eD0248683058B6088d8 (1000 ETH)
(6) 0x5F8840e9e4C2C84D088c1fFb889f2aCAb3684f76 (1000 ETH)
(7) 0xDf75De85f03Ce83D39C071e4c8D43914319FAB2C (1000 ETH)
(8) 0xC98d548f1De48B3E6489DE6220aF7132898A3979 (1000 ETH)
(9) 0x2138ff683f771ecca3312D18928131778f7f1635 (1000 ETH)

Private Keys
(0) 0xf6286bdb58f15a3c4f99af001a67d88104c3421bc680c51277b9b887325ee3f9
(1) 0x80fed1c26b199d1c0a13cac49e977f3f306082be800fb8d6f1e4a109395b1a50
(2) 0xf5ec61de0080e9a6081b9f828b917fdbc9f7f76bca041d48f74c38ec55702423
(3) 0xc2c5eefc5b84d4b0a12d6384f502e31e771c1e1980f253dccc4ee51e45ffe08c
(4) 0x2a932d7ec4abe76914cee7e95b287946a8fc9f1035d367201f42f8d2f12126d3
(5) 0x75c6cb6c8e2b822547e19990d3329d81f85014dfb5a22374ab41b777ebe03ba4
(6) 0x33cd5cd08cefd3027d79ad72d060b5162dc4284734dabc747644e06f90a33829
(7) 0x45279b730ca8b4fcf6db360da6136ca5fe33e88e621b3a2012123add4093cd39
(8) 0x01fea72899b1d02befcde988e9d1f152ce8ffb4872cdfdeb2676ad3fcf1746f2
(9) 0x40e7e7e7c53b885f86cff7479ba42dc48c661a98e802867462e4f4e0283cb625

HD Wallet
Mnemonic: ribbon twice crisp coconut spot tube cushion upset sunny spell riot empower
Base HD Path: m/44'/60'/0'/0/{account_index}

Default Gas Price

BlockGas Limit

Call Gas Limit

Chain Id

RPC Listening on


Add ganache address to configuration.

  import { Localhost } from '@usedapp/core'

const config = {
readOnlyChainId: Localhost.chainId,
readOnlyUrls: {
[Localhost.chainId]: '',

Reading from blockchain

To read from blockchain, just add a queryOptions object to specified call.

You do not have to deploy multicall, because useDapp does it automatically.


const etherBalance = useEtherBalance(account, { chainId: Localhost.chainId })
const tokenBalance = useTokenBalance(tokenAddress, account, { chainId: Localhost.chainId })


In this tutorial, we went through the steps required for using useDApp with a local chain using Ganache.