playground

The world is a playground.

🍣sushiether🍣

Ethereum の特に技術関連の情報を sushiether に集約することにしました。 主に Ethereum 関連の API リファレンス等を日本語に翻訳したりしています。 自分の母国語が日本語で、英語と日本語では学習スピードが大きく異なることを痛感しているので、日本語…

Ethereum のトランザクション作成に必要な v 値を求める

Ethereum のトランザクション作成に必要な v 値は、EIP155 の前後で異なります。 block.number が 2,675,000 以上の場合は、v = CHAIN_ID * 2 + 35 または v = CHAIN_ID * 2 + 36 となります。 block.number が 2,675,000 未満の場合は、v = 27 または v = 2…

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…

Ethernaut

ブラウザ上で、実際にコードを実行しながら Ethereum スマートコントラクトの脆弱性をみつけることで、スマートコントラクトのセキュリティについて学ぶことができるサイト https://ethernaut-devcon3.zeppelin.solutions/

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

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

Ethash

Ethash は Ethereum の PoW のアルゴリズム。 まだ詳細を理解していない。この wiki をみて詳細を勉強しなくては。

2018年6月17日時点での暗号通貨の時価総額

約31兆円 source: https://coinmarketcap.com/ja/

ブロックチェーンに関するニュースサイト・ブログ

ブロックチェーンに関するニュースサイト・ブログのリストを以下の Scrapbox ページにまとめました。随時更新します。 ブロックチェーンに関するニュースサイト・ブログ - playground

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

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

Ethereum のトランザクションが実行される時間

Ethereum のトランザクションが実行される時間は、十分な Gas(手数料)を支払っていれば、ほぼブロックがマイニングされる時間と同じになります。 Ethereum では、およそ15秒ごとにブロックが取り込まれるようにマイニング難易度が調整されるようになってい…

Ethereum の最小ガスリミット

Ethereum の最小ガスリミットは、21,000 です。 Ether の送付だけであれば、手数料は 21,000 x ガスプライスとなります。

Ethereum の「イエローペーパー」とは何か?

Ethereum の「イエローペーパー/Yellow Paper」は、Ethereum の技術仕様書です。 Ethereum のイエローペーパー https://ethereum.github.io/yellowpaper/paper.pdf Bitcoin と同様に Ethereum にもホワイトペーパー(いわゆるプロジェクトのコンセプトを説明…

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…

Solidity 0.4.22 以上でのコンストラクタの書き方

Solidity 0.4.21 までのコンストラクタの書き方 Solidity 0.4.21 までは、コントラクトと同じ名前の関数がコンストラクタでした。 ただ、この仕様だと、コントラクト名を変更したときに、コンストラクタだけ変更されずに、意図した初期化処理が行われない可…

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…