認証鍵

この項目では、デプロイ署名時における認証鍵の用途についてやスマートコントラクトからのアクセス方法について説明します。認証鍵の使用チュートリアルをサンプルとしてご活用ください。

アソシエイトキー vs. 認証鍵

アカウントのアソシエイトキーとデプロイの認証鍵の違いについて見ていきましょう。

  • アソシエイトキーは、対象のアカウントに紐づいた公開鍵です。アソシエイトキーについてとどの様にアカウントに紐づいているのかを理解するには、アソシエイトキーとWeight(ウェイト)を読み、二者間によるデプロイへの複数署名(マルチシグ) チュートリアルを進めてみてください。
  • 認証鍵はデプロイへの署名に使用される公開鍵であり、承認されたデプロイにリストとして表示されます。認証鍵は、デプロイを実行したアカウントのアソシエイトキーのサブセットです。
  • ノードがデプロイを受け取る際、デプロイが必要な承認認証鍵を保持しているかブロックに追加される前に確認します。
  • 同じスマートコントラクトを実行した異なるデプロイは、異なる認証鍵を持ちます。
Image showing associated keys and authorization keys

以下は、アカウントのアソシエイトキーをJSONで表示しているサンプルです。

"associated_keys": [
{
    "account_hash": "account-hash-1ab…11",
    "weight": 1
},
{
    "account_hash": "account-hash-2cd…22",
    "weight": 1
},
{
    "account_hash": "account-hash-3de…33",
    "weight": 1
   },
{
    "account_hash": "account-hash-4fg…44",
      "weight": 1
}
 ], ...

以下は、デプロイの認証鍵をJSONで表示したサンプルです。

"approvals": [
    {
      "signer": " 2cd...22",
      "signature": "02df8c...f481"
    },
    {
      "signer": "4fg...44",
      "signature": "02ef21...756a"
    }
]

スマートコントラクトから認証鍵へアクセスする方法

コントラクトコードは、contract_api::runtime::list_authorization_keys関数を呼び出すことで対象デプロイの認証鍵をまとめて取得でき、デプロイに署名した鍵を表すアカウントハッシュのセットを返します。

認証鍵を使用する場面

認証鍵によって開発者はスマートコントラクトをよりきめ細かくコントロール出来るようになります。例えば、開発者がアカウントのアソシエイトキー内のヒエラルキーを定義でき、そのヒエラルキーと既存の実行用認証鍵を用いて対象のオペレーションへのアクセスを制限することができます。

参考ワークフローとして認証鍵の使用チュートリアルを確認してみてください。