Deploy using Truffle

To deploy smart contracts to the HPB network using truffle, you firstly need to install Truffle:

npm install -g truffle

To verify that Truffle is installed properly, type truffle version on a terminal. If you see an error, make sure that your npm modules are added to your path.

Create A Project

The first step is to create a Truffle project. We'll use the *SuperCoin as an example, which creates a token that can be transferred between accounts:

  • Create a new directory for your Truffle project

mkdir SuperCoin
cd SuperCoin
  • Initialize your project:

    truffle init

Once this operation is completed, you'll now have a project structure with the following items:

  • contracts/: Directory for Solidity contracts

  • migrations/: Directory for scriptable deployment files

  • test/: Directory for test files for testing your application and contracts

  • truffle-config.js: Truffle configuration file

Compile Contract

To compile a Truffle project, change to the root of the directory where the project is located and then type the following into a terminal:

truffle compile

Config Truffle for HPB

  • Go to truffle-config.js

  • Update the truffle-config with hpb-network-credentials.

const HDWalletProvider = require('@truffle/hdwallet-provider');
const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",     
      port: 8545,            
      network_id: "*",
    },
    hpb: {
      provider: () => new HDWalletProvider(mnemonic, `https://hpbnode.com`),
      network_id: 269,
      confirmations: 10,
      timeoutBlocks: 200,
      skipDryRun: true
    },
  },

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      version: "^0.8.2", // A version or constraint - Ex. "^0.8.0"
    }
  }
}

Notice that the code requires a mnemonic to be passed in for Provider. This is the seed phrase for the account you'd like to deploy from. Create a new .secret file in the root directory and enter your 12 word mnemonic seed phrase to get started. To get the seed words from Metamask wallet, go to Metamask Settings, then from the menu choose Security and Privacy where you will see a button that says Reveal Secret Recovery Phrase.

Deploying on HPB Network

Run this command in the root of the project directory:

$ truffle migrate --network hpb

Your contract will be deployed to the HPB network, and will look similar to the example below:

1_initial_migration.js
======================

   Deploying 'Migrations'
   ----------------------
   > transaction hash:    0xaf4502198400bde2148eb4274b08d727a17080b685cd2dcd4aee13d8eb954adc
   > Blocks: 3            Seconds: 9
   > contract address:    0x81eCD10b61978D9160428943a0c0Fb31a5460466
   > block number:        3223948
   > block timestamp:     1604049862
   > account:             0x623ac9f6E62A8134bBD5Dc96D9B8b29b4B60e45F
   > balance:             6.24574114
   > gas used:            191943 (0x2edc7)
   > gas price:           20 gwei
   > value sent:          0 ETH
   > total cost:          0.00383886 ETH

   Pausing for 5 confirmations...
   ------------------------------
   > confirmation number: 2 (block: 3223952)
   > confirmation number: 3 (block: 3223953)
   > confirmation number: 4 (block: 3223954)
   > confirmation number: 6 (block: 3223956)

   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:          0.00383886 ETH


Summary
=======
> Total deployments:   1
> Final cost:          0.00383886 ETH

Remember your address, transaction_hash and other details provided will differ. The code above is just to provide an idea of structure.

Last updated