やったこと
pythonでMyEtheWalletのようにEthereumのアドレスをQRコードにしてみる。
スマートフォンにインストールしたJAXXからQRコードを読みとりできるか確認してみる。
EIP67でQRコードの議論がされていたのでそれを参考にする。
https://github.com/ethereum/EIPs/issues/67
色々議論されているようで理解するのに時間がかかりそう。
要は、次のように送付先として指定するETHアドレスを必須として、あとは用途に沿ったオプションを
QRコードに仕込めば良いと勝手に理解する。(違ってたらすみません)。
ethereum:<address>[オプション]
作り方
Pythonの画像処理ライブラリ PillowとQRコード用のライブラリを入れる。
$ pip3 install pillow qrcode
たとえば、自分の指定するアドレスに1ETHを送付してもらいたい場合、
次の情報をQRコードに付加する。
・指定アドレス(例):0xdcc47176a2afee39dbf175e22e46a8de38fd0524 (必須)
・送付量(ETH):1 (オプション)
上記情報をQRコードに仕込む場合、フォーマットは次の条件に従う。
ethereum:<address>[?amout=<amount>]
上記条件を満たし、QRコードを出力するスクリプトは次の通り(3行で済む)
import qrcode
img=qrcode.make('ethereum:0xdcc47176a2afee39dbf175e22e46a8de38fd0524?amount=1')
img.show()
確認結果
できたもの
こんなQRコードが出力されるので、スマートフォンにインストールしたJAXXのカメラ機能でQRコードを読ませてみる。
JAXX上では送付先のアドレスと、送付ETHが自動的に入力されていることを確認することができた。
色々と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