Web3.js で ERC20 トークンの残高を取得
10370 ワード
- この記事のサンプルで使用している Web3.js のバージョンは
0.20.6
です。
Contract を扱うための ABI を用意
- ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。
- Web3.js のプログラムからスマートコントラクトを扱う際は、このABIの情報に基づいて関数を読んだりや状態変数の値を読みます。
- 通常、ABI にはあるスマートコントラクトが持っているすべての関数や状態変数の情報が記載されますが、ERC20 トークンの残高を取得するには、getBalance という関数と decimals という状態変数の値を読むことができればいいので、この記事ではその2つのみを ABI に記載します。
getBalance と decimals の情報のみを持つABI
let minABI = [
// balanceOf
{
"constant":true,
"inputs":[{"name":"_owner","type":"address"}],
"name":"balanceOf",
"outputs":[{"name":"balance","type":"uint256"}],
"type":"function"
},
// decimals
{
"constant":true,
"inputs":[],
"name":"decimals",
"outputs":[{"name":"","type":"uint8"}],
"type":"function"
}
];
サンプルコード
- 任意のERC20トークンのアドレスと、そのERC20トークンの残高を知りたいウォレットアドレスから、ERC20トークンの残高を取得するサンプルコードです。
let tokenAddress = "REPLACE_WITH_ERC20_TOKEN_ADDRESS";
let walletAddress = "REPLACE_WITH_WALLET_ADDRESS";
// ERC20 トークンの残高を取得するための最小限のABI
let minABI = [
// balanceOf
{
"constant":true,
"inputs":[{"name":"_owner","type":"address"}],
"name":"balanceOf",
"outputs":[{"name":"balance","type":"uint256"}],
"type":"function"
},
// decimals
{
"constant":true,
"inputs":[],
"name":"decimals",
"outputs":[{"name":"","type":"uint8"}],
"type":"function"
}
];
// ABI とコントラクト(ERC20トークン)のアドレスから、コントラクトのインスタンスを取得
let contract = web3.eth.contract(minABI).at(tokenAddress);
// 引数にウォレットのアドレスを渡して、balanceOf 関数を呼ぶ
contract.balanceOf(walletAddress, (error, balance) => {
// ERC20トークンの decimals を取得
contract.decimals((error, decimals) => {
// 残高を計算
balance = balance.div(10**decimals);
console.log(balance.toString());
});
});
デモ
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_で_ERC20_トークンの残高を取得
let minABI = [
// balanceOf
{
"constant":true,
"inputs":[{"name":"_owner","type":"address"}],
"name":"balanceOf",
"outputs":[{"name":"balance","type":"uint256"}],
"type":"function"
},
// decimals
{
"constant":true,
"inputs":[],
"name":"decimals",
"outputs":[{"name":"","type":"uint8"}],
"type":"function"
}
];
- 任意のERC20トークンのアドレスと、そのERC20トークンの残高を知りたいウォレットアドレスから、ERC20トークンの残高を取得するサンプルコードです。
let tokenAddress = "REPLACE_WITH_ERC20_TOKEN_ADDRESS";
let walletAddress = "REPLACE_WITH_WALLET_ADDRESS";
// ERC20 トークンの残高を取得するための最小限のABI
let minABI = [
// balanceOf
{
"constant":true,
"inputs":[{"name":"_owner","type":"address"}],
"name":"balanceOf",
"outputs":[{"name":"balance","type":"uint256"}],
"type":"function"
},
// decimals
{
"constant":true,
"inputs":[],
"name":"decimals",
"outputs":[{"name":"","type":"uint8"}],
"type":"function"
}
];
// ABI とコントラクト(ERC20トークン)のアドレスから、コントラクトのインスタンスを取得
let contract = web3.eth.contract(minABI).at(tokenAddress);
// 引数にウォレットのアドレスを渡して、balanceOf 関数を呼ぶ
contract.balanceOf(walletAddress, (error, balance) => {
// ERC20トークンの decimals を取得
contract.decimals((error, decimals) => {
// 残高を計算
balance = balance.div(10**decimals);
console.log(balance.toString());
});
});
デモ
Note
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_で_ERC20_トークンの残高を取得
- Ethereum 関連の情報は https://scrapbox.io/sushiether/ に集約することにしました。
- この記事の内容に変更・更新がある場合は、以下の URL を更新します。
- https://scrapbox.io/sushiether/Web3.js_で_ERC20_トークンの残高を取得
Author And Source
この問題について(Web3.js で ERC20 トークンの残高を取得), 我々は、より多くの情報をここで見つけました https://qiita.com/hm0429/items/a36e13f34f86d8851365著者帰属:元の著者の情報は、元の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 .