NEMアドベントカレンダーの8日目にアポスティーユの正体という記事がありましたが、NEMのNanoWalletでアポスティーユした際にできるntyファイルから、NEMのアポスティーユの正体を追ってみようと思います。
ntyファイルとは
NanoWalletでアポスティーユを作成すると、NEMsigned -- Do not Edit -- yyyy-MM-dd.zip
というファイルが作成されます。この中身を展開すると、元ファイル(ファイル名にtxを付与されている)、証明書、そしてntyファイルの3つが入っています。
このうちntyファイルはJSON形式でアポスティーユした時のメタデータが格納されています。
ntyファイルの中身
ntyファイルを開くと以下のようなJSONになっています。(※見やすいように整形しています)
{
"data": [
{
"filename": "multi sig private.txt",
"tags": "multi sig private test",
"fileHash": "fe4e5459835d24a43accf6f4362ee6280b1f2b54c8dea3769722ba9b4c41606ade7cde44295a9602a9c1db5dcce7f79612d1f5df92419244308046687e9ade942953a7590c",
"owner": "NDJ2I2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"fromMultisig": "NCXIZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"dedicatedAccount": "NATZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"dedicatedPrivateKey": "12d10eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"txHash": "8ee33eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"txMultisigHash": "3eb0feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"timeStamp": "Sun, 10 Dec 2017 03:48:33 GMT",
"$$hashKey": "object:224"
}
]
}
各要素は中身は以下の通りです。
-
filename
: アポスティーユしたファイルの元ファイル名 -
tags
: NanoWalletのアポスティーユ登録画面のタグ入力欄に入力した値 -
fileHash
: アポスティーユしたファイルのハッシュ値 -
owner
: アポスティーユしたアカウントのアドレス -
fromMultisig
: マルチシグアドレスでアポスティーユした場合、そのアドレス。(マルチシグアドレスを使っていない場合、空文字) -
dedicatedAccount
: 公証アカウントのアドレス。 -
dedicatedPrivateKey
: 公証アカウントの秘密鍵。(パブリックなアポスティーユなアポスティーユの場合、None (public sink)
と表示される) -
txHash
: アポスティーユをしたときのトランザクションハッシュ -
txMultisigHash
: マルチシグアドレスでアポスティーユした場合したときの、マルチシグアドレスで生成したトランザクションハッシュ -
timeStamp
: アポスティーユをした時のタイムスタンプ
考察
アポスティーユの正体の記事と照らし合わせて見ると分かるのですが、filename
、tags
はNEMのブロックチェーン上には保存されていません。
アポスティーユには、共通の公証アカウントを用いるパブリックと、公証アカウントを個別に生成することで譲渡・分割可能にするプライベートの2種類あります。プライベートの場合のみ、dedicatedPrivateKey
が表示されています。譲渡・分割可能なプライベートのアポスティーユは公証アカウントをマルチシグ化して、マルチシグアドレスに属する人の追加、削除によって権利を保持するアカウントの移動を実現させています。
※公証アカウントの秘密鍵は初期状態ではマルチシグ化されていないため、プライベートのアポスティーユの証明書を公開するときはその部分を隠すなど注意してください。
ntyファイルを追ってみることによって、アポスティーユがNEMのエコシステムを上手く利用してできているのか、理解が進みました。
個人的にはパブリックなアポスティーユはともかく、譲渡・分割可能なアポスティーユは概念はよいのですが、NanoWalletのUXはかなり使いづらいので、この辺を上手く工夫したらもっと使われるのではないかと思っています。