Interact with InstaDApp DSA using Forked Mainnet from your local network
When you want to interact with contracts that are deployed on the Ethereum mainnet for development purpose without spending any ether you can fork the mainnet from a particular block number and then interact with that forked mainnet on your local machine.
<td>This Id comes from infura. If you don’t know about how to get this, just open infura and create a free account. After creating account add a new project and you will get the Project_Id that you need. Sample Project_Id has been shown in the image.
</td>
<tr>
<tr>
<td>{Ethereum_Address}</td>
<td>On forked mainnet you can unlock any account of your choice without knowing their private key. So, let’s say you want to test something which requires transaction of DAI or other coin. So, you can choose an account which has lots of DAI. This way you can unlock any account of your choice.
</td>
</tr>
<tr>
<td>{Port_Number}</td>
<td>It is the port number on which you want to run the ganache-cli. The default port number for ganache-cli is 8545</td>
And as you can see it is mentioning that it is Forked Chain and also provides details about chain like Block number you forked that mainnet from and also the network id.
**Note:** If Block’s value in the Forked Chain characteristics is ‘0’ then it means that you have not been able to fork the chain properly.
**Step 2:** Interacting with DSA
Create a new Directory on your machine and Clone this repo on your machine.
After cloning run ```javascript npm install``` in the cloned repo directory.
Before interacting with DSA make sure you have configured .env file which contains the private key, Ethereum address and Infura project Id.
Now, open `dsa.js` file and check if the port number of your ganache-cli matches with the web3 providers.
Now, you can interact with the DSA by using the `dsa.js` file. If you don’t have any DSA account you can create one by uncommenting this section from `dsa.js` file.
This may take few minutes as ganache has to fetch contracts from mainnet and then work on them so be patient, if you want to know if it has stuck or not then head to the tab on console where the ganache-cli is working and check if it is making some calls.
If you are using the default `dsa.js` file then output will contain `dsa accounts linked to your ethereum address` and `transaction hash`that `dsa.cast()` function returns
To check the transaction receipt you can follow these steps:
If you encounter error saying : “Error: Returned error: Returned error: project ID does not have access to archive state”. Trying reloading the ganache-cli as this will most probably fix this.
**Note:** This is not the best way to interact with DSA as you might face a lot of errors in the process of interacting on forked mainnet. The best way is still the Ethereum Mainnet.