---
# System prepended metadata

title: Deploy IBFT2 using the configuration file

---


# Deploy IBFT2 using the configuration file
## Prerequisite
  - Clone repo https://gitlab.com/Fagr/bc-hyperledger-besu.git
  - Install Besu Command line from documentation https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Install-Binaries/ 
  - Install docker and docker-compose to run Grafana, Prometheus and Blockchain explorer

## Run

To two bootnodes and six validators

```javascript
   ./run.sh 
```

To one bootnodes and three validators

```javascript
   ./run-four.sh 
```
## Test

To test Blockchain make a curl request

```javascript
   curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' loclahost:8545
```

To run  Grafana, Prometheus and Blockchain explorer

```javascript
   ./graph.sh 
```
Grafana: port 3000
Prometheus: port 9090
Blockchain-explorer: port 8080
NB: We can make run all nodes and graphs at the same time. But we separate scripts to reduce memory usage.

## Stop/Pause Blockchain

```javascript
   ./stop.sh 
```
## Delete Blockcian

```javascript
   ./down.sh 
```


# Deploy IBFT2 using the quickstart
## Prerequisite
  - Clone repo git clone https://gitlab.com/Fagr/beso-ethereum-reloader.git
  - Install docker and docker-compose.
## Run

To one bootnodes and three validators

```javascript
   ./run.sh -c ibft2 
```

## Test

To test Blockchain make a curl request

```javascript
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' localhost:8545
```

## Stop/Pause Blockchain

```javascript
   ./stop.sh 
```
## Stop/Pause Blockchain

```javascript
   ./resume.sh 
```

## Delete Blockchain

```javascript
   ./remove.sh 
```


# Migration: Deploy smart contract on blockchain
## Prerequisite
  - Intsall truffle
      ```javascript
      npm install -g  truffle
      ```

## Compile

```javascript
   truffle compile 
```
The compile command creates a `build/` directory, This directory transfer all our solidity code to build files.

## Migration 

The migration process is to deploy the `build/` to our blockchain

```javascript
   truffle migrate --network besu
```

## Usage

To use the migrated contracts you need to copy `build/` to your project root directory


## Common Errors

1- Each time you delete the blockchain or switch between docker or configuration file you need to `migrate` and change `build/`
2- When you try to migrate it keeps give you `everything is up to date` then try `truffle migrate --network besu --reset`
3- After migration, if you got error `network doesn't exist` or the Total cost wasn't 0 ETH.
open `truffle-config.js` 
 a) Check these global variables
    
      const PrivateKeyProvider = require("@truffle/hdwallet-provider");
      const privateKey = "684394f8d5cbfd47e4c86246525801dbd3bbde68ddcf894d2291dedfbd43e604";
      /** Besu initialization */
      const privateKeyProvider = new PrivateKeyProvider('0x'+privateKey, "http://localhost:8545");

 b) Inside `networks` object make sure the besu is intialized
  
    quickstartWallet: {
          provider: privateKeyProvider,
          gas: "0x1ffffffffffffe",
          gasPrice: 0,
          network_id: "*"
        },
    
c) Some processes may fail after long time of deployement so we use reloader to refresh blockchain after a long time of deployment 
      https://gitlab.com/Fagr/beso-ethereum-reloader
      
# MicroService variables
adminPK=0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63

actually it is a secretkey
 