2018-05-01から1ヶ月間の記事一覧
Ethereum のトランザクションが実行される時間は、十分な Gas(手数料)を支払っていれば、ほぼブロックがマイニングされる時間と同じになります。 Ethereum では、およそ15秒ごとにブロックが取り込まれるようにマイニング難易度が調整されるようになってい…
Ethereum の最小ガスリミットは、21,000 です。 Ether の送付だけであれば、手数料は 21,000 x ガスプライスとなります。
Ethereum の「イエローペーパー/Yellow Paper」は、Ethereum の技術仕様書です。 Ethereum のイエローペーパー https://ethereum.github.io/yellowpaper/paper.pdf Bitcoin と同様に Ethereum にもホワイトペーパー(いわゆるプロジェクトのコンセプトを説明…
web3.currentProvider.isMetaMask
MetaMask は Chrome プラグインとして使える大変便利な Ethereum ウォレットです。 MetaMask を使用するとボタン 1 つでトランザクションに署名ができるので、エンドユーザーが DApps を使用する際に重宝します。 MetaMask を使用した Web3 の初期化 MetaMas…
web3.eth.getHashrate を使用します。 サンプルコード web3.eth.getHashrate() .then(console.log); // => 1234 Reference https://scrapbox.io/web3-jp/web3.eth%23getHashrate
web3.eth.isMining を使用します。 マイニングしていれば true を、それ以外の場合は false を返します。 サンプルコード web3.eth.isMining() .then(console.log); // => true 参考 https://scrapbox.io/web3-jp/web3.eth%23isMining
const Web3 = require('Web3'); var web3 = new Web3('https://mainnet.infura.io'); web3.eth.getBlockNumber() .then(console.log);
ローカルで秘密鍵を管理していてる場合、次のような 2 ステップで Ethereum のトランザクションを実行可能です。 Ethereum のトランザクションの作成から署名まではローカルで行います。 署名済みトランザクションは JSON RPC API 等を通じて Ethereum ネッ…
この記事のサンプルで使用している Web3.js のバージョンは 0.20.6 です。 スマートコントラクトを扱うための ABI を用意 ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。 プログラムからス…
web3.eth.net.getPeerCount() .then(console.log);
Web3.js 1.0 を使用しています var Web3 = require('web3'); console.log(Web3.utils.unitMap);
Web3.js 1.0 では、HTTP provider が deprecated - 非推奨 - となっており、Websocket provider を使用する必要があります。 Infura の HTTP provide URL は https://mainnet.infura.io ですが、Websocket では wss://mainnet.infura.io/ws を使用します。 …
Ethereum スマートコントラクトのエンコードされた関数シグネチャを得る方法のメモです。 エンコードされた関数シグネチャとは スマートコントラクトの関数を call するコードをローレベルで書いたり、マルチシグウォレットからスマートコントラクトの関数を…
この記事のサンプルで使用している Web3.js のバージョンは 0.20.6 です。 Contract を扱うための ABI を用意 ABI は、スマートコントラクトがどのような関数や状態変数を持っているかといった情報をもったインタフェースです。 Web3.js のプログラムからス…
Ethereum のアドレスが適切(valid)なアドレスかどうかをチェックする方法です。 Web3 1.0.0 を使用します。 サンプルコード const isValidAddress = Web3.utils.isAddress(address); デモ https://piyolab.github.io/playground/ethereum/isValidEthereumA…
Solidity 0.4.21 までのコンストラクタの書き方 Solidity 0.4.21 までは、コントラクトと同じ名前の関数がコンストラクタでした。 ただ、この仕様だと、コントラクト名を変更したときに、コンストラクタだけ変更されずに、意図した初期化処理が行われない可…
MetaMask は複数アカウント(アドレス)を管理できる web3 に MetaMask が inject しているとき、ユーザがアカウントを切り替えたことを検知したいことがある いろいろ方法しらべてみたけど、次のような原始的な方法を使う感じになりそう。 サンプルコード w…
Web3.js の eth.getGasPrice メソッドを使用することで、過去数ブロックの GasPrice の中央値を取得することができる ドキュメント 以下の例は web3 version 0.20.x サンプルコード var web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.i…
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…
Ether の日本円価格(レート)を取得する方法です。 coinmarketcap の API を使用します。 Node.js によるサンプルコード let https = require('https'); const url = 'https://api.coinmarketcap.com/v2/ticker/1027/?convert=JPY'; https.get(url, (respon…
var week = 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'; var dow = week.split(',')[new Date().getDay()];
Ethereum の通貨 ether にいくつかの単位があります。 ether の最小単位は、wei と呼ばれます。 1 ether = 1000000000000000000 wei です。 Web3 のインストール Web3 は JavaScript から Ethereum を使用するためのライブラリです。 $ npm install web3 サ…
Ethereum は Mainnet (本番環境) と、いくつかある Testnet (テスト環境) で使用している ID が異なります。 それぞれの環境に固有の Network ID と Chain ID の組み合わせによって、接続する P2P ノードや、トランザクションへの署名結果が変わります。 な…
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…
ripple-lib をインストール $ npm install ripple-lib サンプルコード オフラインでも動作します。 const RippleAPI = require('ripple-lib').RippleAPI; const api = new RippleAPI(); const address = api.generateAddress(); console.log('address', addr…
Ripple (XRP) の残高を取得する方法のメモです。 Ripple 公式のライブラリを使用します。 Ripple 公式ライブラリ ripple-lib: https://github.com/ripple/ripple-lib ripple-lib のインストール 公式では、yarn を推奨しているけど、以下は npm でインストー…
require 'openssl' require 'base16' require 'digest/sha3' def eth_address(public_key) s = public_key[2, 128] s.downcase! s = Base16.decode16(s) h = Digest::SHA3.hexdigest(s, 256) a = '0x' + h[-40..-1] return a end ec = OpenSSL::PKey::EC.new…
マルチシグウォレットを使用して他のスマートコントラクトのメソッドを実行したりするのに必要なので調べたよ Solidity で書かれたスマートコントラクトに次のようなメソッドがある場合で説明します 以下の countUp() とか countDown() を実行するためにはど…
$ npm install bip39 var bip39 = require('bip39') const mnemonic = bip39.generateMnemonic() console.log(mnemonic)