テーマ設定
RPCエンドポイントを利用してウォレットの送金機能を実装してみる。
前提環境
-
Node.js がインストールされている。
-
Web3.js ライブラリがインストールされている。
-
RPCエンドポイントを取得(無料)
https://cabinet-node.com/ja/docs/user-guide/create-access-token
web3のインストール
npm install web3
実装
以下の内容で.envファイルを作成してください。
PRIVATE_KEY=*********** # 送信元アドレスにペアリングする秘密鍵
以下の内容でsend_transaction.jsファイルを作成してください。
require('dotenv').config(); // dotenvの読み込み
const { Web3 } = require('web3');
// RPCエンドポイント
const rpcURL = 'https://gateway-api.cabinet-node.com/{access_token}';
const web3 = new Web3(rpcURL);
// ウォレット情報
const senderAddress = ’SENDER_WALLET_ADDRESS'; // 送信元アドレス
const privateKey = process.env.PRIVATE_KEY; // 環境変数から秘密鍵を取得
const toAddress = ’RECEIVER_WALLET_ADDRESS'; // 送信先アドレス
const amountToSend = '0.01'; // 送金額(Ether)
async function sendTransaction() {
try {
// nonce を取得
const nonce = await web3.eth.getTransactionCount(senderAddress, 'latest');
// トランザクションオブジェクトを作成
const tx = {
from: senderAddress,
to: toAddress,
value: web3.utils.toWei(amountToSend, 'ether'),
gas: 2000000, // ガスリミット
gasPrice: await web3.eth.getGasPrice(),
nonce: nonce,
chainId: 11155111 // Ethereum Sepolia
};
// トランザクションに署名
const signedTx = await web3.eth.accounts.signTransaction(tx, privateKey);
// トランザクションを送信
const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
console.log('Transaction receipt:', receipt);
} catch (error) {
console.error('Error sending transaction:', error);
}
}
sendTransaction();
実行
node send_transaction.js
結果の例
Transaction receip: ********************