스마트 계약 초보자를 위한

발행: (2025년 12월 2일 오후 10:09 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Introduction

블록체인 개념을 배우는 것은 어려울 수 있지만, 스마트 계약을 이해하는 것은 그리 복잡하지 않습니다. 이 가이드는 스마트 계약의 기본을 소개하고 Solidity로 작성된 간단한 “은행 금고” 계약을 단계별로 살펴봅니다.

Key Concepts

  • State machine – 블록체인은 상태 머신처럼 동작합니다 (Redux 또는 Context API와 유사) 그리고 상태를 추적하고 업데이트합니다.
  • View – 현재 상태(예: 계약의 잔액)를 확인할 수 있는 읽기 전용 연산입니다.
  • State – 블록체인에 저장된 데이터(예: 잔액, 기록)입니다.
  • Contract – 상태를 읽거나 수정할 수 있는 방식을 정의하는 코드 조각으로, 규칙 집합에 비유할 수 있습니다.
  • Publicpublic으로 표시된 함수나 변수는 네트워크 상의 누구든지 접근할 수 있습니다.
  • Remix – Solidity 계약을 작성, 테스트 및 배포할 수 있는 온라인 IDE입니다.
  • Returns – 함수의 출력 타입을 지정하며, 주로 view 함수에서 사용됩니다.

Example: Vault Contract

아래는 사용자가 이더를 입금하고 출금할 수 있는 간단한 금고 역할을 하는 최소 Solidity 계약입니다.

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

contract Vault {
    uint public initialBalance;
    uint public balance;

    constructor(uint _balance) {
        initialBalance = _balance;
        balance = _balance;
    }

    function checkBalance() public view returns (uint) {
        return balance;
    }

    function deposit(uint amount) public {
        balance += amount;
    }

    function withdraw(uint amount) public {
        require(balance >= amount, "Not enough balance");
        balance -= amount;
    }
}

Contract Overview

  • State variables

    • initialBalance – 배포 시 설정된 초기 잔액을 저장합니다.
    • balance – 현재 금고 잔액을 추적합니다.
  • Constructor
    배포 시 전달된 값을 사용해 initialBalancebalance를 모두 초기화합니다.

  • Functions

    • checkBalance() – 현재 잔액을 반환하는 view 함수입니다.
    • deposit(uint amount) – 지정된 amount만큼 balance를 증가시킵니다.
    • withdraw(uint amount)require를 통해 충분한 자금이 있는지 확인한 뒤 balance를 감소시킵니다.

Important Details

  • 언더스코어(_)가 붙은 매개변수 이름(예: _balance)은 상태 변수와의 이름 충돌을 방지합니다.
  • require 문은 if 검사와 비슷하게 동작하며, 조건이 실패하면 제공된 오류 메시지와 함께 트랜잭션이 되돌아갑니다.
  • 모든 함수가 public으로 표시되어 외부 계정이 호출할 수 있습니다.

Conclusion

Vault 계약은 Solidity의 핵심 개념인 상태 변수, 생성자, view 함수, 상태 변경 함수 및 기본 오류 처리 방식을 보여줍니다. Remix에서 이 예제를 실험해 보면 보다 복잡한 스마트 계약을 구축하기 위한 탄탄한 기반을 마련할 수 있습니다.

Back to Blog

관련 글

더 보기 »

Anaconda 코드에서 IP2Location.io API 사용 방법

Intro Anaconda Code는 Excel 애드인으로, Excel 내에서 직접 Python 또는 R 코드를 실행할 수 있게 해줍니다. 이를 통해 사용자 정의 Python 함수를 만들어 워크시트에서 사용할 수 있습니다.