CLI での Bitcoin 生成

4 件のメッセージ BitcoinTalk molybdenum, サトシ・ナカモト, lachesis 2010年5月22日 — 2010年6月4日
molybdenum 2010年5月22日 18:44 UTC 原文 ·

シンプルな bitcoin 用ウェブインターフェースを作ろうとしていて(本格的な wx/GTK GUI よりも軽量でステートレスなもの)、検証中の生成ブロックのステータスを確認する方法が見当たらない…残高が 50 ジャンプするのは見たが、もちろんそれは getallreceived には表示されない。

ヘッドレスのコイン生成マシンにとって、すぐにステータスを確認できると良い。少なくとも、確認待ちのブロックが 30 あるのか、まだ最初の 1 つを取得しようとしているのかが分かると良い…純粋に自動化されていて残高のチェックと転送だけなら、それは問題ではないが。

さらに、GUI クライアントではトランザクションは見つかった時点で表示されるが、getallreceived はブロックが経過した後にのみトランザクションを表示する…しかし残高は適切な量だけすぐにジャンプする。

気の毒な神経質な顧客が支払いが通るかどうか心配して行ったり来たりしている姿が想像できるが、本当はその必要はない。悪意のあるマシンが勝利ブロックを生成して自分の支払いを除外すれば、これはシステムを騙すために使える可能性はあるが、確認がまだ 0 の段階でも何かが起きているという即座の表示があると良い。「確認がまだ 0 の間はトランザクションを受け入れるな」という警告タグ付きであっても…0 確認のトランザクションを含む別の関数はどうだろうか? そのトランザクション後の最小ブロック数を指定するオプションパラメーターは?(getallreceived 1 で現在の動作、またはただの getallreceived、getallreceived 5 は慎重派向け、getallreceived 0 で即座の確認)

molybdenumの投稿(2010年5月22日 09:44 UTC)

シンプルなbitcoin用ウェブインターフェースを作ろうとしていて(本格的なwx/GTK GUIよりも軽量でステートレスなもの)、検証中の生成ブロックのステータスを確認する方法が見当たらない…残高が50ジャンプするのは見たが、もちろんそれはgetallreceivedには表示されない。

ああ、実際にそういう仕組みだ。getallreceived 0 で望むことができるはずだ。(現在は listreceivedbyaddress 0 に名前が変更されている)デフォルトは 1 確認だが、実際にはほとんどのデジタル商品やサービスは 0 確認で問題ないと思う。その通り、0 確認以上が必要な場合は、未確認と利用可能残高の 2 つの数字を表示すれば、トランザクションが通ったことをすぐに確認できる。

listreceivedbyaddress [minconf=1] [includeempty=false]
[minconf]は支払いが含まれる前の最小確認数だ。
[includeempty]はまだ支払いを受けていないアドレスを含めるかどうかだ。
以下を含むオブジェクトの配列を返す:
“address” : 受取アドレス
“label” : 受取アドレスのラベル
“amount” : アドレスが受け取った合計金額
“confirmations” : 含まれる最新トランザクションの確認数

アドレスにユーザー名でラベルを付けている場合は listreceivedbylabel も使える。

今のところ、ウェブ加盟店向けの機能に集中しており、ヘッドレスコイン生成器のリモート管理用の機能にはまだあまり取り組んでいない。

molybdenum 2010年5月26日 23:04 UTC 原文 ·

ふむ、r78 に更新する際に rpc.cpp を眺めていたら見つけた……ちなみに、debian lenny backports の GCC 4.3.4 ではちゃんとコンパイルできない。net.h の DEFAULT_PORT を#define に変更しなければならなかった。なぜか htons()が変数宣言で許可されなかったからだ……おそらく最良の解決策ではないが、短期的にはうまくいった 😉

lachesis 2010年6月4日 05:50 UTC 原文 ·
molybdenumの投稿(2010年5月22日 18:44 UTC)

ヘッドレスのコイン生成マシンにとって、すぐにステータスを確認できると良い。少なくとも、確認待ちのブロックが 30 あるのか、まだ最初の 1 つを取得しようとしているのかが分かると良い…純粋に自動化されていて残高のチェックと転送だけなら、それは問題ではないが。

+1 この情報にアクセスする方法はあるだろうか? EDIT(2010年6月4日): まず最初に、自分は C プログラマではない。そう前置きした上で、自分用に極めて不格好でハック的な JSON-RPC メソッド “listgenerated” を書いた。基本的には ui.cpp からトランザクション一覧を構築するコードを取って、RPC メソッドにコピーした。それから、コンパイルが通るまで部分的に削除した。正しく動作しないと確信しているが、ブロックを生成したことは表示してくれる、それが必要なすべてだ。パッチが欲しい人がいたら PM してほしい。とはいえ、開発者からの本物の実装を待った方がいいだろう。