Solidity 문법

MONA·2025년 7월 27일

나혼공

목록 보기
85/92

Solidity

스마트 컨트랙트를 작성하기 위한 고수준 객체 지향 프로그래밍 언어
이더리움 뿐 아니라 BNB Chain, Polygone, Avalanche 등 EVM 기반 블록체인에서 사용됨

Solidity의 기본 구조

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyContract {
    uint public count;

    function increment() public {
        count += 1;
    }
}
  • pragma : 컴파일러 버전 명시(^0.8.0은 0.8 이상)
  • contract : 스마트 컨트랙트 선언
  • unit : 부호 없는 정수형 (기본:uint256)
  • public : 외부에서도 접근 가능한 변수/함수

기본 문법

변수 선언

uint age = 25;
string name = "Alice";
bool isActive = true;
address owner = msg.sender;

접근 제어자

키워드설명
public누구나 접근 가능
private해당 컨트랙트 내부에서만 사용 가능
internal상속받은 컨트랙트에서도 접근 가능
external외부 호출 전용 (내부 호출 불가)

함수

function add(uint a, uint b) public pure returns (uint) {
    return a + b;
}
  • view : 상태변수 읽기만 가능 (Gas 없음)
  • pure : 상태 변수 접근 불가 (계산만 함)
  • payable : 이더 송금 수신 가능 함수

이더 송수신

// 이더 받기
receive() external payable {}

// 이더 보내기
payable(receiver).transfer(1 ether);

msg 객체

속성설명
msg.sender트랜잭션을 보낸 주소
msg.value전송된 이더 값 (단위: wei)

이벤트와 로그

event Sent(address indexed from, address to, uint amount);

function send(address to, uint amount) public {
    emit Sent(msg.sender, to, amount);
}
  • emit : 이벤트 로그 발행
  • indexed : 특정 값으로 필터링 가능

조건문, 반복문

if (x > 10) {
    // ...
}

for (uint i = 0; i < 10; i++) {
    // ...
}

대부분의 C 계열 문법 사용 가능

profile
고민고민고민

0개의 댓글