Counterpartyで配当(dividend)する時の手数料について

f:id:yzono:20150102233304j:plain

はじめに

Counterpartyd v9.45.0から配当(dividend)する時に、XCPが手数料として必要になりました。今回はその事について書きます。

目次

  • 18 Myths about Counterparty
  • 過去に実験した配当
  • 条件を変更して再実験

18 Myths about Counterparty

ブログCoinedTalk18 Myths about Counterpartyという記事があります。Counterpartyに対するネガティブな批判に対して、「それは事実とは違うよ」と具体的な理由を示して反論しています。大変参考になります。

その中に配当についての項目があるので引用します。

Myth 14: If you pay dividends to 10,000 users, you will bankrupt yourself on BTC fees.

Dividends are handled in a single send operation, and therefore only require one transaction fee for Bitcoin miners. This remains the same regardless of how many people are holders of an asset.

10,000人に対して配当を送信しても、BTCの手数料は1トランザクション分で済むということです。これはすごい便利だなと感じました。

過去に実験した配当

実際にそうなるか試したのが過去の記事です。

ブログ記事のとおりBTCの手数料は1トランザクション分でしたが、XCPが0.0004XCP減っているのが気になっていました。

いろいろ調べるとChangeLogに手数料についての記載があります。

* v9.45.0 (2014-10-23)
    * add dividend fee of 0.0002 XCP per recipient (protocol change: 330000)

dividend.pyにそれらしき実装がありました。

fee = 0
if not problems and dividend_asset != config.BTC:
    holder_count = len(set(addresses))
    if block_index >= 330000 or config.TESTNET: # Protocol change.
        fee = int(0.0002 * config.UNIT * holder_count)
    if fee:
        balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, config.XCP)))
        if not balances or balances[0]['quantity'] < fee:
            problems.append('insufficient funds ({})'.format(config.XCP))

配当手数料 = 0.0002XCP x 受け取るアドレスの数  ということです。

フォーラムに理由を質問したところスパム対策だそうです。

Dividend SPAM

条件を変更して再実験

配当を受け取るアドレスを3つして再実行しました。

配当実行前

n2MxM8syUWd7qtN9CsN3DcPZWt4T946Dho (配当を実行するアドレス)
BTC: 0.0386523
XCP: 49.5
TXZCOIN:94

mfyPfVVLVzZ413ruxsBzhrhmK7CFrC9VDJ
BTC: 0.033678
XCP: 0
TXZCOIN:1

mh4GW9ge6XhpS5TzEbV76BrqovRRDwPqSR
BTC: 0.001078
XCP: 0
TXZCOIN:2

mvZnxxorwUr8zMsWc7ffg4bZ1MupN9x5nc
BTC: 0.000078
XCP: 0
TXZCOIN:3

配当実行後

n2MxM8syUWd7qtN9CsN3DcPZWt4T946Dho (配当を実行するアドレス)
BTC: 0.0384743
XCP: 49.4994
TXZCOIN:94

mfyPfVVLVzZ413ruxsBzhrhmK7CFrC9VDJ
BTC: 0.033678
XCP: 0
TXZCOIN:1

mh4GW9ge6XhpS5TzEbV76BrqovRRDwPqSR
BTC: 0.001078
XCP: 0
TXZCOIN:2

mvZnxxorwUr8zMsWc7ffg4bZ1MupN9x5nc
BTC: 0.000078
XCP: 0
TXZCOIN:3

(BTC)0.0386523 - 0.0384743 = 0.000178BTC ->1トランザクション分の手数料

(XCP)49.5 - 49.4994 = 0.0006XCP ->(0.0002XCP X 3アドレス分の手数料)

まとめ

仮に1万アドレスに配当した時は1万円ぐらい手数料が必要になります。既存の配当の仕組みに比べればコストを大幅に抑えられます。ただ頻繁な配当をすることにはブレーキがかかりそうです。LTBCoinのユーザー数や配当ポリシーについて気になってきました。今度調べてみます。

参考

Dividend SPAM