おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

Rubyでethereumを送る方法

Ruby gemの

https://rubygems.org/gems/ethereum

を使ってEth(Nuko)を送信することに成功したので、悩んだ場所とその解決方法を書きます。

 

結論だけ言うと、送信数を指定するときに、to_twos_complementを使ってweiの値をHEX化する必要がありました。

 

gist.github.com

 

 全体的にはホストとポートの指定方法がわかれば使いやすい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"}}

というエラーが出ます。

 

英語でも情報がなかった感じだったので記録として残すことにしました。

 

rack::protectionではまった話

備忘録。

rack::protection::HttpOriginでattack prevent が出てpost出来なくて困っていて見つけた記事

 

Rack-protection and Nginx - sourcediver.org

 

nginxをリバースプロキシとしてアプリケーションサーバーに中継するときは、

nginxのconfigに

proxy_set_header X-Forwarded-Proto $scheme;
を追加することでうまくいった。
 
 

kumacoindの設定ではまったところ

2019年1月。

kumacoindを、別のPCからRPCアクセスしようとしてうまくいかず悩んでいた話。

kumacoinのdiscordでいろいろ聞きながら試していって、どうもkumacoindの設定がよろしくないところまでは追い込めたのですが…

 

Running Bitcoin - Bitcoin Wiki

configはBitcoin Wikiを参考に書いていたのですが、それが間違いで、

 

https://github.com/kumacoinproject/kumacoin/blob/1bce70629139dbcf6eff1af6333c71c03641262a/contrib/debian/examples/bitgem.conf

 

kumacoinのexampleを参考にするべきだったという。

 

bitcoin.confでのRPCの書き方

rpcallowip=10.1.1.34/255.255.255.0
rpcallowip=1.2.3.4/24

 

kumacoin.confでのRPCの書き方

rpcallowip=192.168.1.*

 

同じもののように見えてもバージョンが乖離してるときは使ってるもののドキュメントやサンプルを見ましょうという例でした。

 

Thank you grabbitさん, なむやんぐさん, だれかさん