12. 与区块链交互的开发实战
在这一部分,我们将深入探讨如何与区块链交互,包括使用Web3.js与区块链进行交互、开发一个去中心化钱包,以及集成去中心化存储解决方案。这些实战经验将帮助你进一步掌握Web3开发的核心技能。
1. 如何使用Web3.js与区块链交互
Web3.js是与以太坊区块链交互的核心JavaScript库。它提供了与智能合约通信、发送交易、获取区块链数据等功能。
1.1 初始化Web3.js
首先,我们需要在项目中引入Web3.js库。
-
安装Web3.js:
npm install web3
-
初始化Web3.js实例:
- 在你的JavaScript文件中,创建一个Web3实例,连接到区块链节点(如本地的Ganache或以太坊主网):
const Web3 = require('web3'); const web3 = new Web3('http://localhost:7545'); // 连接到本地Ganache
- 在你的JavaScript文件中,创建一个Web3实例,连接到区块链节点(如本地的Ganache或以太坊主网):
1.2 获取账户和余额
使用Web3.js获取连接到的区块链节点的账户列表以及账户余额。
-
获取账户列表:
web3.eth.getAccounts() .then(accounts => { console.log("Accounts:", accounts); }) .catch(err => console.error(err));
-
获取账户余额:
const account = 'YOUR_ACCOUNT_ADDRESS'; web3.eth.getBalance(account) .then(balance => { console.log("Balance:", web3.utils.fromWei(balance, 'ether'), "ETH"); }) .catch(err => console.error(err));
1.3 与智能合约交互
你可以使用Web3.js与智能合约进行交互,如调用合约方法和监听事件。
-
初始化合约实例:
- 使用合约的ABI和地址初始化一个合约实例:
const contractABI = [/* ABI goes here */]; const contractAddress = 'YOUR_CONTRACT_ADDRESS'; const contract = new web3.eth.Contract(contractABI, contractAddress);
- 使用合约的ABI和地址初始化一个合约实例:
-
调用合约方法:
-
调用合约的
getMessage
方法获取存储的消息:contract.methods.getMessage().call() .then(message => { console.log("Stored Message:", message); }) .catch(err => console
-