バージョン0.3.18
ありがとう。これは単にトランザクション表示のUIの問題なのかな、それともクライアントが価値の移転をまったく認識しないのかな? もしそのアドレス179c7kVKJNxJN1TJ8EqcFhzXDAkrMqr2uBがその値を使おうとした場合(クライアントがパッチされてそれを許可するとして)、そのトランザクションは有効として受け入れられるのかな?
クライアントは取引のscriptPubKeyの解き方を知らない。完全なscriptSig+scriptPubKeyを評価することはできるが、scriptPubKeyのテンプレートを認識しないため、奇妙なscriptPubKeyに一致するscriptSigを生成できない。パッチされたクライアントなら取引を解ける。パッチされていないクライアントは、ブロックチェーンをスキャンする際に非標準の取引を自分のものとして認識すらしない。
クライアントが奇妙な取引を送信する場合、受信側クライアントもそれを受信するように変更する必要がある。その場合は問題ない。
上で述べたタイムスタンプの概念を実装する簡単な方法を思いついた。タイムスタンプしたいファイルに対してsha1sumを実行する。結果をBitcoinアドレスに変換する(例えば
http://blockexplorer.com/q/hashtoaddress経由で)。そしてそのアドレスに少額の支払いを送る。お金は永遠に失われる。さらに使う方法がないからだ。しかしタイムスタンプのBitcoinアドレスはブロックチェーンにファイルの存在の記録として残り続ける。
これはBitcoin分散データベースの良い使い方とは言えないかもしれないが、人々がこれをやるのを止めるものはないのだから、行われるかもしれないと承知しておいたほうがいいね。
興味深いアイデアだ。アドレスに変換する必要はない。Bitcoinは内部的にプレーンハッシュを扱うので、ハッシュ出力をそのまま使える。(もちろん、アドレスを使えば既存のBitcoinバージョンを汎用タイムスタンプサーバーとして使える。)
ネットワークにとってはOP_DROPを使う方がいいかもしれない。<定数> OP_DROPは無関係な情報であることが証明可能なので、Bitcoinの将来のバージョンではスペースを節約するためにその部分の取引の削除を許可するかもしれない。
変更点:
- 0.3.17からダウングレードして再びアップグレードした場合のwallet.dat互換性問題を修正
- ブロックに既知のトランザクションタイプのみを含めるIsStandard()チェック
- 初回ブロックダウンロードを少し高速化するJgarzikの最適化
このリリースの主な追加は、ギャビンが取り組んできたアカウントベースのJSON-RPCコマンドだ(詳細はhttp://bitcointalk.org/index.php?topic=1886.0)。
- getaccountaddress
- sendfrom
- move
- getbalance
- listtransactions
ダウンロード:http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.18/
これはBitcoinの更新の中で、すぐに飛びついてダウンロードするのを控えた最初のものだ。ブロック内のトランザクションタイプをチェックするという選択は、必ずしも良いことではないと思うからだ……少なくともコミュニティ内でこの問題に決着がついていない間は。これはネットワークに影響を与えるが、それは微妙で政治的な形でだ。
少なくともサトシには、純粋な金融データ以外の追加データをトランザクションに入れることについて、自分の見解を表明してほしいものだ。そして思うに、これはスクリプトでいろいろ遊びたい人たちと、スクリプトを「純粋」に保ちたい人たちとの間で軍拡競争を始めさせるだけになるだろう。ここで起きたのは、ただ単にIsStandard() チェックを通過することへの挑戦状を叩きつけたに過ぎない。そのテストを通過しつつ別のデータも含めることのできるトランザクションを見つけ出す、ということだ。
少なくともサトシには、純粋な金融データ以外の追加データをトランザクションに入れることについて、自分の見解を表明してほしいものだ。そして思うに、これはスクリプトでいろいろ遊びたい人たちと、スクリプトを「純粋」に保ちたい人たちとの間で軍拡競争を始めさせるだけになるだろう。ここで起きたのは、ただ単に
IsStandard()チェックを通過することへの挑戦状を叩きつけたに過ぎない。そのテストを通過しつつ別のデータも含めることのできるトランザクションを見つけ出す、ということだ。
ああ、これはかなり無意味だ。いったいなぜ、マイナーがこの変更を採用するだろうか。非標準トランザクションを失うことで取引手数料が減ってしまうというのに。
ArtForz(ネットワークの15%以上)、tcatm(2Ghash/s)、doublec(プール管理者)は、IsStandardを使用しないと表明している。したがって非標準トランザクションは依然として可能だ。
時間ができたら、Bitcoinに対してネットワークによって強制されていないトランザクション制限をすべて取り除くパッチを作成するつもりだ。そうすれば、他のマイナーも簡単にこれらのトランザクションを含めるよう設定できるようになる。
Bitcoinのブロックチェーンにデータをエンコードすることは、取引を特別に作成するだけですでに可能であることも考慮してほしい(http://privwiki.dreamhosters.com/wiki/Bitcoin_DNS_System_Proposal#Overcoming_potential_resistance_bitcoin_developers.2Fcommunityの「第一」のオプションを参照)。
あるいは、タイムスタンプと支出の証明(つまり手数料付きの通常の取引)のみを使い、実際のデータストレージは外部サービスに押し出すこともできる(同上の「第三」のオプションを参照)。
でも、取引に64バイトか128バイトくらいのランダムデータを許可して、みんなが楽になるようにしたらどうだろう? これらのBitcoinのサイドバンド利用は、マイニングインセンティブを増やし、より多くの生成パワーを呼び込むことで、ネットワークのセキュリティを高めるだけだろう。
でも、取引に64バイトか128バイトくらいのランダムデータを許可して、みんなが楽になるようにしたらどうだろう? これらのBitcoinのサイドバンド利用は、マイニングインセンティブを増やし、より多くの生成パワーを呼び込むことで、ネットワークのセキュリティを高めるだけだろう。
個人的にはnanotubeの意見に同意する。特に、やる気があれば標準的なトランザクションに任意のデータをすでに偽装できるという事実を考慮すると。ソースコードは見ていないが、理解している限りでは、はるかに心地よい(政治的にも技術的にも)解決策は次のようなものだろう:
デフォルトで、128バイト(または合意できる閾値)を超える非標準トランザクションを禁止する?
上記のオプションがなぜ開発者に却下されたのか聞きたい。
Bitcoinトランザクション自体がブロックチェーンの主要な用途であるべきだという点には同意するが、良い通貨は自らを孤立させる必要もない。
法則を提案する:
「チェーンを作った者が、その見た目を決める権利がある」
これと組み合わせれば機能する: 「誰もがブロックを受け入れるか破棄するかを選べる」
ジャンクだらけのブロックで全員がスパムされるのは望まないので、ジャンクを含まない競合するブロックを生成して無効化を試みたい。もちろんジャンクは最終的には入るが、マイナーの大多数がスパムフィルターをオンにしない限り。
この件についてはサトシを完全に支持する。
Bitcoinチェーンにデータを保存する可能性を残すことは、いつ事故が起きてもおかしくない状態だ。誰かが児童ポルノをチェーンにエンコードするのを待つだけだ——それは永遠にそこに残る。そして政府はそれと戦うための完璧なプロパガンダの機会を得る。「普通の」人々は、変質者、マフィア、金融詐欺と関連付けられるなら、Bitcoinをまったく使わないだろう。
新しいトランザクションテンプレートは必要に応じて追加できる。数日以内に、それを受け入れて処理するGPUパワーが十分にあるだろう。ネットワークのサポートは、新しいトランザクションの受信と解釈の方法を理解するクライアントが十分に揃うよりもはるかに前に完全なものになる。
タイムスタンプハッシュはすでに可能だ:
txin: 0.01
txout: 0.00 <appid, hash> OP_CHECKSIG
fee: 0.01
BitDNSのような実際のアプリケーションが実際にハッシュの挿入を開始する準備ができたら、タイムスタンプ用の特定のトランザクションテンプレートをいつでも追加できる。
ハル・フィニーのユーザーフレンドリーなタイムスタンプのアイデアが気に入っている。ファイルのハッシュをビットコインアドレスに変換して0.01を送信する:
HFハル・フィニーの投稿(2010年12月5日23:43 UTC)上で述べたタイムスタンプの概念を実装する簡単な方法を思いついた。タイムスタンプしたいファイルに対してsha1sumを実行する。結果をBitcoinアドレスに変換する(例えば
http://blockexplorer.com/q/hashtoaddress経由で)。そしてそのアドレスに少額の支払いを送る。お金は永遠に失われる。さらに使う方法がないからだ。しかしタイムスタンプのBitcoinアドレスはブロックチェーンにファイルの存在の記録として残り続ける。
これはBitcoin分散データベースの良い使い方とは言えないかもしれないが、人々がこれをやるのを止めるものはないのだから、行われるかもしれないと承知しておいたほうがいいね。
デフォルトで128バイト(または合意できる閾値)を超える非標準トランザクションを不許可にするのは?
上記のオプションがなぜ開発者に却下されたのか聞きたい。
数ヶ月前、0.3.9のバグが発見された頃、受け入れ可能な取引タイプのホワイトリスト化の方が、問題を引き起こすことがわかった取引タイプのブラックリスト化よりも良い方法だとサトシに個人的に伝えた。
ユーザーが入力したHTMLの<script>タグをブラックリスト化してクロスサイトスクリプティングハッキングを防ごうとするウェブサイトと危険性は似ている。ハッカーがどれほど創造的になり得るかの好例がhttp://ha.ckers.org/xss.htmlにある。
最近、BitDNSがブロックチェーンに追加データを格納するという議論がサトシの意見を変えたのか、あるいは彼が夜中に目を覚ましてOP_SOMETHINGの創造的な使い方が悪用につながりかねないと気づいたのか、私はサトシに確認していない。それは重要ではないと思う。受け入れ可能な取引タイプのホワイトリスト化が正しいことだと今でも確信している。
「開発者によって却下された」については——何も却下されていない! まだサトシと話していないが、任意の追加データを含む第三の「標準」取引タイプのアイデアには前向きだ。その議論を行い、-testnetで実装し、突いてみて、悪用される可能性のあるあらゆる方法を想像してみて、利益とコストを見積もり……一般的なコンセンサスがそれが良いアイデアだと判断されれば、本番環境に展開しよう。
新しいトランザクションタイプをいかに素早く追加できるかに気づいた時、ホワイトリスト方式についてギャビンと同じ考えに至った。
Nnanotubeの投稿(2010年12月9日06:19 UTC)でも、取引に64バイトか128バイトくらいのランダムデータを許可して、みんなが楽になるようにしたらどうだろう?
それはすでに可能だ。<pubkey> OP_CHECKSIG。<pubkey>は33〜120バイトにできる。
タイムスタンプハッシュサイズの任意データ用の第3のトランザクションタイプもサポートする。すでにできるのだから、持たない理由はない。ノードにインデックスを作成する必要がないことを伝えることになる。
誰かが児童ポルノをチェーンにエンコードするのを待つだけだ——それは永遠にそこに残る。
残念ながら、その手の悪用を完全に防ぐことは不可能だ。
例えば、送金額の小数点以下の数字に情報をエンコードしたり、「バニティプレート」のビットコインアドレスに情報をエンコードすることもできる。
jpegやmpegのファイルには現実的ではないだろうが、Blu-Rayキーのような他の低帯域の「違法データ」については、遅かれ早かれ起こることだろう。
「低帯域の児童ポルノ」ですら、いつか私たちにとって大きな問題になりうる。世界中で、法律は毎年より過酷なものになっていて、国によっては「間違った」種類のフィクションや詩ですら、裁判所によって児童ポルノと見なされ違法とされている。
タイムスタンプハッシュサイズの任意データ用の第3のトランザクションタイプもサポートする。すでにできるのだから、持たない理由はない。ノードにインデックスを作成する必要がないことを伝えることになる。
そう、既に可能ではある。だが、メインのbitcoinチェーンを汎用データストレージとして使うことを奨励するのは残念なことだ。
大量のユーザーが非通貨データのユーザーになれば、通貨用途のユーザーは遅延の長期化、コスト増、無料トランザクションを送れる余地の縮小に直面することになる。これらの要因によって、通貨ユーザーはbitcoinを使うのを敬遠するようになる。
自由市場の素晴らしさを語る人たちは皆、現在は独占された市場が一つしか存在しないことを都合よく省略する――それがメインラインチェーンだ。これは複数の市場(=複数のチェーン)と比較して競争の低下を意味し、誰もがメインチェーンに自分のデータを押し込むことで共有地の悲劇を招く。
データストレージを奨励する代替チェーンがあれば、データユーザーにとってより良いサービスを提供でき、メインチェーンは通貨ユーザーにより良いサービスを提供できるようになる。
SShadowOfHarbringerの投稿(2010年12月9日13:51 UTC)誰かが児童ポルノをチェーンにエンコードするのを待つだけだ——それは永遠にそこに残る。
残念ながら、その手の悪用を完全に防ぐことは不可能だ。 例えば、送金額の小数点以下の数字に情報をエンコードしたり、「バニティプレート」のビットコインアドレスに情報をエンコードすることもできる。
もちろんそうだ。だが私の言いたいことはそこじゃない。 私の言いたいのは、もしBitcoinプロトコルが設計上、追加データを保存できるようになっていたら、政府は「追加データ(児童ポルノを含む)を保存できる――プロトコルがそう設計されており、デフォルトクライアントもそれを許可している」と論じる材料を得る、ということだ。
デフォルトクライアントからこの可能性を取り除くことで、その論拠を奪うことができ、Bitcoinは「児童ポルノ・プロパガンダ攻撃」に対してずっと耐性を持つようになる。
新しいトランザクションテンプレートは必要に応じて追加できる。数日のうちには、それを受け入れて処理する十分なGPUパワーが集まるだろう。新しいトランザクションを受信して解釈する方法を理解するクライアントが十分に揃うよりずっと前に、ネットワークのサポートは徹底されるはずだ。
ホワイトリスト方式には賛成だ。これによりジェネレータは何を受け入れ何を拒否するかをより選別できるようになる。とはいえ、よいBitDNS実装のテンプレートがリリースされたら、すぐに自分のジェネレータのホワイトリストに追加するつもりだ。
SNサトシ・ナカモトの投稿(2010年12月9日15:17 UTC)タイムスタンプハッシュサイズの任意データ用の第3のトランザクションタイプもサポートする。すでにできるのだから、持たない理由はない。ノードにインデックスを作成する必要がないことを伝えることになる。
そう、既に可能ではある。だが、メインのbitcoinチェーンを汎用データストレージとして使うことを奨励するのは残念なことだ。
大量のユーザーが非通貨データのユーザーになれば、通貨用途のユーザーは遅延の長期化、コスト増、無料トランザクションを送れる余地の縮小に直面することになる。これらの要因によって、通貨ユーザーはbitcoinを使うのを敬遠するようになる。
自由市場の素晴らしさを語る人たちは皆、現在は独占された市場が一つしか存在しないことを都合よく省略する――それがメインラインチェーンだ。これは複数の市場(=複数のチェーン)と比較して競争の低下を意味し、誰もがメインチェーンに自分のデータを押し込むことで共有地の悲劇を招く。
データストレージを奨励する代替チェーンがあれば、データユーザーにとってより良いサービスを提供でき、メインチェーンは通貨ユーザーにより良いサービスを提供できるようになる。
ビットコインをタイムスタンプとして使うことについて……
現在、金(ゴールド)は採掘でき、通貨として使える。また、特殊な性質を持つために、宝飾品の製造や回路基板の作成などにも使うことができる。したがって、金には複数の用途があり、それが価値を高めている。現時点では、ほとんどの人がビットコインは通貨としてしか使えないと考えている。だが、もし人々がビットコインを使って自分の仕事にタイムスタンプを刻み始めたら、すべてのビットコインは複数の用途を持つようになるため、実際に本質的な価値が高まることになる! ビットコインは実は通貨としてだけでなく、タイムスタンプを刻む能力も持っているのだ。科学者たちが金の導電性を利用したのと同じように、誰かがこのビットコインの特殊な性質を利用できれば、ビットコインは別の方向に飛躍し、その価値はさらに高まるかもしれない。タイムスタンプの性質を使った画期的なアプリケーションが、まだ発見されないまま待っているのではないだろうか???