暗号資産の不正検出やマネーロンダリングの調査のソフトウェア開発を手がけるChainalysis(チェイナリシス)のブログ記事をご紹介いたします。本記事は、皆様に向けて有益な情報発信を行うために掲載させていただいております。Chainalysisに関する詳細情報はこちらを御覧ください。
【記事作成】Chainalysisチーム
【翻訳】重川隼飛 Chainalysis セールスエンジニア
Chainalysisは43種類のERC-20トークンを新規にサポートすることになり、これまでの対応通貨数の倍以上である81種類もの通貨を取り扱えるようになります。このサポートによって、Chainalysisの調査・コンプライアンスツールでは、ERC-20トークン全体の取引額97%、1日あたり10億ドル相当以上の取引を確認できるということになります。
2020年2月時点では、イーサリアムの上で取引されるERC-20トークンは、244,697種類あります。ERC-20トークンは、新規の通貨を発行する手段としてはずば抜けて手っ取り早い方法ですが、なぜChainalysisはそのうちの81種類しかサポートしないのでしょうか。本記事では、ERC-20標準の技術的背景を踏まえた上で、なぜ全種類に対応することが合理的でないのか、Chainalysisがサポートすべきトークンをどのように選んでいるのかについて記します。
ERC-20とは?
ERC-20トークンが次々に作られ爆発的に広がっている理由の一つは、トークンの利用や取引、新規発行をするのにあたって、細かい技術的なことを考えなくてもよいことです。もちろん、このことによってトークンによって品質にばらつきがあるのも事実です。
ERC-20とはイーサリアムのブロックチェーン上でトークンを作るための技術標準です。ERCとはEthereum Request for Commentsの略で、インターネットの中核を成す標準であるRequest For Comment documents(RFC)から影響を受けた用語です。
ERCはイーサリアムコミュニティの中でピアレビューやディスカッションを経て成立します。このプロセスを通って十分な支持を得られると、その仕様はEthereum Improvement Proposal(EIP)として正式なものとなります。
ERC-20は、20番目の’’Request for Comments’ですが、標準仕様として初めて正式に受け入れられたものです。これはFabian VogelstellerとVitalik Buterinによって2015年に作られ、最も広く使われる標準となりました。
イーサリアムがビットコインと一線を画す点の一つは、プログラムを動かせることです。スマートコントラクトと呼ばれるEthereum Virtual Machine(EVM)上で動くプログラムによって、独自のブロックチェーンを一から作ることなく、イーサリアムのブロックチェーン上で分散アプリケーションを作ることができます。
ERC-20はトークンとして機能するスマートコントラクトをコーディングするための技術標準であり、トークンを送ったり第三者がトークンを使えるようにしたりするための基本的機能を実現するためのプログラムインターフェースを提供します。特にこれは自分ではなく他者にトークンを使わせたいのであれば重要な役割を果たします。
詳細には、ERC-20に準拠したスマートコントラクトでは、少なくとも以下の6つの関数と2つのイベントを実装する必要があります。
関数:
イベント:
オプションとしてある3つの関数:
なお、ERC-20準拠のスマートコントラクトには、追加機能として別の関数を持たせることもできます。
Chainalysisでイーサリアムが既にサポートされているのにもかかわらず、ERC-20の追加対応が必要となるのはなぜか
ETH(イーサ)はイーサリアムブロックチェーンのネイティブな通貨であり、これによってトランザクション手数料が支払われます。Chainalysisでは600を超えるエンティティによって3530億ドル相当以上のETHが取引されているのを確認しており、製品によって全てのETHの取引情報を見ることができます。
アリスがボブに対してERC-20トークンを送りたい場合、両者の間でETHは受け渡しされません。アリスはトークンのスマートコントラクト上にあるtransfer関数を実行させ、そのためのトランザクション手数料を払います。その手数料には、スマートコントラクトの動作に必要なガスも含みます。このtransfer関数によって、トークンのスマートコントラクト内のデータ構造に保持されているアリスとボブの残高が更新されます。
つまり、トークンの動きを追うためには、単なるETHの動きを追うのとは全く別の技術的プロセスが必要となるわけです。そのプロセスとして、まずスマートコントラクトのコードを人力で解析し、誰かがその関数を呼び出した時に何が起こるのかを把握することが必要です。そのうえで、特定のトークンでTransferイベントが発生したかを見るために、イーサリアムブロックごとに生成されるイベントログをパースする必要があります。
自動的に全トークンをサポートしないのはなぜか
ERC-20は技術標準であり、前述のように、トークンのスマートコントラクトの関数やイベントについての詳細仕様を定めたものです。
例えば、transfer(address _to, uint256 _value)関数は、’_value’に与えられた数値の分を、関数呼出を行った者の残高から差し引き、アドレス’_to’の所有者に管理されている残高に加えます。
スマートコントラクトの関数が呼び出される度に、そのリクエストはマイナーによってブロックに記録されます。transfer関数やapprove関数についていえば、対応するイベントは関数呼び出しを記録するログにて確認できます。
技術標準がトークンの重要機能を定めているのだとすると、Chainalysisのように優秀なエンジニアがいれば、スクリプトを書いて、トークンの種類によらずERC-20のTransferイベントを自動的に処理することもできるのではないだろうかという意見もあるかもしれません。確かにできますし、Chainalysisの競合他社でそのようなことを行っているところもあるでしょう。しかしながら、この方法は根本的な欠陥を抱えたアプローチと言わざるを得ません。全てのERC-20トークンは同じではないという事実が、その単純な理由です。
そもそも、イーサリアムの根幹となるブロックチェーンのプロトコルやAPIに組み込まれているEIPとは違って、スマートコントラクトの標準は強制できません。つまり、トークンのスマートコントラクトをコーディングする人は好きなメソッドを勝手に作れてしまうのです。さらに言えば、ERC-20で定めたメソッドと同じ名称で、機能的には全く別のメソッドを作ることもできてしまいます。
普及しているトークンでも、ERC-20の標準に一部しか準拠していないものもあります。例えば、Golem Network Token(GNT)では、approve関数、allowance関数、transferFrom関数、Approvalイベントが実装されていません。
さらに、多くのトークンが、ERC-20準拠のメソッドの上に追加機能を持たせており、このことが資金の流れに大きく影響しています。例えば、最近Chainalysisが対応したDecentralandのトークンであるMANAには、MintやBurnというイベントがあります。このような追加のイベントを正しく取り込まなければ、トークンが突然現れたり消えたりするように見えてしまい、トークンを流れを追う上で間違った判断につながってしまいます。
それ以外の著名な例としては、ERC-20トークンの中で最も大きい取引量を持つ、USDT(Tether)が挙げられます。通常のTransferイベント以外に、このトークンではコントラクトを作った人によって初期化される供給量が決まってる他、Issue、Redeem、Destroyedといった、トークンの供給に多大な影響を及ぼすイベントが実装されています。また、もう少し技術的に踏み込んだことを言えば、Destroyedイベントは、コントラクトでの実装上の理由により、他のイベントとは違う形でイベントログからパースしないといけないようになっています。
ごくわずかの資金の動きでも見失えば、そのことが積み重なっていって、残高やエンティティの移転の不整合が膨れ上がり、完全に信頼できないデータとなってしまうという、大きな問題が生じます。
一例ですが、トークン発行者がトークンの発行・焼却によって供給量を調節するというのは、株式の世界における買い戻しや希薄化による価格の調整と同じような効果をもたらします。Chainalysis ReactorでトークンのCoin Generationクラスタを確認すれば、過大な量の供給を見ることもできます。
ReactorでERC-20版USDTのCoin Generationクラスタを見ると、残高からこのコインが目立つほど多く供給されていることがわかる
ここまでに述べたことが、ChainalysisではERC-20トークンを新規にサポートするにあたって、自動化なプロセスは部分的にしか使っていないことの理由です。サポートする予定のトークンは、全てブロックチェーンのエキスパートによって精査され、細かい点も見逃さず取り入れるようにしています。ユーザが完全に信頼できる情報となる確証が得られるまでは、弊社では無理にトークンを新規サポートすることはしません。
どのようにサポートすべきトークンを選んでいるのか
弊社では、自動的に全てのERC-20トークンに対応するわけではないため、四半期ごとにどれをサポートすべきかの優先付けを行っています。
Chainalysisのミッションは、ブロックチェーンにおけるグローバルエコノミーに透明性をもたらすことです。仮想通貨(暗号資産)がその可能性を完全に解き放つためには、更なる信頼と透明性が必要です。弊社は、調査・コンプライアンスツールの提供や、高度な教育・サポートによってそのことに貢献します。
このミッションを踏まえ、弊社では、現時点で多くの人に広く利用されている通貨の対応を優先しています。これによって、お客様だけでなく、仮想通貨全体のエコシステムに関わる当事者全体に良い影響を与えられると考えています。それによって、様々な人々が新しくより良い方法でやりとりできるよう、仮想通貨の発展と普及を進められればと信じています。
新規通貨対応の優先付けの大きな要素は以下の2つです。
- 取引額の多さ
- お客様にとって役に立つかどうか
それぞれについて以下に説明します。
取引額の多さ
仮想通貨には様々なユースケースがありますが、根本的な使われ方は、人と人との間の価値移転です。ここでいう「価値」というのは主観的な概念であり、実際には人の間にも自動化されたアクターが存在する場合もあるかもしれませんが、まずは最初の見積もりとして、エンティティ間のドル換算の合計取引額は、仮想通貨から人々が得られている「利便性」を測る一つの尺度となり得るでしょう。
Chainalysisでは、ERC-20トークンの日々の取引量を考慮した上で、継続的に取引量の多いものについて優先づけを行っています。取引額の操作や水増しなどの影響を受けないよう、ブロックチェーン内外の情報も考慮に入れます。
ERC-20トークンは、技術的な実装がそれぞれ異なる上、利用状況にも差があるため、日ごとの取引量は重要な要素です。実際のところ、上位のトークンに利用が集中しており、USドルのステーブルコインであるTetherだけで、(2020年2月27日時点で)ERC-20トークン全体の取引額の75%を占めています。また、Tetherを除いたの残りの分のうち、15種類のトークンがその90%を占めています。
上図から分かる通り、取引量はパレートの法則(より数学的に言えば、べき乗分布)に沿っています。つまり、最も取引量の多い少数のトークンについて高品質なデータ提供に注力することが、ERC-20トークンのカバレッジの面では有益であるということです。
お客様にとって役に立つかどうか
世界中の組織に対し、仮想通貨についての理解を深めたり、そのエコシステムの中で活動したりすることを支援するのが弊社のゴールです。そのことを考慮すると、お客様にとって特に有益な通貨に着目しようと考えるのは自然なことです。
取引所やカストディサービスなど仮想通貨を自身で取り扱うお客様にとっては、最も取引が多い通貨やトークンへのサポートこそ最も有益なこととなるでしょう。
ただ、法執行機関やコンプライアンス、規制当局のお客様について言えば、状況は違います。このようなお客様にとって最も役立つのは、必ずしも取引量が多いものとは限りません。言うなれば、一番怪しげなコインにこそ高い関心が向けられることもあります。弊社がサポートするトークンは「クリーン」なものというわけでもありません。場合によってはその逆もあり得ます。
お気づきかもしれませんが、弊社の新規通貨対応について、技術的な優勢や、管理体制、コンセンサスメカニズムといったことには一切触れていません。トークンやその運営の良し悪しではなく、お客様のニーズこそが、新規通貨をサポートするかの鍵となります。
弊社はお客様のフィードバックを常に求めています。実際に、最近追加された通貨の多くは、特にお客様からリクエストいただいたものです。もし新規にサポートして欲しいトークンがあれば、是非弊社の担当者にご相談ください。
要約すると、ERC-20はトークンの標準ではあるものの、ERC-20トークンに対して一律のアプローチは通用しないということです。Chainalysisが重視するのは、お客様にとって有益な知見を与えることであるため、データ品質や最も「役立つ」通貨のサポートを優先して行っています。我々のポジションは仮想通貨のエコシステムにおいてはユニークなものですが、ここまで述べたように、通貨やトークンの「利便性」を判断する上では、他のプレーヤーとは違った見方をしております。
【免責事項】
本ウェブサイトに掲載される記事は、情報提供を目的としたものであり、暗号資産取引の勧誘を目的としたものではありません。また、本記事は執筆者の個人的見解であり、BTCボックス株式会社の公式見解を示すものではございません。