Decentralization

Solidity로 간단한 인사말 스마트 계약 만들기

이영훈닷컴 2025. 3. 15. 17:48
728x90

오늘은 Solidity를 사용하여 간단한 스마트 계약을 작성해 보았습니다. 이 스마트 계약은 인사말을 저장하고, 이를 조회하거나 변경할 수 있는 기능을 가지고 있습니다. Solidity의 기본적인 문법과 개념을 익히기 좋은 예제입니다.

계약 내용

이 스마트 계약은 다음과 같은 두 가지 기능을 제공합니다:

  1. 인사말 조회: 계약이 생성될 때 설정된 인사말을 조회할 수 있습니다.
  2. 인사말 변경: 계약의 인사말을 새로운 인사말로 변경할 수 있습니다.

코드 설명

// SPDX-License-Identifier: MIT 
pragma solidity ^0.5.8;  // Solidity 버전 지정

// Greeter 계약 정의
contract Greeter {
    address creator;  // 계약 생성자의 주소를 저장하는 변수
    string greeting;  // 인사말을 저장하는 변수

    // 생성자 함수: 계약을 배포할 때 인사말을 초기화
    constructor(string memory _greeting) public {
        creator = msg.sender;  // 계약을 배포한 사람의 주소를 creator 변수에 저장
        greeting = _greeting;  // 전달받은 인사말을 greeting 변수에 저장
    }

    // 현재의 인사말을 반환하는 함수
    function greet() public view returns (string memory) {
        return greeting;  // 저장된 인사말을 반환
    }

    // 새로운 인사말로 변경하는 함수
    function setGreeting(string memory _newgreeting) public {
        greeting = _newgreeting;  // 전달받은 새로운 인사말로 greeting 변수 값을 변경
    }
}

코드 분석

  1. Solidity 버전:
    • 코드 상단에서 pragma solidity ^0.5.8;을 사용하여 Solidity 버전을 지정합니다. 이는 우리가 사용하는 Solidity의 버전이 0.5.8 이상이어야 함을 의미합니다.
  2. 계약 변수:
    • address creator: 계약을 배포한 사람의 주소를 저장하는 변수입니다. msg.sender는 계약을 배포한 주소를 나타냅니다.
    • string greeting: 계약에 저장되는 인사말을 저장하는 변수입니다. 계약을 배포할 때 초기화됩니다.
  3. 생성자(constructor):
    • 계약이 배포될 때 한 번 실행되는 생성자 함수입니다. 생성자에서는 creator 주소와 greeting을 초기화합니다.
    • msg.sender를 사용해 계약을 배포한 사람의 주소를 creator에 저장하고, _greeting을 사용해 초기 인사말을 설정합니다.
  4. greet() 함수:
    • greet() 함수는 현재 계약에 저장된 인사말을 반환하는 함수입니다. public view로 설정되어 있어 외부에서 호출할 수 있으며, 상태를 변경하지 않는 읽기 전용 함수입니다.
  5. setGreeting() 함수:
    • setGreeting() 함수는 계약에 저장된 인사말을 새롭게 변경하는 함수입니다. 외부에서 새로운 인사말을 전달받아 이를 greeting 변수에 저장합니다.

실행 과정

  1. 계약 배포:
    • 계약을 배포할 때 인사말을 전달하여 greeting을 초기화합니다. 예를 들어, "Hello, Blockchain!"을 전달하면, 계약이 배포되면서 인사말이 설정됩니다.
  2. 인사말 조회:
    • greet() 함수를 호출하면 설정된 인사말을 반환받을 수 있습니다. 예를 들어, "Hello, Blockchain!"이 반환됩니다.
  3. 인사말 변경:
    • setGreeting("New Greeting")과 같이 새로운 인사말을 설정하면, greeting이 "New Greeting"으로 변경됩니다.

느낀 점

이번 예제를 통해 Solidity에서의 상태 변수, 생성자, 함수 호출 등의 기본적인 개념을 실습할 수 있었습니다. Solidity는 스마트 계약을 작성할 때 사용하는 언어로, 블록체인 상에서 자동으로 실행되는 계약을 만들 수 있게 해줍니다. 인사말 계약처럼 간단한 계약을 작성하면서, Solidity의 동작 방식과 구조를 잘 이해할 수 있었습니다.

앞으로 더 복잡한 스마트 계약을 작성하면서 다양한 기능들을 추가해 볼 계획입니다. 스마트 계약의 보안과 최적화에도 신경을 써야 할 부분이 많으니, 차근차근 공부해 나가야겠습니다!

728x90