イーサリアムアドレス 〜ICAPとENSへの発展〜

目次

    ETHの送金などを行う際には、0xから始まる42文字のアドレスを使用します。このイーサリアムアドレスは一文字でも間違えると正しく送金することができません。通常、間違ったアドレスに実際に送金が起こってしまえば、送金したETHは戻ってきません。連載記事の前半では、このようなアドレスの打ち間違いによる誤りを検出する技術 -Capitals-based checksum-について解説しました。

    連載の後半にあたる本記事では、イーサリアムアドレスをより使いやすく、送金時のミスを減らせるよう提案された、ICAP(Inter exchange Client Address Protocol)やENS(Ethereum Name Service)について解説していきます。

    イーサリアムのアドレス形式

    連載前半の記事にて、イーサリアムのアドレスはHEX(16進数)形式であり、この形式であることを示す0xから始まる42文字となっていることを示しました。

    • 例:0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

    HEX形式は、よりコンピューターが扱いやすい形式であって、一般的に私達人間が扱いやすいものではありません。試しにイーサリアムアドレスを暗記したり、書き写したりすれば、その難しさを簡単に実感できるでしょう。

    またこのイーサリアムのアドレス形式は、チェックサムと呼ばれるアドレスが間違えているのかどうかを検証するための文字列を含みません。

    これは後ににICAPやENSといった仕組みによってチェックサムを追加したり、より人間に読みやすい形式に見せたりする意図が設計時にあったために、あえてそのようなチェックサムの追加がなされなかったのです。

    ICAP

    ICAP(Inter exchange Client Address Protocol)はイーサリアムのアドレスの誤りを検出可能にし、国際送金の規格に準じてアドレスを表記する方法として提案されました。ICAPは、銀行間で取引する際にその所在地や、支店、口座番号といった情報を特定する国際標準規格であるIBANコードを参考に設計されています。対応したICAPコードはIBANコードと互換性があります。

    IBANコード

    IBANコードは最大で34文字のローマ字と数字からなる文字列です。ただし、最初の2文字は所在国を示すローマ字2文字、次の2文字は送金情報の誤りを検出するチェックサムに使われることが決まっています。

    例えばイスラエルにある銀行では、IBANコードは以下の様になります。

     

    例: IL## AAA BBB CCCCCCCCCCCC

    IL…イスラエルを表す国名コード

    ##…チェックサム

    AAA…銀行コード

    BBB…支店番号

    CCC …口座番号

     

    IBANコードを採用している国同士での送金であれば、IBANコードを使用することによって常に正しく送金を行うことができます。

    3つのICAPコード方式

    ICAPコードはIBANコードのイーサリアム版と言えます。全てのICAPコードは、どこの国にも属さないイーサリアムのアドレスを意味するXEから始まるという特徴があります。XEのEはEthereum、Xはextendedを表しています。

    ICAPコードはその形式でDirect、Basic、Indirectの3つの方式があります。この中で、IBANコードとして使用することができるものは、DirectとIndirect方式のICAPコードの2つです。Basic方式は、IBANとの互換性も無く、チェックサム機能も無いため事実上利用する価値はあまり無いものです。よって以下でDirectとIndirect ICAPコードについて紹介します。

    Direct ICAPコード

    この方式でのICAPコードは、数字とアルファベットを合わせた36種類の文字で表すことができ、最大で34文字となります。Direct ICAPコードの例を示します。

     

    例: XE60HAMICDXSV5QXVJA7TJW47Q9CHWKJDA(34文字)

     

    最初の”XE”はイーサリアムを表しており、次の”60”はチェックサム、それより後ろのHAMI….KJDの部分がイーサリアムアドレスを示しています。

    元々のHEX形式のイーサリアムアドレスとの大きな違いは、チェックサムが付いていることによって、アドレス入力時の誤り検出ができることです。

    またアドレスの部分が通常のアドレスと少し異なる形をしていることに気付きましたか?HEX(16進数)形式のイーサリアムアドレスでは、使用できる記号は数字およびa〜fまでのローマ字でした。Direct ICAP形式では、数字と全てのローマ字を表記に使用することが可能です。Direct ICAP形式ではbig-endianという方式で、HEX形式からローマ字と数字の形に変換されています。

    これはIBANの形式に合わせて変換されていますが、依然として人間が読みやすい形にはなっていません。

    Indirect ICAPコード

    Indirect ICAPコードは、より人間が読みやすい形式を意識した方式です。この方式もXEから始まり、2文字のチェックサムと続きますが、その後にアドレスの代わりになる任意の16文字の文字列(通常ある単語など)が続きます。例を示します。

     

    例: XE##ETHXREGKITTYCATS(20文字)

     

    ここでチェックサムの##部分の以降は、資産の種類を示す3文字(ETH)、4文字のネームーサービス名(XREG)、そして9文字のアカウント名(KITTYCATS)となります。この形式であれば、HEX形式に比べて人間でも覚えやすい形になっているかと思います。

    しかし、このアドレスのKITTYCATSの部分から、実際の送金先のHEX形式のアドレスを明らかにすることはできません。Indirect形式では、事前にKITTYCATSというアカウント名に紐付いたイーサリアムアドレスをどこかに登録しておく必要があります。

    事前に9文字の文字列とそれに対応するアドレスが対応したデータベースがあり、送金時にはこのデータベースを参照することによって、文字列に紐付いた送金先にイーサリアムを送金できることになります。

    ICAPコード利用現状

    IBANコードに準拠した形でチェックサムによる誤り訂正機能を持っているICAPコードですが、あまり使用されていないのが現状です。Direct ICAPコードは対応したウォレットを使うことによって生成することができますが、ICAPコードによる取引が可能な取引所はKrakenなど極一部に限られています。

    またIndirect ICAPコードについては、文字列とイーサリアムアドレスを結びつけるデータベースをどのように作るのかという現実的な部分は提示されていません。

    現状でもICAPの定義には曖昧な部分が多く、これはEIP-57, 70, 77で議論されています。とはいっても現在でも議論open状態として進行中のEIP-77についても、最後の投稿が2016年の3月であり、あまり活発な議論は進んでいないようです。

    Indirect ICAPコードはイーサリアムアドレスをより人間が扱いやすい形にするという取り組みの試験的なものとして示されましたが、現在ではこの考え方をより一般的に拡張したENS(Ethereum Name Service)による解決が期待されています。

    ENS

    ENS(Ethereum Name Service)は、イーサリアムのアドレスに対してある文字列を指定することで、送金時にその文字列を使って送金処理を実現させる技術です。

    普段私達がインターネットブラウザからホームページにアクセスする際には、URLを使いますが、これはDNS(Domain Name Service)と言って、インターネット上の住所であるIPアドレスに対してURLという形の文字列を指定することによって実現しています。ENSはイーサリアムアドレスにおける、DNSのようなサービスだと言えます。

    ENSを使うことによって、

     

    • 例:0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

     

    このようなHEX形式のイーサリアムアドレスを、

     

    • 例:consensysmediajapan.eth

     

    のような7文字以上のドメイン名として分かりやすい形に置き換える事が可能になります。ENSではチェックサムの様な機能はありませんが、アドレスに対して好きな文字列を選ぶことができます。人間が扱いやすい単語などを使うことができるため入力時の誤りを減らすことが期待できます。

    ENSの取得手順

    あるアドレスとそれに対応するドメイン名の関係は、イーサリアムブロックチェーン上のスマートコントラクトに保存されます。この登録は、MyEtherWalletなどから誰でも行うことができます。

    ENSの取得は大きく分けて以下の手順になります。ドメイン名の取得は合計5日間のオークションによって行われます。オークションは、入札価格を公開しない3日間と公開できる2日間に分かれています。以下にその手順を示します。

     1・準備

    ドメイン名と紐付けるイーサリアムアドレスを選択します。そして、自分がオークションで支払える最大額のETHを指定します。(この時、オークションのトランザクションを処理するために0.01ETHが追加で必要です。)

     2・オークションの開始(72時間/3日間)

    あなたは、名前と入札額を提示しますが、この情報はこの段階では公開されません。

     3・入札額の開示(48時間/2日間)

    あなたは、この期間で自分の入札額を公開することができます。入札額を公開した場合、もしこのドメイン名を落札した際に、2番目に高い入札額と自分の入札額の差額の返金を受けることができます。

     4・オークションの最終処理

    合計5日間のオークションが終了すると、オークションでの落札者は最終処理を行い落札したドメインを自分のものに確定させます。3.にて入札額を公開していた場合は、差額の返金を受けることができます。もし入札者が自分だけだった場合には、トランザクションの処理にかかる0.01ETH以外の全てのETHが返金されることになります。

    取得したENSの有効期限

    このようなオークションプロセスによって落札したENSは、落札から1年間、所有権が有効になります。落札から1年が経過した時、落札者は所有権を放棄することでオークションによってロックアップしたETHの返却を得ることができます。

    また、現段階で取得したENSには1年の期限が設けられていますが、今後永続的に取得したENSを保持できるようなシステムも開発途中です。有効期限が存在しないシステムに移行した場合には、既に所有している期限付きのドメインを、所有権が無期限なシステムに登録し直す事ができるようです。

    ENSの価値

    企業を立ち上げる際、”屋号” つまり会社名はとても重要なものです。同様にインターネット上で何かしらのサイトを立ち上げる際にも、取得したドメインの名前はサイトの認知度合いに何らかの影響を持つでしょう。もし今後、イーサリアムによる支払いやスマートコントラクトを利用したサービスが一般化したならば、イーサリアムアドレスのドメイン名もまた大きな価値を持ってくるでしょう。

    既にこのENSの取得競争は始まっています。Cointelegraphによると既に、仮想通貨の取引所を意図するexchange.ethが6,660ETH、foundation.ethが300ETHなど、非常に高額な入札が行われています。

    まとめ

    この2回の連載記事では、イーサリアムのアドレスにまつわる誤り訂正技術や、アドレスをより人間にとって可読性が高い形式に置き換える技術について紹介しました。現在は、まだ一般社会でブロックチェーンを利用したDappsが浸透してはいませんが、今後Dappsやイーサリアムを用いた支払いが一般的になったとき、このような誤りを訂正する技術がより重要になってくるでしょう。

    コメントする

    メールアドレスが公開されることはありません。