Development Frameworks

Phalcon Fork can be integrated with popular development frameworks, such as Foundry, Hardhat, Remix, and others.

The instructions on how to get the API Key, Fork ID, RPC_ID, Project ID, and FORK_RPC can be found in this document.

We use API_KEY, FORK_ID, RPC_ID, PROJECT_ID, and FORK_RPCin the following to denote the concrete value.

Hardhat

Add the Phalcon network to hardhat.config.js, by placing the fork's RPC in the URL.

Copy

require("@nomicfoundation/hardhat-toolbox");

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  networks: {
    hardhat: {
    },
    phalcon: {
      url: "[FORK_RPC]",
      accounts: ['${PRIVATE_KEY}']
    }
  },
  solidity: "0.8.17",
};

When executing the deployment scripts, specify the network as phalcon, for example:

npx hardhat run scripts/deploy.js --network phalcon

Foundry

Phalcon Fork can be easily integrated into Foundry.

  • Using rpc-url parameter

Copy

forge create  --rpc-url [FORK_RPC] --private-key %private-key% src/Contract.sol:TokenSwap
  • Add eth_rpc_url to the foundry.toml.

When executing without specifying an rpc-url, it will use Fork by default.

eth_rpc_url = [FORK_RPC]    
  • Add Phalcon Fork to the rpc_endpoints section in foundry.toml

[rpc_endpoints]
phalcon = [FORK_RPC]

When executing, use Fork by specifying the rpc-url.

forge create --rpc-url phalcon --private-key %private-key% src/Contract.sol:TokenSwap

If you encounter the "nonce too high" message, please add "--slow" option to the command line.

--slow:Makes sure a transaction is sent only after its previous one has been confirmed and succeeded.

Remix

  • Sign the transaction in MetaMask, and check the network to ensure it is being executed on the Fork

  • View the transaction in MetaMask and wait for the status change from Pending to Confirmed.

  • Check the transaction execution details in Phalcon Explorer.

Or use the transaction list in the Phalcon Panel to see the simulated transaction.

Truffle

Add the Phalcon network to truffle-config.js, by placing the fork's RPC in the URL.

Copy

networks: {
    phalcon: {
      provider: () => new HDWalletProvider([privateKey], '[FORK_RPC]'),
      network_id: "*", // Match any network id
      gas: 5500000, // Gas limit
      confirmations: 0, //number of confirmations to wait between deployments
      timeoutBlocks: 200,
      skipDryRun: true
    },
  },

Please note that confirmations must be set to 0 when using Phalcon.

When executing the deployment scripts, specify the network as phalcon, for example:

truffle deploy --network phalcon

MetaMask

Please refer to this manual to see how to add a Fork into MetaMask.

Last updated