Web3.0 Development Guide: Functional Code Examples

ยท

Introduction to Web3.0 Development

Web3.0 represents the next evolution of the internet, focusing on decentralized applications (dApps) and blockchain technology. This guide provides practical code examples for key Web3.0 functionalities using Ethereum and related tools.

Core Resources for Ethereum Development

Instantiating Web3 Objects

Creating a Web3 instance involves setting up a service provider - an interface to Ethereum node servers.

Service Provider Types

Three RPC connection types are available:

// HTTP Provider
const httpProvider = new Web3.providers.HttpProvider(RPC_HTTP)

// WebSocket Provider
const wsProvider = new Web3.providers.WebsocketProvider(RPC_WS)

// IPC Provider
const ipcProvider = new Web3.providers.IpcProvider(RPC_IPC)

Simplified Web3 Instantiation

For most use cases, you can directly pass RPC URLs:

const web3 = new Web3(RPC_HTTP)  // Auto-detects provider type

Wallet Integration

When using browser extensions like MetaMask:

if (window.ethereum) {
  const web3 = new Web3(window.ethereum)
}

Account Management

Retrieving Wallet Addresses

const accounts = await window.ethereum.request({ 
  method: 'eth_requestAccounts' 
})
console.log(accounts[0])  // Primary connected address

Creating New Accounts

const account = web3.eth.accounts.create()
console.log('Address:', account.address)
console.log('Private Key:', account.privateKey)

Smart Contract Interaction

Connecting to Contracts

const contract = new web3.eth.Contract(
  ABI_JSON, 
  CONTRACT_ADDRESS
)

Calling Contract Methods

Read operations (no gas costs):

const balance = await contract.methods
  .balanceOf(ACCOUNT)
  .call()

Write operations (require gas):

const tx = contract.methods
  .transfer(RECIPIENT, AMOUNT)
  .send({
    from: SENDER,
    gas: ESTIMATED_GAS
  })

Transaction Handling

ETH Transfers

const txReceipt = await web3.eth.sendTransaction({
  from: SENDER,
  to: RECIPIENT,
  value: web3.utils.toWei('1', 'ether')
})

Transaction Monitoring

const checkTxStatus = async (hash) => {
  const receipt = await web3.eth.getTransactionReceipt(hash)
  return receipt?.status ? 'Success' : 'Pending/Failed'
}

Security Practices

Message Signing

const signature = await web3.eth.personal.sign(
  MESSAGE, 
  ACCOUNT
)

Signature Verification

const signer = await web3.eth.personal.ecRecover(
  MESSAGE, 
  SIGNATURE
)

FAQ Section

How do I switch between Ethereum networks?

await window.ethereum.request({
  method: 'wallet_switchEthereumChain',
  params: [{ chainId: '0x1' }]  // Mainnet
})

๐Ÿ‘‰ Learn more about network switching

What's the difference between Web3.js and Ethers.js?

Web3.js is the official Ethereum library with comprehensive features, while Ethers.js offers a lighter alternative with similar functionality.

How can I estimate gas costs?

const gasEstimate = await contract.methods
  .myFunction(PARAMS)
  .estimateGas({ from: ACCOUNT })

๐Ÿ‘‰ Complete gas estimation guide

Why do I need ABI for contracts?

ABI (Application Binary Interface) defines how to interact with smart contracts, specifying available methods and data structures.

How do I handle failed transactions?

Check transaction receipts for status codes and use error handling in your calls:

try {
  await tx.send()
} catch (error) {
  console.error('Transaction failed:', error.message)
}

Conclusion

This guide covers essential Web3.0 development patterns from basic setup to advanced contract interactions. By mastering these fundamentals, you can build robust decentralized applications on Ethereum and compatible blockchains.

Remember to always:

For production applications, consider additional security audits and testing frameworks like Hardhat or Truffle.