LogoLogo
Node Sale WhitelistPhron AIopenPhronDevelopers
  • Introducing Phron AI
  • AI as the Core Infrastructure Layer
  • openPhron
  • PhronZero Prototype
  • PhronZero
  • Phron AI Node Sale
    • Node Utility
    • Node Tiers
    • FAQs
  • Farming Rewards
  • Roadmap
  • Official Links
Powered by GitBook
On this page
  1. Developers
  2. Build with PhronAI
  3. Smart Contracts Development
  4. Solidity Contracts
  5. Phron API

Steps to Set Up

Setting Up the Development Environment

1. Initialize the Project

Create a new directory for your project and initialize it with npm:

mkdir MySolidityProject
cd MySolidityProject
npm init -y

This will generate a package.json file for managing dependencies and scripts.

2. Install Solidity and Hardhat Dependencies

Hardhat is a powerful development environment for compiling, deploying, and testing Ethereum smart contracts. Install Hardhat along with ethers.js for interacting with Ethereum, and the necessary plugins:

npm install --save-dev hardhat @nomiclabs/hardhat-ethers ethers

This command installs:

  • Hardhat: For development, testing, and deployment.

  • ethers.js: A library for interacting with Ethereum.

  • @nomiclabs/hardhat-ethers: A plugin that integrates Hardhat with ethers.js.

3. Create the Hardhat Configuration

Run Hardhat’s initialization command to generate the basic configuration and project files:

npx hardhat

You will be prompted to select a task. Choose Create a basic sample project or Create an advanced project, depending on your needs. This will generate:

  • hardhat.config.js: Your Hardhat configuration file.

  • Sample contract, test, and script files.

4. Set Up the Folder Structure

MySolidityProject/
├── contracts/           # Contains all the Solidity contracts
│   └── MyContract.sol   # Example contract
├── scripts/             # Scripts for deployment and contract interaction
│   └── deploy.js        # Script for contract deployment
├── test/                # Contains unit tests for smart contracts
│   └── test.js          # Example test file
├── artifacts/           # Generated files (compiled contracts, ABIs, etc.)
├── cache/               # Cached files for faster compilation
├── node_modules/        # Installed npm packages
├── hardhat.config.js    # Hardhat configuration file
└── package.json         # Project dependencies and scripts

5. Creating a Sample Solidity Contract

Inside the contracts/ folder, create a simple Solidity contract, e.g., MyContract.sol:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyContract {
    uint256 public value;

    function setValue(uint256 _value) public {
        value = _value;
    }

    function getValue() public view returns (uint256) {
        return value;
    }
}

6. Creating a Deployment Script

In the scripts/ folder, create a deployment script (deploy.js):

javascriptCopy codeasync function main() {
  const [deployer] = await ethers.getSigners();
  console.log("Deploying contracts with the account:", deployer.address);

  const MyContract = await ethers.getContractFactory("MyContract");
  const myContract = await MyContract.deploy();

  console.log("MyContract deployed to:", myContract.address);
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });

7. Running the Deployment

To compile and deploy your contract locally:

  1. Start a local Ethereum node using Hardhat:

    npx hardhat node
  2. Deploy your contract:

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

This will deploy your contract to a local test network.

8. Setting Up a Test File

In the test/ folder, create a test script (test.js) using Hardhat's testing framework and ethers.js:

const { expect } = require("chai");

describe("MyContract", function () {
  it("Should set and get the correct value", async function () {
    const MyContract = await ethers.getContractFactory("MyContract");
    const myContract = await MyContract.deploy();
    await myContract.deployed();

    // Set a value
    await myContract.setValue(42);

    // Test the value
    expect(await myContract.getValue()).to.equal(42);
  });
});

9. Running the Tests

To run your tests:

npx hardhat test

10. Hardhat Network Configuration (Optional for Testnets)

To deploy on a real test network , configure your hardhat.config.js:

require("@nomiclabs/hardhat-ethers");

module.exports = {
  solidity: "0.8.0",
  networks: {
    phron: {
      url: `https://testnet.phron.ai`,
    },
  },
};

Last updated 6 months ago