こんにちは。ALIS CTOの石井(@sot528)です。
ALISブロックチェーンブログ、今回は小ネタです。暗号通貨・ブロックチェーンの重要語であるFungibility(代替性)の、文脈による意味の差異について整理してみます。
Fungibility(代替性)は、文脈により以下の意味・用途・用法となる。
・プロトコル文脈:
ネイティブトークンのトレーサビリティの有無による代替性。censorship resistanceの担保を目的としてFungibilityの担保を指向する
・アプリケーション文脈:
トークン1エンティティごとの独自プロパティの有無による代替性。独自性(identity, personality, indivisuality)を持つアセットの取り扱いを目的としてFungibilityの除却を指向する
ピンとこないかと思いますので詳しく解説いたします。
まず、わざわざ整理する理由を記載します。
・ブロックチェーン界隈において、Fungibilityという言葉には文脈による意味・用途・用法の差異がある
・しかし、その差異を明確に言語化した情報が見当たらない
・なので時に混乱するしモヤモヤする
以上です。それでは整理した内容を見てゆきましょう。
この記事では便宜上、BitcoinにおけるBTC、EthereumにおけるETHのようないわゆるネイティブトークンについて語られる場合のFungibilityをプロトコル文脈のFungibilityと定義いたします。
プロトコル文脈におけるFungibilityとは、そのネイティブトークン(BTC, ETH, etc.)を誰がどのように使ったかを追跡できるか否かの性質を表す意味で用いられます。
たとえば、現金は誰がどう使ったか追えないからFungibleだよね。でもBitcoinは履歴が全部追えるからFungibilityがあるとは言えないのではという使われ方をします。プロトコル文脈では、Fungibilityの担保はcensorship resistance(検閲耐性)の向上という意味で重要です。かつて犯罪に使われた可能性のあるBitcoinは利用できないという状況になると、Bitcoinの通貨としての信用が揺らぎます。使えないかもしれない通貨は誰も欲しがらないからです。
キーとなるのは対象のトレーサビリティです。プロトコル文脈では一例として、ネイティブトークンのトレーサビリティを除却することでFungibilityを担保する、というような言及のされ方をします。
対して、EthereumにおけるERC721のようないわゆるNon-Fungible Token (NFT)について語られる際のFungibilityを、ここではアプリケーション文脈のFungibilityと定義いたします。
このアプリケーション文脈(=NFT文脈)のFungibilityは、ERC20トークンに代表されるFungibleなトークンに対して、Fungibilityを除却する(=個々のトークンに独自のプロパティを付与する)ことで、ひとつひとつのトークンを個性を持つアセットとして取り扱うことができる(distinguishable)、というような意味で用いられます。これにより無個性な通貨だけでなく、CryptoKittiesの子猫に代表されるそれぞれに特性を持ったアセット(=子猫)をトークンとして取り扱うことができるようになるわけです。
ERC20トークンであるALISトークンはこの文脈でFungibleであり、10ALISは10ALISと等価です。
しかしCryptoKittiesでは上記の通り、子猫はERC721トークンとして表現されます。茶色の毛並みの子猫(1トークン)と白い子猫(1トークン)は必ずしも等価とは限らず、その意味でこれらのトークンはNon-Fungible(代替性が無いこと)になるのです。
このように、アプリケーション文脈のFungibilityは、プロトコル文脈のFungibilityとは持つ意味や語られ方が異なります。アプリケーション文脈のFungibilityにはトレーサビリティは関係ありません。アプリケーション文脈では、EthereumにおいてFungibleであるERC20トークンも、Non-FungibleであるERC721トークンも、通常のトランザクションであればその動きは等しく可視化されておりトレース可能です。プロトコル文脈ではFungibleであればトレーサビリティが除却されており、過去に不適切に用いられたネイティブトークンが特定されることはありません。しかしアプリケーション文脈では通常、FungibleであるERC20トークンでもその来歴を誰もが確認可能であるため、特定の来歴を持つERC20トークンが、ある場面では機能しない(ex:店舗で受け付けてくれない)という事態が起こりえます。(※Ethereumもプロトコル文脈のFungibilityの担保を指向していますが話をシンプルにするため割愛)。
これが、今回整理したかったFungibilityの文脈による意味の差異です。
冒頭の結論に戻ります。
Fungibilityという言葉は、文脈によりその意味・用途・用法に以下の差異が発生します。
・プロトコル文脈:
ネイティブトークンのトレーサビリティの有無による代替性。censorship resistanceの担保を目的としてFungibilityの担保を指向する
・アプリケーション文脈:
トークン1エンティティごとの独自プロパティの有無による代替性。独自性(identity, personality, indivisuality)を持つアセットの取り扱いを目的としてFungibilityの除却を指向する
このように、暗号通貨・ブロックチェーン領域で語られるFungibilityは文脈により意味が異なることを頭の隅に入れておくと混乱を避けられるかもしれません。
今回、英語でも日本語でも関連情報が見当たらず整理してみました。もし既によく整理された情報をご存知の方はお知らせいただけると嬉しいです。
異論・反論・誤りの指摘・マサカリ大歓迎です。
・ALIS CTO 石井(@sot528)
・この記事は、運営による記事のためいいねによるトークン配布はありません
・ALISではエンジニア・R&Dメンバー絶賛募集中です 😉