主内
ー。。ー。

“사용자 지정 권한 생성 및 연결”

소개

EOS 블록체인에서 계정에 대한 다양한 사용자 지정 권한을 생성할 수 있습니다.사용자 지정 권한은 나중에 계약 활동에 연결될 수 있습니다.이 권한 시스템을 통해 스마트 계약은 유연한 승인 체계를 가질 수 있습니다.

이 자습서에서는 사용자 지정 권한을 생성하고 이후에 권한을 작업에 연결하는 방법을 설명합니다.단계가 완료되면 새로 연결된 권한에 대한 승인이 제공되지 않는 한 계약의 실행이 금지됩니다.이를 통해 계정과 다양한 작업을 보다 세부적으로 제어할 수 있습니다.

큰 힘에는 큰 책임이 따릅니다.이 기능은 계약 및 해당 사용자의 보안에 몇 가지 문제를 야기합니다.사용하기 전에 개념과 단계를 이해해야 합니다.

[[정보 | 학부모 허가]] | 사용자 지정 권한을 생성하면 항상 상위 권한에 따라 권한이 생성됩니다.

사용자 지정 권한이 생성된 상위 권한의 권한이 있는 경우 언제든지 해당 사용자 지정 권한이 필요한 작업을 실행할 수 있습니다.

1단계.사용자 지정 권한 생성

먼저, 에 새 권한 수준을 만들어 보겠습니다. alice 계정:

dune -- cleos set account permission alice upsert YOUR_PUBLIC_KEY owner -p alice@owner

몇 가지 참고할 사항:

1.upsert라는 새 권한이 생성되었습니다. 2.upsert 권한은 개발 공개 키를 권한 증명으로 사용합니다. 3.이 권한은 에서 생성되었습니다. alice 계정

이 권한에 대해 공개 키 이외의 권한 (예: 기타 계정 세트) 을 지정할 수도 있습니다.

2단계.권한 부여를 사용자 지정 권한에 연결

권한 부여를 연결하여 호출합니다. upsert 새로 생성된 권한을 가진 작업:

dune -- cleos set action permission alice addressbook upsert upsert

이 예에서는 승인을 다음과 연결합니다. upsert 주소록 계약에서 이전에 생성된 조치.

3단계.테스트 해보기

를 사용하여 액션을 호출해 보겠습니다. active 허가:

dune -- cleos push action addressbook upsert '["alice", "alice", "liddel", 21, "Herengracht", "land", "dam"]' -p alice@active

아래와 같은 오류가 표시될 것입니다.

Error 3090005: Irrelevant authority included
Please remove the unnecessary authority from your action!
Error Details:
action declares irrelevant authority '{"actor":"alice","permission":"active"}'; minimum authority is {"actor":"alice","permission":"upsert"}

이제, 이번에는upsert 권한을 사용해 보세요. 방금 만든 upsert 권한을 명시적으로 선언하세요: (예: -p alice@upsert)

dune -- cleos push action addressbook upsert '["alice", "alice", "liddel", 21, "Herengracht", "land", "dam"]' -p alice@upsert

이제 작동합니다.

dune -- cleos push action addressbook upsert '["alice", "alice", "liddel", 21, "Herengracht", "land", "dam"] -p alice@upsert
executed transaction:

2fe21b1a86ca2a1a72b48cee6bebce9a2c83d30b6c48b16352c70999e4c20983 144 bytes 9489 us
# addressbook <= addressbook::upsert {"user":"alice","first_name":"alice","last_name":"liddel","age":21,"street":"Herengracht","city":"land",...
# addressbook <= addressbook::notify {"user":"alice","msg":"alice successfully modified record to addressbook"}
# eosio <= addressbook::notify {"user":"alice","msg":"alice successfully modified record to addressbook"}
# abcounter <= abcounter::count {"user":"alice","type":"modify"}