
2.無権限発行に戻る(前回)
3.セキュリティ
2021年3月にNifty Gatewayのユーザーのアカウントが乗っ取られた。乗っ取られたアカウントで110万円のNFTを勝手に買われた。被害にあったユーザーは2段階認証を有効にしていなかったことが原因とのこと。
https://twitter.com/michaelmiraflor/status/1371199359996456960?ref_src=twsrc%5Etfw
2段階認証をかけていないユーザーが狙われた非常に古典的な被害だ。これはブロックチェーンとは無関係な、従来の中央集権的なサーバのセキュリティだが、サーバー上に秘密鍵を置いておくホットウォレットの限界だろう。
Top Shotなどのクレジットカード決済を導入しているプラットフォームの場合、秘密鍵は運営側が全て預かっている。秘密鍵の管理そのものは、従来の中央集権的な仕組みとあまりかわらない、アクセスされた途端にその秘密鍵に紐づく、暗号資産やNFTが全て持っていかれることになる。
ユーザーのアプリやパソコンの中に秘密鍵を保管してもらう方が、外からアクセスされにくいので(常時接続ではないので)安全であると言える。運営サイドが預かっている場合には、管理ミスで盗まれた場合、取り返す術はなく、100%運営サイドの責任だ。運営のセキュリティリスクを下げるためには、秘密鍵はユーザーに持たせるモデルの方がベターであると言える。
また、ブロックチェーン特有のセキュリティ問題も起きている。2021年9月に日本のNFTプラットフォームnanakusaで、ブロックチェーン上での購入処理を自動執行するプログラムである「スマートコントラクト」が攻撃されて、実行権限が不正に取得されて、36件のNFT(ETH2件、Polygon34件)、17件アドレスが流出した。
nanakusaよりクリエイター・ユーザーの皆様にご連絡があります。現在調査中につき、追ってご報告させて頂きます。皆様のご理解宜しくお願い申し上げます #nanakusa pic.twitter.com/Kl4vnEAjVp
— nanakusa_io (@nanakusa_io) September 3, 2021
また、2021年9月世界最大のNFTプラットフォームであるOpenSea(オープンシー)が、NFT化したイーサリアム上の自分のアドレスを短くわかりやすくするENS Domainsをスマートコントラクトのバグによって紛失させた。被害者は42名で損害は10万ドル。
A frantic call to @OpenSea later, it transpires I was the first and apparently only victim of a bug introduced to their transfer page in the past 24 hours, which affected all ERC721 transfers to ENS names. Ownership of rilxxlir.eth is now permanently burned.
— nick.eth (@nicksdjohnson) September 7, 2021
nanakusaとOpenSeaの事件は、いずれもNFTの売買で利用されているブロックチェーン上での取引を自動執行するプログラムであるスマートコントラクトに起因しているという点で、NiftyGatewayの事件とは別モノだ。
スマートコントラクトの最大の特徴は基本的に改竄できないプログラムであることだ。つまり、悪意のある人がつくったスマートコントラクトでも、本人すら改竄できないので、そのソースコードが正義であり、安心して信頼することができる。
不動産取引は、今でも、売買する者同士がリアルに集まって、権利証と引き換えに、買い手が銀行振り込みをして、売り手は銀行に電話して入金を確認するといった驚くほどアナログな対面取引が行われているが、スマートコントラクトを使えば入金と権利証の交換をオンラインで完結させることができるようになる。
スマートコントラクトは改竄できないので、両者ともに安心して使えるというわけだ。いつでも書き換えができる従来のプログラムとの決定的な違いだ。人よりもプログラムの方が絶対的に信頼できるエスクローとなるわけだ。
素晴らしい発明ではあるが課題もある。改竄できないということは、バグ(ミス)があった場合にもそのプログラムを修正することができないということだ。
このミスが致命的なセキュリティホールとなる場合もある。そうなると悲惨だ。セキュリティホールを突いて好き放題されてしまうというわけだ。
NFTよりも被害が大きいDeFiプロジェクトでも、次々に脆弱性を突かれて数十億円規模の攻撃被害が起きた。この事件について、ICOVO CTO/イーサリアムステーキング協会代表理事の西村は
「スマートコントラクトの用途の性質上、コンパイル前の生コード(Solidity で書かれた人間が読める形のもの)を Etherscan に公開することが慣習となっており、「コードが公開されている」というのが脆弱性ポイントを増やしている、というのもあると思いますが、「公開された function であれば、誰でも呼び出せてしまう」という性質も脆弱性が出やすい原因かもしれません。中央集権システムであれば、そもそも管理されたシステム経由でなければどんなロジックも呼び出せないようになってますし。脆弱性が見つかったら即メンテモードで閉じることもできます。もっと言えば、不正に書き換えられたデータを巻き戻すこともできます。そもそも人間が完璧なコードを書くのはスマコンであっても従来システムであっても無理なんだと思います。そのリスクに対抗できる設計と運用体制が組めるかどうかが重要だと思います。」
とコメントしている。
4.転売時のロイヤリティ
「NFTの凄いところは、販売時点だけでなく、転売時(二次流通時)にも永遠にクリエイターにロイヤリティーが入る仕組みが実装できる」
と明言する人がいるが、これはあくまで限られた条件で実現できることで誤解を与えるので明言すべきではない。NFTは通常ERC721またはERC1155に準拠して設計されているが、この規格にロイヤリティを回収するための仕組みはない。これにロイヤリティ回収のための独自の実装をいれるか、普及の可能性を持ったERC2981 に準拠したNFTだけが売買に際してロイヤリティの回収ができる可能性がある。
可能性があると言ったのは、たとえ対応しているNFTであっても、Metamaskなどのウォレットを使って個人間で直接NFTのやりとりをした場合には、NFT自身が売買金額を知る方法はなく、ロイヤリティの回収はできない。
また、OpenSeaは独自実装なのでNFTを発行したコンテンツは、OpenSeaの内で転売された場合には、ロイヤリティを回収できるが、購入者が他のマーケットプレイスで再販しようとして持ち出して転売した場合には、ロイヤリティの回収はできない可能性が高い。
現段階ではERC2981に準拠しているNFTは少なく、かつ、ERC2981 はあくまで売買プラットフォームに対してロイヤリティ額や率を伝えるだけのインターフェース。それ自体がロイヤリティフィーの回収まで行う仕組みではないからだ。
NFTの発行方法は発行元によって2つのパターンがある。OpenSeaやRaribleなどのNFTプラットフォーム会社を発行元とするパータンとクリエイターや一次販売事業者を発行元となるパターンだ。後者は発行元の名前(以下ティッカー)を自由につけられる。
仮に、OpenSeaやRairibleが廃業した場合にも、NFTの発行元として、ずっとその名前が残ることになる。100年先を見据えた場合には、しっかりとオリジナルのティッカーを発行元とした方が見た目は良さそうだ。
Raribleの場合には、ティッカーの選択は、実は見た目だけでなく、ロイヤリティ設定の有効性にも関わってきている。
RaribleではNFT発行時にRaribleのティッカーと独自ティッカーが選べるようになっているが、RaribleティッカーのNFTをOpenSeaで売買したときにロイヤリティの回収はできない。またOpenSeaで発行する場合には独自ティッカーが選択できず、OpenSeaのティッカーで発行したNFTをRaribleで売買してもロイヤリティの回収はできない。
またFoundationは、OpenSeaおよびRairibleと業務提携をしており、Foundationで発行されたNFTが転売された場合には固定でその10%をロイヤリティとして毎月2回、回収してFoundationのNFT発行者に支払っている。技術的な仕掛けではなく、ビジネス的な約束で回収しているだけだ。
NFTの醍醐味は、あっちこっちのマーケットプレイスやゲームなどに持ち込めることであるが、現状ではロイヤリティの回収の仕組が統一規格で実装されておらず、どこのプラットフォームに持ち込んでも回収できるという状況にはなっていない。
NFT発行はERC721またはERC1155に加えて、業界全体として足並みを揃えてERC2981のような統一規格に準拠させて発行するようにしないと、転売時に永遠にロイヤリティが回収できるという話は幻想で終わる事になるだろう。
ICOVO社では、NFTに興味をお持ちのクリエイター・アーティストおよび関連事業者に対して受託まはた成功報酬でプロジェクト構築から運営までトータルに支援をしています。
お気軽にお問い合わせください。contact@icovo.co
5.所有権に続く(次回)