본문 바로가기
Develop/Solidity

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

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

 


 

1. 폴백 함수 (fall back function)

우리는 다음과 같은 코드를 사용해서 스마트 컨트랙트에 돈을 보내고, 인출할 수 있게 했었다.

 

 

이러한 방식 이외에도 일반 계정과 같이 스마트 컨트랙트를 이용할 수 있는 방법이 있다.

 

먼저 메타마스크를 열어보도록 하자.

 

 

여기서 보내기 버튼을 확인할 수 있는데, 이 버튼을 사용한다면 특정 함수를 사용하지 않아도 특정 주소로 돈을 보낼 수 있다.

이때 필요한게 폴백 함수이다. (fall back function)

 

폴백함수는 매칭되는 함수가 없거나, 트랙잭션 인코딩 데이터 필드에 일치하는 함수가 없을 경우 사용할 수 있다.

 


특정 함수를 사용하지 않고 스마트 컨트랙트에 돈을 보낸다고 가정해보자.

 

이 경우 함수의 이름은 없고, 돈을 받는 기능을 하기 때문에 다음과 같이 적어주면 된다.

 

 

이처럼 폴백 함수는 인수가 있든 없든 자동으로 사용이 가능하다.

 

 

 


 

2. 생성자 함수

생성자는 스마트 컨트랙트를 배포하는 동안 단 한 번 호출되는 함수이다.

 

이를 통해 배포중에 스마트 컨트랙트에서 특정 항목을 설정할 수 있게 된다.

예를 들어 스마트 컨트랙트를 배포한 사람을 지정한 다음, 그 사람만이 해당 스마트 컨트랙트를 파기할 수 있도록 설정할 수도 있다.

 

 

 


3. view / pure

▶ view

`view` 함수는 무언가를 반환할 수 있다. [읽기 용도로 사용한다.]


다음과 같이 사용했을 경우, 배포 시 getOwner 버튼을 통해 트랜잭션을 시작하기 위해 사용한 계정을 확인할 수 있는 식이다.

 

 

 

▶ pure

pure 함수는 호출은 가능하지만, State 변수와 상호작용하지 않는다.

[ 계산 결과를 출력하는 정도로 사용하는 듯]

 

 

그럼 State 변수는 무엇일까?

State 변수는 스마트 컨트랙트의 특정 상태를 저장하는 변수이다. (클래스 변수라고도 함.)

위의 예제에서 볼 수 있듯이, 실제 스마트 컨트랙트는 이중 무엇과도 상호작용 하지 않고,

퓨어 함수 자체 범위에만 해당한다.