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
アカウントの場合は、基本編と同じ手順で送金できますが、
bob
と alice
の場合は、マルチサインになるため、やり方が異なります。後ほど別記事で書きます。
継承関係
権限設定する時に、最後にパラメータ parent
があります。
これを使うことで、カスタマイズ権限などの継承元を指定できます。
デフォルト active
になっています
まとめ
権限設定を活用することで、アカウントの権限を他のアカウント、つまりスマートコントラクトに任せることができます。