去中心化アプリケーション(DApp)を構築するのは複雑に聞こえますが、実際には一歩ずつ進めば、敷居はそれほど高くありません。Web3 開発の核心はブロックチェーンとのインタラクション、スマートコントラクトの作成、フロントエンドの統合にあります。ここでは、簡単な DApp の構築プロセスを一歩ずつ説明します。
開発環境の準備#
Web3 開発環境を構築します。Node.js と npm をインストールし、依存関係の管理とスクリプトの実行を容易にします。次に、Truffle や Hardhat のようなスマートコントラクト開発フレームワークをインストールします。Hardhat はより柔軟で、初心者に適しており、コマンドライン操作も簡単です。
npm install --save-dev hardhat
インストールが完了したら、プロジェクトを初期化します:
npx hardhat
「シンプルなサンプルプロジェクトを作成」を選択すると、基本的なスマートコントラクトとテストコードが生成されます。
スマートコントラクトの作成#
スマートコントラクトは DApp の核心ロジックで、通常は Solidity 言語で作成されます。プロジェクト内には contracts
フォルダがあり、その中にコントラクトコードが置かれます。例えば、シンプルなストレージコントラクトを書くとします:
`// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private data;
function set(uint256 _data) public {
data = _data;
}
function get() public view returns (uint256) {
return data;
}
}`
このコントラクトは、ユーザーが数字を保存し、読み取ることを許可します。
コントラクトのコンパイルとデプロイ#
コントラクトを書いたら、コンパイルコマンドを実行します:
npx hardhat compile
エラーがないことを確認します。次に、デプロイスクリプトを設定します。通常は scripts
フォルダ内にあります。デプロイスクリプトの例:
`async function main() {
const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
const simpleStorage = await SimpleStorage.deploy();
await simpleStorage.deployed();
console.log("SimpleStorage deployed to:", simpleStorage.address);
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});`
デプロイを実行します:
npx hardhat run scripts/deploy.js --network localhost
ローカルテストネットワークは Hardhat に付属のノードを使用することも、テストチェーンに接続することもできます。
フロントエンドインターフェースの構築#
DApp のフロントエンドは通常 React または Vue を使用します。ここでは React を例に、プロジェクトを作成します:
`npx create-react-app dapp-frontend
cd dapp-frontend
npm install ethers`
ethers.js
はブロックチェーンとインタラクションするためのライブラリです。フロントエンドはウォレット(例えば MetaMask)に接続し、スマートコントラクトのメソッドを呼び出す必要があります。
ウォレットに接続し、コントラクトを呼び出すサンプルコード:
`import { useState } from "react";
import { ethers } from "ethers";
import SimpleStorageABI from "./SimpleStorage.json";
function App() {
const [data, setData] = useState("");
const [input, setInput] = useState("");
const contractAddress = "あなたのコントラクトアドレス";
async function connectWallet() {
if (window.ethereum) {
await window.ethereum.request({ method: "eth_requestAccounts" });
} else {
alert("MetaMask をインストールしてください");
}
}
async function getData() {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contract = new ethers.Contract(contractAddress, SimpleStorageABI.abi, provider);
const storedData = await contract.get();
setData(storedData.toString());
}
async function setDataOnChain() {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(contractAddress, SimpleStorageABI.abi, signer);
const tx = await contract.set(input);
await tx.wait();
getData();
}
return (
<div>
<button onClick={connectWallet}>ウォレットに接続</button>
<div>
<input value={input} onChange={e => setInput(e.target.value)} placeholder="数字を入力" />
<button onClick={setDataOnChain}>データを保存</button>
</div>
<div>チェーン上のデータ:{data}</div>
<button onClick={getData}>データを読み取る</button>
</div>
);
}
export default App;`
フロントエンドはウォレットの承認を通じて、スマートコントラクトの set
と get
メソッドを呼び出してデータの保存と読み取りを実現します。
テストとデバッグ#
スマートコントラクトのテストは DApp の安定性を保証するための鍵です。Hardhat はテストスクリプトの作成をサポートしており、JavaScript または TypeScript を使用します。テストの例:
`const { expect } = require("chai");
describe("SimpleStorage", function () {
it ("データを正しく保存し、読み取るべきです", async function () {
const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
const simpleStorage = await SimpleStorage.deploy();
await simpleStorage.deployed();
await simpleStorage.set(42);
expect(await simpleStorage.get()).to.equal(42);
});
});`
テストを実行します:
npx hardhat test
テストが通過したら、DApp は基本的に完成です。
取引所の代替ドメインツールの推奨#
国内ユーザーが仮想通貨市場で操作する際、取引所の公式サイトにアクセスすることは非常に重要です。超链导航 が提供する取引所の代替ドメインナビゲーションを使用することをお勧めします。迅速にアクセスできます:
これらの代替ドメインは、取引所にスムーズにアクセスし、資産管理や取引を行うことを保証します。
まとめ#
去中心化アプリケーションを構築する鍵は、スマートコントラクトの開発とフロントエンドの統合です。まず開発環境を構築し、コントラクトを書き、コンパイルしてデプロイし、次にフロントエンドでウォレットを接続してコントラクトを呼び出します。テストの段階を無視してはいけません。コントラクトのロジックが正しいことを保証します。一歩ずつ実践することで、Web3 開発はもはや手の届かないものではありません。超链导航のような便利なツールを活用することで、国内の仮想通貨ユーザーは Web3 エコシステムにより参加しやすくなります。これらの基礎をマスターすれば、将来的にはより複雑な DApp 開発に挑戦し、ブロックチェーンの可能性を探求することができます。