playground

The world is a playground.

Web3.js

web3.js で Ethereum のトランザクション詳細を取得

web3.js@1.0.0 で Ethereum のトランザクション詳細を取得する方法です。 Ethereum のトランザクション詳細を取得するには、トランザクションの発行時に得ることのできるトランザクションハッシュが必要になります。トランザクションハッシュを引数に、web3.…

Web3.js でEthereum の残高を取得

web3.eth.getBalance を使用します。 サンプルコード web3.eth.getBalance(walletAddress, (error, balance) => { console.log(balance); ); ここで取得できる balance の単位は wei なので、ether 単位で表示したい場合は、次のようにします。 var ethBalan…

Ethereum のトランザクション作成時に必要な nonce を得る

ローカルで Ethereum のトランザクションに署名する際には、nonce を指定する必要があります。 このときに必要な nonce を取得する方法をメモしておきます。 nonce とは Ethereum のトランザクションにおける nonce は、ある Ethereum のアドレス(アカウン…

MetaMask のネットワーク変更を検知する

MetaMask の仕様変更 MetaMask のネットワークを変更したときに、これまではブラウザを自動的にリロードしていたが、自動的にリロードしないようになるとのことです。 詳細: https://medium.com/metamask/breaking-change-no-longer-reloading-pages-on-netw…

Web3.js でプロバイダが MetaMask かどうかをチェック

web3.currentProvider.isMetaMask

MetaMask を使用した Web3 の初期化

MetaMask は Chrome プラグインとして使える大変便利な Ethereum ウォレットです。 MetaMask を使用するとボタン 1 つでトランザクションに署名ができるので、エンドユーザーが DApps を使用する際に重宝します。 MetaMask を使用した Web3 の初期化 MetaMas…

Web3.js で現在のハッシュレートを確認

web3.eth.getHashrate を使用します。 サンプルコード web3.eth.getHashrate() .then(console.log); // => 1234 Reference https://scrapbox.io/web3-jp/web3.eth%23getHashrate

Web3 でノードがマイニングしているかどうかを確認

web3.eth.isMining を使用します。 マイニングしていれば true を、それ以外の場合は false を返します。 サンプルコード web3.eth.isMining() .then(console.log); // => true 参考 https://scrapbox.io/web3-jp/web3.eth%23isMining

Ethereum ブロックチェーンの現在のブロック高を取得

const Web3 = require('Web3'); var web3 = new Web3('https://mainnet.infura.io'); web3.eth.getBlockNumber() .then(console.log);

ローカルで Ethereum のトランザクションに署名してからブロードキャスト

ローカルで秘密鍵を管理していてる場合、次のような 2 ステップで Ethereum のトランザクションを実行可能です。 Ethereum のトランザクションの作成から署名まではローカルで行います。 署名済みトランザクションは JSON RPC API 等を通じて Ethereum ネッ…

Web3.js を使って ERC20 トークンを送信

この記事のサンプルで使用している Web3.js のバージョンは 0.20.6 です。 スマートコントラクトを扱うための ABI を用意 ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。 プログラムからス…

Web3.js でノードに接続している peer の数を取得

web3.eth.net.getPeerCount() .then(console.log);

Ether の単位一覧を取得

Web3.js 1.0 を使用しています var Web3 = require('web3'); console.log(Web3.utils.unitMap);

Web3.js 1.0 で Infura を使用する

Web3.js 1.0 では、HTTP provider が deprecated - 非推奨 - となっており、Websocket provider を使用する必要があります。 Infura の HTTP provide URL は https://mainnet.infura.io ですが、Websocket では wss://mainnet.infura.io/ws を使用します。 …

Ethereum スマートコントラクトのエンコードされた関数シグネチャを得る

Ethereum スマートコントラクトのエンコードされた関数シグネチャを得る方法のメモです。 エンコードされた関数シグネチャとは スマートコントラクトの関数を call するコードをローレベルで書いたり、マルチシグウォレットからスマートコントラクトの関数を…

Web3.js で ERC20 トークンの残高を取得

この記事のサンプルで使用している Web3.js のバージョンは 0.20.6 です。 Contract を扱うための ABI を用意 ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。 Web3.js のプログラムからス…

Ethereum のアドレスが適切かどうかチェックする

Ethereum のアドレスが適切(valid)なアドレスかどうかをチェックする方法です。 Web3 1.0.0 を使用します。 サンプルコード const isValidAddress = Web3.utils.isAddress(address); デモ https://piyolab.github.io/playground/ethereum/isValidEthereumA…

MetaMask のアカウント(アドレス)切り替えを検知

MetaMask は複数アカウント(アドレス)を管理できる web3 に MetaMask が inject しているとき、ユーザがアカウントを切り替えたことを検知したいことがある いろいろ方法しらべてみたけど、次のような原始的な方法を使う感じになりそう。 サンプルコード w…

Ethereum の適切な Gas Price を取得する

Web3.js の eth.getGasPrice メソッドを使用することで、過去数ブロックの GasPrice の中央値を取得することができる ドキュメント 以下の例は web3 version 0.20.x サンプルコード var web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.i…

Web3.jsでUTF8文字列と16進数データの相互変換

Web3.js 1.0.0 を使用した例です。 Web3.js のインストール $ npm install web3 --save サンプルコード let Web3 = require('Web3'); console.log(Web3.version); // => 1.0.0-beta.34 // UTF8String to HexData let data = Web3.utils.utf8ToHex('piyo'); c…

Web3 v1.0.0 を使用した ether と wei の相互変換

Ethereum の通貨 ether にいくつかの単位があります。 ether の最小単位は、wei と呼ばれます。 1 ether = 1000000000000000000 wei です。 Web3 のインストール Web3 は JavaScript から Ethereum を使用するためのライブラリです。 $ npm install web3 サ…

Ethereum のトランザクションハッシュからトランザクション詳細を取得

Install Web3 (version 1.0) $ npm install web3 サンプルコード const Web3 = require('web3'); console.log(Web3.version); // => 1.0.0-beta.34 var web3 = new Web3('wss://mainnet.infura.io/ws'); const transactionHash = '0x6d365aa4dda50738ae9b63d…

Ethereum の function call データフォーマット

マルチシグウォレットを使用して他のスマートコントラクトのメソッドを実行したりするのに必要なので調べたよ Solidity で書かれたスマートコントラクトに次のようなメソッドがある場合で説明します 以下の countUp() とか countDown() を実行するためにはど…

ETH Tip Button Example

By adding the code snippet in this article, anyone who uses MetaMask can easily tip you by just pushing a button. If you find this article is useful, please push the button below and tip $ETH TIP $ETH // // You can add the same button to y…

Ethereum の生トランザクションを作って Etherscan から push

Ethereum の生のトランザクションを作って、 Etherscan から push したときのメモです。 Web3 でアドレス A から アドレス B に 0.001 Ether を送るトランザクションを作り、トランザクション自体は、Etherscan の pushTx からブロードキャストします。 node…

Web3.js を使用して Ether を送る方法

ウェブサイトに Web3.js を導入して、Ethereum アドレスA から アドレスB に Ether を送る方法のメモです。 環境 ブラウザ: MetaMask がインストールされているブラウザ MetaMask は file:// だと動かないので、Webサーバを用意Mac だと、任意のディレクトリ…