본문 바로가기
블록체인 및 경제/솔리디티

12. 솔리디티 상속

by kimsfamily 2020. 11. 13.

1. 스마트 계약의 시작, 리믹스 도구 사용해보기

2. 솔리디티 개발환경 구성

3. 스마트컨트랙트 작성 후 배포하기

4. openzeppelin 사용하여 ERC20 토큰 만들기

5. Ropsten 테스트넷에 ERC20토큰 배포하기

6. web3.js 와 자바스크립트를 활용한 간단한 예제

7. 솔리디티 기초, 리믹스로 컨트랙트 작성하기

8. 솔리디티 기본문법 (변수, 데이터타입, 구조체)

9. 솔리디티 배열, 맵핑

10. 솔리디티 조건문, 반복문(if, else, for)

11. 솔리디티 암호화폐 지불(호텔룸 예약하기 프로그램)

12. 솔리디티 상속

13. 리믹스 솔리디티 6.0 버전 ERC20토큰 만들기

14. web3.js 와 자바스크립트를 활용하여 (이더잔액조회) 지갑 만들기

15. 솔리디티 컨트랙트 Web.js 활용하여 웹으로 보여주기




 

이번시간에는 상속에 대해서 살펴보겠습니다.

작성할 코드는 아래와 같습니다.

 

1) owner만 접근할 수 있는 간단한 컨트랙트를 작성합니다.

 

getSecret() 함수 작성합니다.

secret 함수를 호출하는것에 제한을 두려고 합니다.

owner만 접근할 수 있도록 modifier onlyOnwer 및  owner 정보에 대한걸 추가해줍니다.

 

 

2) 위에 작성된 코드를 상속을 통해서 사용하기 위해서 컨트랙트를 분리해줍니다.

아래 코드에 작성된 것 처럼 변경해줍니다.

Mycontract에 작성된 super 키워드를 사용하면, 현재 스마트컨트랙트가 상속받은 부모의 컨트랙트를 접근할 수 있게 해줍니다.

 

- 솔리디티 상속(inheritance)

 상속은 객체지향언어(C++, JAVA등..)에서 사용되는 개념입니다.

 솔리디티에서는 스마트계약간의 상속을 지원합니다.

 상속이란, 부모-자식 관계를 갖는 복수의 계약을 정의하는 과정으로 간략하게 설명할 수 있습니다.

 상속을 해주는 쪽은 부모계약(Parent Contract)

 부모로부터 상속을 받는 쪽은 자식계약(Child Contract)

 부모계약을 (base contract), 자식계약을 파생계약(derived contract)라고도 부릅니다.

 사용법은 위에 예시 코드를 참고하면 됩니다.

 

 

 

 

3) 컨트랙트 작성후, 컨트랙트 불러오기

 Mycontract에 작성된 GetSecret() 부분을 컨트랙트로 재작성합니다.

그리고 Mycontract를 아래와 같이 수정해줍니다.

 

 

 

New키워드.

 - 솔리디티에서 new 키워드는 새로운 계약 인스턴트를 배포 및 생성할 수 있게 해줍니다.

 - 계약을 배포, 상태변수를 초기화, 생성자를 실행, 논스값을 1로 설정합니다.

 - 

 

컴파일, Deploy후 실행해봅니다.

 

Account를 변경한 후 getSecret를 클릭해봅니다.

트랜잭션이 실패하고, must be owner만 가능하다는 에러문을 확인할 수 있습니다.

 

 


소스코드

gist.github.com/gwmccubbin/58daa4df776c6d6b4b7a261db8ecad72

 

아래 사이트 참고하여 재작성된 강의안입니다.

www.dappuniversity.com/articles/solidity

 

반응형

댓글0