티스토리 뷰
Role을 자신뿐만 아니라 3자에게도 부여하여 해당 주소도 민팅이 가능하도록 해보기.
테스트를 위해 발행 주소 말고 하나의 버너지갑이 더 필요함. (미리 만들어두기 메타마스크 계정 생성하면 됨.)
1. 오픈재플린 Wizard 통해 Mintable, Role 체크하여 기본 코딩된 틀 생성
2. Remix IDE에 솔리디티 확장자로 컨트렉 생성
디플로이로 발행 및 verify까지 완료하기.
3. 3자 주소에 Role 부여하기
컨트렉 인증까지 끝나면 Read Contract, Write Contract가 뜬다. 이 중 Write Contract의 grantRole을 통해 제 3자에게 Role을 부여할 것이다.
Wizard로 작성된 코드를 보면 MITER_ROLE의 변수로 keccak256 해시 알고리즘을 통해 "MINTER_ROLE"이라는 변수가 32바이트로 암호화 되어 있다. 이를 해독하기 위해 하기 사이트를 이용.
(https://emn178.github.io/online-tools/keccak_256.html)
16진수의 해시값을 복사해서 grantRole의 role에 넣는다. account에는 준비한 두번째 버너지갑 주소를 넣는다.
0x는 16진수를 의미한다.
트랜젝션 컨펌 확인 후 Read contract의 hasRole을 "MINTER_ROLE"을 넣어 날려보면 true로 바껴있음을 알 수 있다.
4. Role 부여된 다른 지갑으로 민팅해보기.
발행한 주소가 아닌 Role을 부여한 주소로 Connect 후 자신의 주소에 민팅해본다.
amount에 10^18을 곱해주지 못해 해당과 같이 소수점 만큼만 전송됐다. (단위 실수 조심..)
아무튼 Role 부여안된 지갑으로하면 트랜젝션은 모두 실패되고 가스비만 나간다.
이런 Role을 부여하는 방식을 통해 다른 지갑으로도 민팅을 진행할 수 있다.
'블록체인 > 코인' 카테고리의 다른 글
06. ERC20 - 남의 지갑 코인 인출해보기(scam 방지) (1) | 2023.01.01 |
---|---|
05. Polygon - 폴리곤에서 ERC20 contract deploy 해보기 (0) | 2022.12.11 |
03. Remix - github 연동하기 (0) | 2022.12.09 |
02. ERC20 - Mintable로 민팅해보기 (0) | 2022.12.08 |
01. 이더리움 체인(ERC20) 기반 코인 발행해보기 (1) | 2022.12.08 |