Bitcoin/Ordinalsのトランザクション履歴をCSV出力するChrome拡張機能「Btc Transaction Exporter」を作りました
web3で活動している写真家の mag(@mag_cinephoto)です。簡単なプロフィールは以下です。
今回はアート作品のお知らせではないのですが…、確定申告のためにBitcoin/Ordinalsのトランザクション履歴をCSV出力するChrome拡張機能「Btc Transaction Exporter」を作りましたので、そのお知らせになります。
無料で使えます。使い方や作成した経緯や想い、寄付に関することなどをまとめましたので、最後まで見ていただけると嬉しいです!
概要
Btc Transaction ExporterはBitcoinの取引履歴をCSVエクスポートするChrome拡張機能です。
mempoolなどのサイトでは、WEBブラウザ上でトランザクションの履歴を見ることはできますが、履歴を保存する機能はないようです。 このChrome拡張機能は、BitcoinやOrdinalsが好きな方々が、トランザクション履歴の管理作業の時間を節約し、より活動を楽しむことに時間に割けるように作成しました。
デモ動画
簡単なデモ動画はこちらになります。
主な機能
ウォレット接続不要
ウォレットデータ収集は実施しません
Mempool/MagicEdenの無料APIを使用して、指定されたウォレットアドレスのすべてのトランザクションを取得
アドレスごとのvin・voutの合計UXTOを表示
メインアドレスのvinとvoutの合計にラベルを付けて区別
取引手数料のみの行表示
Ordinals Inscription作成のトランザクションについて、補足情報にcontent_type(text/plainなど)を追加
BRC-20などで使用されるtext/plainのOrdinals Inscriptionの場合、補足情報にテキストコンテンツを追加
MagicEdenのAPIを使用し、Inscriptionのコレクション名と固有の名称がある場合は補足情報に追加
※あくまでトランザクション履歴取得を行うための拡張機能になります。自分は税務の専門家ではないので、確定申告についての履歴の整理や活用はご自身で実施いただけますと幸いです。
サンプルCSV
サンプルcsvファイルです。例えばGoogle Spreadsheetにインポートして、myAddress カラムでフィルタリングすれば、自分のアドレスに関する一覧を確認できます。不要なカラムは非表示にしたり、追記したりしながらトランザクションを確認してください。
https://docs.google.com/spreadsheets/d/1PvTl_DhBovWPGmMSS84ciJ9fZjjaSsZ7T74W9AcnCoQ/edit?usp=sharing
使い方
Chrome Web Storeより、拡張機能をインストールします。
Btc Transaction Exporterを開きます。
CSVをエクスポートしたいメインアドレスを入力します。
別のビットコインアドレスを入力します。Xverseなどのウォレットを使用している場合は、タップルートアドレスとは別のビットコインアドレスがあるかもしれません。入力すると自分のアドレスとして追加でマークされます。
ウォレットのエイリアスを入力します。エイリアス名はエクスポートされたcsvファイル名に含まれます。
Export CSVをクリックします。しばらくするとCSVがエクスポートされます。
※無料のmempool、magicedenのAPIを使っているため、レート制限によりリクエスト時間を1秒おきにしています。そのため履歴数が多いと少し時間がかかる可能性があります。ご了承ください。
注意点
すべてのトランザクションの用途を推測できる訳では無いので、用途の予測ができなかったトランザクションについては個別に確認をお願いします。
CSVデータカラムの形式
timestamp: Timestamp (YYYY/MM/DD hh:mm:ss)
txid: Mempool transaction id
txUrl: Mempool transaction url
address: Taproot/bitcoin address
vin: Transaction input btc
vout: Transaction output btc
vdiff: Btc value of (vin - vout)
myAddress: Mark * if address is yours
date: Date(YYYY/MM/DD)
description: If the transaction reveals the behavior of the inscription, a supplement will be included in the memo
inDiff: Value if vdiff is positive
outDiffWithoutFee: Value if vdiff is negative (excluding gas cost)
fee: Gas cost
ordInscriptionNumber: Inscription number (Only if the inscription of Ordinals is known)
ordContentType: Inscription content type(Only if the inscription of Ordinals is known)
ordContentText: Inscription content text(Only if content type is text/plain, and the inscription of Ordinals is known)
ordInscriptionUrl: Inscription URL of Magiceden(Only if the inscription of Ordinals is known)
制作した経緯
普段はweb3スペースにおいてアート作品を制作しているのですが、そろそろ確定申告が近づいてきた😭ということで、Ordinalsのトランザクション履歴を整理しようとしていました。
mempoolのサイトを見てみようとしましたが、以下のような課題にぶつかり…
ETHのようにEtherscanでCSVエクスポートできるわけではない
UTXOの概念があり、単純に入金、出金がぱっとわかりづらい形式になっている
OrdinalsのInscription作成や送付などがmempoolからだけではわかりづらい
他のサイトで代替できるような機能も無い
そこで自分でMempoolやMagicEdenの無料のAPIを調べてCSV出力することを取り組みまして、なんとか以下のような処理を施し自分用には出力できるようにはなりました。今思うと、手作業でやるのはゾッとします…。
できるだけアドレス単位でUTXOがまとまるように
入出金の差分がわかるように
Ordinalsに関わるトランザクションがわかるように
ただ作っているうちに、これは他にも困る方がたくさんいらっしゃるのではないかと思い、Chrome拡張機能化して他の方にも活用してもらえるよう開発に取り組みました。
粗いところがあるかもしれませんが、使ってみていただけると嬉しいです。
寄付について
この拡張機能は無料で利用できます。またいただいたフィードバックをもとに改善していきますが、もし気に入っていただけたら寄付をいただけるととてもとても励みになります…!いただいた寄付は、今後の拡張機能の改善とアーティスト活動促進のために活用させていただきます。
寄付先は以下の通りです(どの通貨でも大丈夫です):
より詳細な内容について
拡張機能について詳細な内容については、GitBookでドキュメントを作りましたのでご覧ください。またこの拡張機能はオープンソースにしていますので、もし要望や修正などあればPullRequestやIssueを送っていただくことももできます!気になる方はご覧ください。
おわりに
この拡張機能が皆さまのお役に少しでも立ったら幸いです。またこの拡張機能についてご不明点ありましたらお気軽にMagまでTwitterでDMやリプライをいただけると嬉しいです!
今後アート制作もまた励んでいきたいと思っています。よろしくお願いします!!
最後まで読んでくださりありがとうございました!このnoteが良いなと思った方は、良かったらRTやいいねで拡散していただけると嬉しいです!!また疑問点や気になることなど、お気軽にご連絡ください!
Appendix
ご参考までに、今まで自分のNFT活動に関するnoteリンクを掲載させていただきます。ご興味ございましたらあわせてご覧ください。