Ruby gemの
https://rubygems.org/gems/ethereum
を使ってEth(Nuko)を送信することに成功したので、悩んだ場所とその解決方法を書きます。
結論だけ言うと、送信数を指定するときに、to_twos_complementを使ってweiの値をHEX化する必要がありました。
全体的にはホストとポートの指定方法がわかれば使いやすいGemかなと思いましたが、send_transactionのパラメータの指定方法がわかりませんでした。
普通に
res = client.send_transaction('from'=> from_addr, 'to'=>to_addr, 'value'=> wei)
とやってしまうと、
{"jsonrpc"=>"2.0", "id"=>8, "error"=>{"code"=>-32602, "message"=>"invalid argument 0: cannot unmarshal non-string as hex data"}}
というエラーが出てしまい、送信出来ずにいたのです。
get_balanceで受け取ったデータがHEXだったので、ここで渡すパラメータもHEXにしないといけないのだろうと言うところまではわかったのですが、どうにも数字をHEX化するメソッドを見つけられずにいました。
ずっとformatter.rbの中をto_* とかfrom_*をながめていたつもりだったのですが、hexとasciiしかみていなくて、数日ほど悩みました。
ふと、引数にnumberを取るものという視点で探し始めて目についたのがto_twos_complementというメソッドでした。
そしてうまくいきました。
そういうわけで、ここに貼り付けたソースリストの22行目が今回の肝でした。
なお、ノードを立ち上げるときに--rpcapiにpersonalを含めないと
{"jsonrpc"=>"2.0", "id"=>8, "error"=>{"code"=>-32601, "message"=>"The method personal_unlockAccount does not exist/is not available"}}
というエラーが出ます。
英語でも情報がなかった感じだったので記録として残すことにしました。