Using Truffle

1. Install truffle (preferably v5.3.0+, sometimes with v5.1.33, @truffle/hdwallet-provider does not work)

npm install -g truffle

2. Create a metacoin project, unbox metacoin truffle box, and install @truffle/hdwallet-provider

mkdir metacoin
cd metacoin
truffle unbox metacoin
npm install --save-dev @truffle/hdwallet-provider

3. Modify truffle-config.js to add Harmony networks. Make sure to add your mnemonic or private key.

const HDWalletProvider = require('@truffle/hdwallet-provider');
const mnemonic = '<ADD-YOUR-MNEMONIC-HERE>';
const privateKeyTest = '<ADD-YOUR-PRIVATE-KEY-HERE>';

module.exports = {
  networks: {
    testnet: {
      provider: () => {
        return new HDWalletProvider({
          mnemonic,
          providerOrUrl: 'https://api.s0.b.hmny.io', // https://api.s0.t.hmny.io for mainnet
          derivationPath: `m/44'/1023'/0'/0/`
        });
      },
      network_id: 1666700000, // 1666600000 for mainnet
    },
    testnetHar: {
      provider: () => {
        if (!privateKeyTest.trim()) {
          throw new Error(
            'Please enter a private key with funds, you can use the default one'
          );
        }
        return new HDWalletProvider({
          privateKeys: [privateKeyTest],
          providerOrUrl: 'https://api.s0.b.hmny.io',
        });
      },
      network_id: 1666700000,
    },
  },
  compilers: {
    solc: {
      version: "0.8.13", // Fetch exact version from solc-bin
    }
  }
};

4. Compile and deploy

truffle compile
truffle deploy --network testnet

Last updated