- ERC20トークンの作成
最初に、Solidityプログラミング言語を使用してERC20トークンのスマートコントラクトを作成します。以下は、簡単なERC20トークンのスマートコントラクトの例です。
pragma solidity ^0.8.0;
contract MyToken {
string public name;
string public symbol;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
constructor(uint256 initialSupply, string memory tokenName, string memory tokenSymbol) {
totalSupply = initialSupply;
balanceOf[msg.sender] = initialSupply;
name = tokenName;
symbol = tokenSymbol;
}
function transfer(address to, uint256 amount) public {
require(balanceOf[msg.sender] >= amount, "Insufficient balance");
balanceOf[msg.sender] -= amount;
balanceOf[to] += amount;
}
}
- トークンのデプロイ
上記のスマートコントラクトをデプロイするために、Web3を使用します。以下は、JavaScriptでのWeb3の例です。
const Web3 = require('web3');
const contractABI = [/* コントラクトのABI */];
const contractAddress = 'デプロイしたコントラクトのアドレス';
// Web3プロバイダーの設定
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');
// コントラクトのインスタンスを作成
const contract = new web3.eth.Contract(contractABI, contractAddress);
// トークンのバランスを取得する例
async function getBalance(address) {
const balance = await contract.methods.balanceOf(address).call();
return balance;
}
// バランスの取得例
getBalance('0x123456789...').then(balance => {
console.log('バランス:', balance);
}).catch(error => {
console.error('エラー:', error);
});
// トークンの転送の例
async function transferTokens(to, amount) {
const accounts = await web3.eth.getAccounts();
await contract.methods.transfer(to, amount).send({ from: accounts[0] });
console.log('転送が完了しました');
}
// トークンの転送の呼び出し例
transferTokens('0x987654321...', 100).catch(error => {
console.error('エラー:', error);
});
以上が、ERC20トークンのWeb3の例とコードです。これらの例を使用して、ERC20トークンの作成、デプロイ、バランスの取得、トークンの転送などを行うことができます。