본문 바로가기
Develop/Solidity

[Solidity] 7. 제어자, 상속, file import

by Tarra 2023. 2. 14.

 


개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.

 

 

[Solidity] 1. 변수

[Solidity] 2. 간단한 송금 시스템 만들어보기 + 계정에 대한 이론

[Solidity] 3. 스마트 컨트랙트 시작, 중단, 정지하기

[Solidity] 4. mapping

[Solidity] 5. 예외처리 (require와 assert)

[Solidity] 6. 생성자, 대비책 함수 (view / pure / getter)

[Solidity] 7. 제어자, 상속, file import

[Solidity] 8. 이벤트 및 반환 변수

 

 


 

- 참고했던 document

▶ Become Ethereum Blockchain Developer

https://ethereum-blockchain-developer.com/000-learn-ethereum/

 

Overview and Pricing - Become Ethereum Blockchain Developer

Learn Blockchain Development - Become Web3 Expert Ethereum-blockchain-developer.com is offering web developers, enterprise developers and software development professionals self-paced video courses with interactive labs to become successful Ethereum Blockc

ethereum-blockchain-developer.com

 

▶ Solidity_doc

https://docs.soliditylang.org/en/v0.8.16/

 

Solidity — Solidity 0.8.16 documentation

1. Understand the Smart Contract Basics If you are new to the concept of smart contracts we recommend you to get started by digging into the “Introduction to Smart Contracts” section, which covers: 2. Get to Know Solidity Once you are accustomed to the

docs.soliditylang.org

 

▶ 솔리디티_doc

https://solidity-kr.readthedocs.io/ko/latest/

 

Solidity — Solidity 0.5.10 documentation

Solidity는 스마트 컨트랙트를 구현하기 위한 컨트랙트 기반의 고급 프로그래밍 언어입니다. Solidity는 C++, Python, 그리고 JavaScript의 영향을 받아 만들어졌습니다. 그리고 Ethereum Virtual Machine(EVM)에서

solidity-kr.readthedocs.io

 


 

 

다음의 코드를 살펴보자.

 

 

해당 스마트 컨트랙트는 기본적으로 토큰을 생성하기 위한 컨트랙트이다.

스마트 컨트랙트의 소유자는 100개의 토큰을 가지고 있으며,

소유자가 아니라면 1이더로 토큰 1개를 구매할 수 있다.

반대로 토큰 1개를 보낸다면 1이더를 받을 수 있는 구조이다.

 

 

만약 100개의 토큰을 모두 사용한다면 어떻게 될까?

소유자는 개수에 상관없이 새로운 토큰을 만들 수 있다.

(해당 예시의 경우 잔액이 0 이하로 떨어지지 않는지 확인하는 검사를 추가하지 않음)

 

 

createNewTokenburnToken 함수를 살펴보면,

유사한 require문이 사용된 것을 볼 수 있다.

이는 소유자가 아닌 경우 토큰에 관여할 수 없다는 것인데.

 

 

이러한 제어자를 중앙 집중 방식으로 관리할 수 있다.

다음과 같이 소유자에 대한 제어자를 함수로 만들어 관리하고,

 

 

(여기서의 _; 는 제어자의 가장 간단한 형태이다. 해당 _; 의 공간에 원하는 코드를 삽입하는 식.)

 

 

중앙 집중 제어자를 사용하기 전.

 

중앙 집중 제어자를 사용한 후,

 

코드가 한결 가벼워진 것을 확인할 수 있다.

 

 

다시 전체 코드로 되돌아가 이번에는 Owner 와 관련된 것들을 다른 스마트 컨트랙트로 분리하고,

이를 불러와 사용해보도록 하자.

 

 

위 처럼 크게 품을 들이지 않고도, 코드를 분리하고 불러와 사용할 수 있으며,

여기서 한 단계 더 나아가, Owner 와 같은 스마트 컨트랙트를 다른 파일로 분리해 관리할 수도 있다.

 

이런 방식으로 다른 파일로 분리해 관리할 경우

파일의 상단에 자바스크립트와 동일하게 import "./Owner.sol" 와 같은 형식으로 불러와 사용할 수 있다.