LoginSignup
0
0

More than 5 years have passed since last update.

EOS のアカウント・ロール・権限 上級編

Last updated at Posted at 2018-12-04

EOS のアカウント・ロール・権限 基本編 で基本的な使い方を紹介しました。
実は、基本設定以外に、他の指定方法によって、

  • 複数キーペアと重み係数を指定し、マルチサインにする
  • 他のアカウントを指定し、権限を委譲する

こともできます。

複数キーペアを指定する

cleos set account permission コマンドで権限を設定する時は、json フォーマットを使うことで、もっと細かく指定することが出来ます。
以下 help 説明のように、authority パラメータには json フォーマットで指定することが出来ます。

cleos set account permission -h
set parameters dealing with account permissions
Usage: /opt/eosio/bin/cleos set account permission [OPTIONS] account permission authority [parent]

Positionals:
  account TEXT                The account to set/delete a permission authority for (required)
  permission TEXT             The permission name to set/delete an authority for (required)
  authority TEXT              [delete] NULL, [create/update] public key, JSON string, or filename defining the authority (required)
  parent TEXT                 [create] The permission name of this parents permission (Defaults to: "Active")

具体的には、閾値・キーの配列・アカウントの配列のフォーマットで指定出来ます。

{
  "threshold"       : 2,
  "keys"            : [{ "key": "key1","weight": 1 },{ "key": "key2","weight": 1 },{ "key": "key3","weight": 2 }],
  "accounts"        : []
}

上記の場合は

  • key1 の重み係数が 1 で、key2 の重み係数が 1 となっています
  • 閾値が 2 になっているので、 key1 と key2 同時でサインするだけその権限で実行出来ます
  • 一方で、key3 のほうは、重み係数が 2 なので、1人だけ実行出来ます

勿論、key1 と key2 の重み係数を 2 にしておけば、片方だけで実行できるようになります。

他のアカウントを指定する

また、キーではなく、アカウントを指定することで、他のアカウントに権限を委譲することができるようになります。

アカウントで指定するメリットは

  • キーは人間が読めないので、誰なのかは覚えられない、識別できない;アカウントの場合は、人間が読めるので、識別しやすい
  • アカウントで指定するので、仮にそのアカウントが自分のキーを変更しても、権限の設定を変更しないで済む

があります。

{
  "threshold"       : 2,
  "keys"            : [],
  "accounts"        : [
    {
      "permission" : { "actor" : "alice", "permission"  : "active" },
      "weight"      : 1
    },
    {
      "permission" : { "actor" : "bob", "permission"  : "active" },
      "weight"      : 1
    },
    {
      "permission" : { "actor" : "carol", "permission"  : "active" },
      "weight"      : 2
    }
  ]
}

内容は上のキー指定と同じになりますが、人間がすぐ読めます

  • bob と alice は、二人一緒でしか実行出来ません
  • carol は、1人で権限を実行出来ます

上記は全部 active で設定していますが、勿論、基本編のように、カスタマイズの権限でも行けます

carol アカウントの場合は、基本編と同じ手順で送金できますが、
bobalice の場合は、マルチサインになるため、やり方が異なります。後ほど別記事で書きます。

継承関係

権限設定する時に、最後にパラメータ parent があります。
これを使うことで、カスタマイズ権限などの継承元を指定できます。
デフォルト active になっています

まとめ

権限設定を活用することで、アカウントの権限を他のアカウント、つまりスマートコントラクトに任せることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0