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:
Node.js (v16 or higher, download: https://nodejs.org/)
Truffle Suite (install globally:
npm install -g truffle)MetaMask browser extension (install: https://metamask.io/)
JuChain Testnet:
RPC Endpoint:
https://testnet-rpc.juchain.orgNetwork 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
Create and Initialize the Project:
mkdir JuChainGreeting cd JuChainGreeting truffle initThis creates folders like
contracts/,migrations/, andtruffle-config.js.Install Dependencies:
npm install @openzeppelin/contracts web3 dotenv@openzeppelin/contracts: Secure contract templates.web3: Frontend-blockchain interaction.dotenv: Environment variable management.
Create a
.envFile: In the project root, create.env:MNEMONIC="your MetaMask mnemonic" RPC_URL="https://testnet-rpc.juchain.org"Security Note: Never commit
.envto 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
MNEMONICandRPC_URLin.envare correctly set.Test the network connection:
A block number output confirms a successful connection.
Step 4: Deploy the Contract
Create a Deployment Script: In
migrations/, create2_deploy_greeting.js:Deploy to JuChain Testnet:
Example output:
Note the contract address (e.g.,
0x1234...5678) for later use.
Verify Deployment: In the Truffle console:
Expected output:
"Hello, JuChain!".
Step 5: Create the Frontend Interface
Initialize the Frontend Folder:
Write
index.html: Add the following topublic/index.html:Obtain the ABI:
Copy the
"abi"field frombuild/contracts/Greeting.jsonand replace theabivariable inindex.html.Update
contractAddresswith the address from Step 4.
Step 6: Run and Test
Start a Local Server:
Access
http://localhost:8080by default.
Connect MetaMask:
Add the JuChain Testnet to MetaMask:
Network Name: JuChain Testnet
RPC URL:
https://testnet-rpc.juchain.orgChain ID: 202599
Currency Symbol: JU
Ensure your account has test JU tokens (via the faucet).
Test the dApp:
Open
http://localhost:8080in 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