Web3.js を使って ERC20 トークンを送信
- この記事のサンプルで使用している Web3.js のバージョンは
0.20.6
です。
スマートコントラクトを扱うための ABI を用意
- ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。
- プログラムからスマートコントラクトを扱う際は、このABIの情報に基づいて関数を読んだり状態変数の値を読みます。
- 通常、ABI にはあるスマートコントラクトが持っているすべての関数や状態変数の情報が記載されますが、ERC20 トークンを送信するには、transfer という関数を実行できればいいので、この記事では transfer のみを ABI に記載します。
transfer 関数の情報のみ持つ ABI
let minABI = [
// transfer
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"type": "function"
}
];
サンプルコード
- decimals が 18 の ERC20 トークンを 100 送る例です。
- この例では、ERC20 トークンのアドレスは
0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34
です。
- この例では、送り先アドレスは
0x8Df70546681657D6FFE227aB51662e5b6e831B7A
です。
let tokenAddress = "0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34";
let toAddress = "0x8Df70546681657D6FFE227aB51662e5b6e831B7A";
// 数値は巨大な数値になっても扱えるように BigNumber に変換
let decimals = web3.toBigNumber(18);
let amount = web3.toBigNumber(100);
let minABI = [
// transfer
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"type": "function"
}
];
// ABI とコントラクト(ERC20トークン)のアドレスから、コントラクトのインスタンスを取得
let contract = web3.eth.contract(minABI).at(tokenAddress);
// 送付する ERC20 トークンの量を計算
let value = amount.times(web3.toBigNumber(10).pow(decimals));
// 引数にウォレットのアドレスと送付する ERC20 のトークン量を渡して、transfer 関数を呼ぶ
contract.transfer(toAddress, value, (error, txHash) => {
// トランザクションを実行するので、戻り値はトランザクションハッシュ
console.log(txHash);
});
実際におくったトランザクション
関連
デモ
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_を使って_ERC20_トークンを送信
let minABI = [
// transfer
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"type": "function"
}
];
サンプルコード
- decimals が 18 の ERC20 トークンを 100 送る例です。
- この例では、ERC20 トークンのアドレスは
0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34
です。
- この例では、送り先アドレスは
0x8Df70546681657D6FFE227aB51662e5b6e831B7A
です。
let tokenAddress = "0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34";
let toAddress = "0x8Df70546681657D6FFE227aB51662e5b6e831B7A";
// 数値は巨大な数値になっても扱えるように BigNumber に変換
let decimals = web3.toBigNumber(18);
let amount = web3.toBigNumber(100);
let minABI = [
// transfer
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"type": "function"
}
];
// ABI とコントラクト(ERC20トークン)のアドレスから、コントラクトのインスタンスを取得
let contract = web3.eth.contract(minABI).at(tokenAddress);
// 送付する ERC20 トークンの量を計算
let value = amount.times(web3.toBigNumber(10).pow(decimals));
// 引数にウォレットのアドレスと送付する ERC20 のトークン量を渡して、transfer 関数を呼ぶ
contract.transfer(toAddress, value, (error, txHash) => {
// トランザクションを実行するので、戻り値はトランザクションハッシュ
console.log(txHash);
});
実際におくったトランザクション
関連
デモ
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_を使って_ERC20_トークンを送信
0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34
です。0x8Df70546681657D6FFE227aB51662e5b6e831B7A
です。let tokenAddress = "0x2A65D41dbC6E8925bD9253abfAdaFab98eA53E34";
let toAddress = "0x8Df70546681657D6FFE227aB51662e5b6e831B7A";
// 数値は巨大な数値になっても扱えるように BigNumber に変換
let decimals = web3.toBigNumber(18);
let amount = web3.toBigNumber(100);
let minABI = [
// transfer
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"type": "function"
}
];
// ABI とコントラクト(ERC20トークン)のアドレスから、コントラクトのインスタンスを取得
let contract = web3.eth.contract(minABI).at(tokenAddress);
// 送付する ERC20 トークンの量を計算
let value = amount.times(web3.toBigNumber(10).pow(decimals));
// 引数にウォレットのアドレスと送付する ERC20 のトークン量を渡して、transfer 関数を呼ぶ
contract.transfer(toAddress, value, (error, txHash) => {
// トランザクションを実行するので、戻り値はトランザクションハッシュ
console.log(txHash);
});
関連
デモ
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_を使って_ERC20_トークンを送信
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_を使って_ERC20_トークンを送信
Author And Source
この問題について(Web3.js を使って ERC20 トークンを送信), 我々は、より多くの情報をここで見つけました https://qiita.com/hm0429/items/4dc90a20ca16fd087ec0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .