솔리디티 문법 예제ㅣ함수, 연산자

인사이트

솔리디티 문법 예제ㅣ함수, 연산자

2022년 11월 22일

블록체인 이더리움 네트워크에서 스마트 컨트랙트를 개발하는 데 필요한 솔리디티 프로그래밍 언어, 지난 시간에는 변수와 자료형에 초점을 맞추어 살펴보았는데요.

이번에는 솔리디티 프로그래밍 언어 중 함수, 연산자 예제에 대해 함께 알아볼까요?

솔리디티 문법 예제-함수 연산자

솔리디티 문법과 예제 📎

솔리디티는 자료형과 함수를 통해 여러 기능을 개발하고, 이를 통해 트랜잭션을 일으켜 블록체인 상에 데이터를 기록할 수 있게 합니다.

변수는 하나의 특정한 값을 가지는 것이 아니라 변하는 값을 가집니다. 자료형은 크게 값 타입(value type)과 참조 타입(Reference type)으로 나눌 수 있습니다. 값 타입은 값이 할당되거나 함수의 인자로 활용이 되면 해당 값 자체가 복사됩니다. 이어서 함수, 연산자에 대해 살펴보도록 하겠습니다.

함수(Function)

함수는 어떤 기능을 수행하도록 작성된 코드를 말합니다. 함수를 정의하기 위해서는 기본적으로 function 키워드, 함수명, 가시성 지정자 세 가지 요소를 필요로 합니다.

솔리디티 함수 💡

가시성 지정자

가시성 제한자란, 변수나 함수의 공개 범위를 제한하는 것입니다.

어떠한 주체가 특정 변수나 함수에 접근하려고 할 때 변수나 함수에 지정된 가시성 지정자에 의해 접근 여부가 판가름 납니다.
  • public : 외부, 내부 어디서든 접근이 가능합니다.
  • external : 선언된 컨트랙트 외부에서만 접근이 가능합니다.
  • private : 오직 선언된 컨트랙트 내부에서만 접근이 가능합니다.
  • internal : 선언된 컨트랙트 내부와 이를 상속 받은 컨트랙트 내부에서 접근이 가능합니다.

함수의 정의 💡

기본적으로 fucntion 키워드, 함수이름, 가시성 지정자 순으로 작성하여 함수를 정의할 수 있습니다.

만약, 매개변수나 반환해야 하는 리턴 값이 존재하는 경우는 아래와 같이 정의합니다. 함수 이름이 전달해야 하는 매개변수를 작성하고, 반환해야 하는 값의 자료형을 returns 라는 키워드와 함께 작성해 줍니다.

매개변수로 숫자 2개를 받아, 덧셈한 값을 반환하는 함수를 작성하여 컨트랙트를 배포해 보았습니다.

다음과 같이 컨트랙트가 배포되면서, 해당 함수를 사용할 수 있게 되는 것을 확인할 수 있습니다.

함수의 매개변수 및 반환값

솔리디티는 스토리지(Storage), 메모리(Memory), 콜데이터(Calldata), 스택(Stack)이라는 네 개의 영역이 존재합니다.

매개변수 혹은 반환값으로 참조 타입을 사용할 때, 이 네 개의 저장 영역 중 알맞은 하나의 저장 영역을 함께 명시해 주어야 합니다.

스토리지(Storage)

데이터가 영구적으로 저장되는 공간입니다. 

메모리(Memory)

단기적으로만 데이터를 저장하는 공간입니다.

콜데이터(Calldata)

트랜잭션 또는 call함수의 매개변수가 유지되는 읽기 전용 공간입니다.

스택(Stack)

이더리움 가상 머신에서 휘발성을 가진 데이터를 유지 및 관리하는 공간입니다.

모디파이어(Modifier)

위의 예시에서 보면, 우리가 함수를 정의하기 위해 배운 세 가지 키워드 이외에 pure 라는 키워드가 있는 것을 확인할 수 있습니다. 해당 키워드는 모디파이어의 한 종류로, 가시성 지정자 다음에 명시하여 함수 로직에 제약을 주는 역할을 합니다.

(아래 두 가지 경우 모두에 해당하지 않는 경우에는 생략 가능합니다.)

pure

함수 밖에 선언된 변수를 함수 내부로 가져오지 못하게 하는 키워드입니다. 순수하게 함수 내부에서 정의된 변수나 전달받은 매개변수만 사용 가능합니다. 

view

함수 외부의 변수를 읽을 수 있으나, 값을 함수 내부에서는 변경할 수 없습니다.

연산자(Operator)

연산은 수와 식을 이용해 그 규칙에 따라 특정한 값을 산출하는 것입니다. 솔리디티에서는 다섯 가지 연산자를 대표적으로 사용합니다.

솔리디티 연산자 💡

대입 연산자

변수에 값을 할당합니다.

산술 연산자

수학적 연산을 수행하는 데에 사용됩니다.

할당 연산자

대입과 산술이 합쳐진 형태입니다.

비교 연산자

bool 자료형인 true, false로 결괏값을 반환합니다.

논리 연산자

AND, OR, NOT 등의 논리 연산을 수행하며 bool 자료형 true, false로 결괏값을 반환합니다.

드넓은 블록체인 생태계 입문🪐
지금 블록체인 부트캠프에서

지금까지 이더리움 블록체인 네트워크에서 애플리케이션을 만들 수 있는 데에 필요한 가장 기초적인 솔리디티 문법과 예제를 살펴보았습니다.

블록체인에서는 기존에 중앙 집중적인 플랫폼에서 오는 문제점들을 자각하고, 이를 대체할 수 있는 많은 시도들을 하고 있습니다. 오늘 학습했던 내용들을 발판 삼아 더 넓은 블록체인 생태계를 접해 보고, 나아가 시도해 보고 싶었던 탈중앙화 애플리케이션을 개발해 보는 것은 어떨까요? 코드스테이츠 블록체인 부트캠프는 드넓은 블록체인 생태계 입문을 원하는 많은 분들의 도전을 기다리고 있습니다.

 고유진 Blochain Engineer, 양희진 Educational Operation Manager (Blockchain Engineering)
편집 조주연 Content Manager


🚀 블록체인 개발자 커리어의 시작,
블록체인 부트캠프가 더 궁금하다면?

목록 보기

추천글