QRcode
python3
Ethereum
pillow

EthereumアドレスをQRコードにする方法

More than 1 year has passed since last update.

やったこと

pythonでMyEtheWalletのようにEthereumのアドレスをQRコードにしてみる。
スマートフォンにインストールしたJAXXからQRコードを読みとりできるか確認してみる。

EIP67でQRコードの議論がされていたのでそれを参考にする。
https://github.com/ethereum/EIPs/issues/67

色々議論されているようで理解するのに時間がかかりそう。

要は、次のように送付先として指定するETHアドレスを必須として、あとは用途に沿ったオプションを
QRコードに仕込めば良いと勝手に理解する。(違ってたらすみません)。

qrcode
 ethereum:<address>[オプション]


作り方

Pythonの画像処理ライブラリ PillowとQRコード用のライブラリを入れる。

qrcode
$ pip3 install pillow qrcode

たとえば、自分の指定するアドレスに1ETHを送付してもらいたい場合、
次の情報をQRコードに付加する。

 ・指定アドレス(例):0xdcc47176a2afee39dbf175e22e46a8de38fd0524 (必須)
 ・送付量(ETH):1 (オプション)

上記情報をQRコードに仕込む場合、フォーマットは次の条件に従う。

qrcode
 ethereum:<address>[?amout=<amount>]

上記条件を満たし、QRコードを出力するスクリプトは次の通り(3行で済む)

eth_qr.py
import qrcode 
img=qrcode.make('ethereum:0xdcc47176a2afee39dbf175e22e46a8de38fd0524?amount=1')
img.show()


確認結果

できたもの

こんなQRコードが出力されるので、スマートフォンにインストールしたJAXXのカメラ機能でQRコードを読ませてみる。

eth_qrcode.png

JAXX上では送付先のアドレスと、送付ETHが自動的に入力されていることを確認することができた。

122436.jpg

色々とEthereumのQRコードのオプションとして、gasの指定だったり、ERC20トークンを送付する指定だったり、QRコードに仕込むデータ仕様が決められてる。もう少し時間があれば他のオプションも試してみる。

参考

「Pythonの「qrcode」を使ってQRコードを生成する」
 http://qiita.com/ak1procom/items/c9da5d5f1039adea9704
「ERC: Standard URI scheme with metadata, value and byte code #67」
 https://github.com/ethereum/EIPs/issues/67