Tutorials and Examples: Building and Deploying a Simple dApp

This tutorial will guide you through creating a simple decentralized application (dApp) on JuChain: a "Greeting" smart contract where users can set and read custom greetings. We'll write the contract in Solidity, deploy it to the JuChain Testnet using Truffle, and build a frontend interface to interact with it via MetaMask. The tutorial showcases JuChain’s development workflow, fast transaction confirmations, and low-cost benefits.


Prerequisites

  • Tools:

  • JuChain Testnet:

    • RPC Endpoint: https://testnet-rpc.juchain.org

    • Network ID: 202599

    • Test JU Tokens: Obtain via the JuChain Testnet faucet (assumed: https://faucet-testnet.juchain.org)

  • Knowledge: Basic understanding of JavaScript, Solidity, and blockchain concepts.


Step 1: Set Up the Project

  1. Create and Initialize the Project:

    mkdir JuChainGreeting
    cd JuChainGreeting
    truffle init

    This creates folders like contracts/, migrations/, and truffle-config.js.

  2. Install Dependencies:

    npm install @openzeppelin/contracts web3 dotenv
    • @openzeppelin/contracts: Secure contract templates.

    • web3: Frontend-blockchain interaction.

    • dotenv: Environment variable management.

  3. Create a .env File: In the project root, create .env:

    MNEMONIC="your MetaMask mnemonic"
    RPC_URL="https://testnet-rpc.juchain.org"

    Security Note: Never commit .env to GitHub.


Step 2: Write the Smart Contract

In the contracts/ folder, create Greeting.sol:

Explanation:

  • greeting: Public variable storing the greeting.

  • setGreeting: Sets a new greeting and emits an event.

  • getGreeting: Retrieves the current greeting.

  • Event: Logs each greeting change for frontend monitoring.


Step 3: Configure Truffle

Edit truffle-config.js to include the JuChain Testnet:

Checkpoint:

  • Ensure MNEMONIC and RPC_URL in .env are correctly set.

  • Test the network connection:

    A block number output confirms a successful connection.


Step 4: Deploy the Contract

  1. Create a Deployment Script: In migrations/, create 2_deploy_greeting.js:

  2. Deploy to JuChain Testnet:

    • Example output:

    • Note the contract address (e.g., 0x1234...5678) for later use.

  3. Verify Deployment: In the Truffle console:

    Expected output: "Hello, JuChain!".


Step 5: Create the Frontend Interface

  1. Initialize the Frontend Folder:

  2. Write index.html: Add the following to public/index.html:

  3. Obtain the ABI:

    • Copy the "abi" field from build/contracts/Greeting.json and replace the abi variable in index.html.

    • Update contractAddress with the address from Step 4.


Step 6: Run and Test

  1. Start a Local Server:

    • Access http://localhost:8080 by default.

  2. Connect MetaMask:

    • Add the JuChain Testnet to MetaMask:

      • Network Name: JuChain Testnet

      • RPC URL: https://testnet-rpc.juchain.org

      • Chain ID: 202599

      • Currency Symbol: JU

    • Ensure your account has test JU tokens (via the faucet).

  3. Test the dApp:

    • Open http://localhost:8080 in your browser.

    • Verify the initial greeting displays as "Hello, JuChain!".

    • Enter a new greeting (e.g., "Welcome to JuChain!") and click “Set Greeting”.

    • Confirm the status updates to “Greeting updated successfully!” and the new greeting appears.

    • Check MetaMask: Transactions should confirm in 3-6 seconds with minimal fees (~0.001 JU).


Outcome

You’ve successfully built and deployed a simple “Greeting” dApp:

  • Smart Contract: Deployed on the JuChain Testnet, supporting greeting updates and retrieval.

  • Frontend Interface: Interacts with the contract via MetaMask, displaying results intuitively.

  • JuChain Advantages:

    • Fast Confirmation: Transactions complete in seconds, enhancing user experience.

    • Low Cost: Setting a greeting incurs minimal fees, ideal for frequent interactions.

    • EVM Compatibility: Leverages familiar Ethereum tools (Truffle, Web3.js) for seamless development.


Notes

  • Network Status: Ensure the JuChain Testnet RPC is operational; contact JuChain support if issues arise.

  • Gas Fees: Testnet costs are low, but estimate mainnet expenses before production deployment.


Last updated