Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

仮想通貨取引の手数料(fee)

仮想通貨取引の帳簿(ledger)をつけていたところBTCのウォレットや取引所の残高と帳簿上の残高(balance)が一致しませんでした。調べまわったところ、原因がほぼ分かったのでメモしておきます。

トランザクション手数料と取引所の手数料を計上していなかったのが要因でした。
BTCのウォレット間の送金には手数料がかかりますがこれは送金者が負担します。この手数料はトランザクションフィーと呼ばれこのトランザクションのナンスを計算したマイナーに支払われます。最小単位は0.00000001BTCつまり1satoshiです。
ウォレットアプリを使っている場合はトランザクション履歴を辿れば、フィーがいくらか見ることができます。
取引所はBTCを入金するときには手数料は取らず、外部に送金(出金)するときに手数料を徴収します。これは取引所に支払われるものですが、取引所はこのうちの一部を取引所から外部へ送金するときのトランザクションフィーに使っています。送金する通貨で支払われるのが普通です。取引所の出金履歴のcsvの送金量には 受信側で受け取る量が記載されています。まともな取引所の場合は取引所が徴収した手数料がcsvに記載されています。 まともなでない取引所(KuCoinとか)の場合は残高から計算するしかありません。 bitmexの場合csvには手数料が記載されずweb上の履歴には表示されます。

手数料は残高減少として帳簿に記載しますが、利益計算には直接影響せず、また金額も小さいので帳簿に入れてない方も多い気がしますが、ズレがあると、入力もれを特定するのが大変なので1satoshi単位まで合わせておくのがおすすめです。

これらを丹念に追加していった結果、差額が10satoshiまで減少しました。あと10satoshi分まだ特定出来ていません。 10satoshiという値は手数料の値としては小さすぎるため、項目に漏れがあるとは考えづらいです。

feeは送信されるデータサイズによって決まりますが、量が多いほど、たくさんのUTXOを含める必要があり、データ量が大きくなります。またデータ量を減らすsegwit機能入ってから、かなり手数料が安くなっています。
仮想通貨アドレスにはマネーロンダリング対策がプロトコル上存在しない代わりに手数料が安いというメリットがあります。

それにしてもこんなめんどくさい作業を仕事にしている税理士って仕事があることが信じられません。いくら高い給料をもらってもやりたくないです。