Bitcoin ブロックチェーンにおける dust とは
Bitcoin は言うまでもなく BTC (satoshi) という数量をやり取りするための存在です。
Counterparty は Bitcoin ブロックチェーンが当初想定しなかった応用なので、Bitcoin による制約をいくつか受けます。
dust は代表的な制約でした。(過去形にした理由は後述します)
Bitcoin ネットワークへの攻撃を行う最も簡単な方法は、トランザクションを mempool に大量に放り込むことです。
(昨今の送金手数料高騰の原因となっているトランザクション混雑を見れば明らかですね)
送金手数料 0 でかつ 0 BTC の送金トランザクションを大量に投げ込むと、容易に Bitcoin ネットワークを崩壊させられます。
その事態を防ぐため、2つの対策が取られています。一つは送金手数量の下限設定、もう一つは最低送金量の設定です。
この最低送金量を Bitcoin 用語で dust (塵)と呼びます。
Counterparty と dust
価値交換システムである Bitcoin で 0 BTC を送るはずがないので、Bitcoin としては正しい判断なのですが、Counterparty とっては少し困った事になります。
トークンを送信する場合、トランザクションにトークンの情報だけでなく dust も含めなければいけません。
つまり、送信先に、トークンだけでなく極微量の BTC が渡されます。
dust の量は一定なので、長い時間軸で見れば損得無いようにも思えます。
しかし、オフチェーンの取引所/販売所で他の仮想通貨やfiatから購入した場合には微妙です。
顧客がトークンを買ってウォレット移したら微量とはいえビットコインがおまけでついてくるわけですから。
ビットコインも高値になってきて、微量とは言えそれなりの金額(数十円)にもなります。
dustless send
そこで、2017 年 10 月の Counterparty アップデートで、dustless send という仕組みが追加されました。
CIP-9 に含まれており全体では Enhanced Send 1という名前がついています。
その実現方法は、要約すると下記のようなものです。
- Counterparty の send メッセージに、トークンの送り先を含める
- トランザクションには自分から自分への送金を行う (送金手数料の分だけ減らす)
- Counterparty server は Bitcoin トランザクションの送金先ではなく、メッセージ中にある送り先に送ったと解釈する
力技感が溢れる感じですが、確かに dust はトークン送付先に漏れずに済んでいます。
勘の良いかたは気づいたと思いますが、Enhanced Send のトランザクションは、Counterparty 非対応のエクスプローラで見ると、
誰に送金したのか判別つきません。
送金手数料は相変わらず
残念ながら Enhanced Send は Bitcoin の最大の課題である送金手数料の高騰を抑えられません。
CIP よると SegWit の利用なども計画にあるのですが、道程は長そうです…
-
将来再拡張が必要になったときにどう命名するのか考えていないっぽい… ↩