TIL

스마트 컨트랙트와 솔리디티 언어

개발따라김양 2023. 5. 15. 15:50

1. 스마트 컨트랙트 코드

  • 블록체인 오퍼레이션에 특화된 전용 언어 중 하나인 솔리디티를 사용
  • 이더리움 재단이 처음 도입, 하이퍼레저와 같은 다른 블록체인 플랫폼도 이를 사용
  • 컨트랙트 코드를 작성하는 것은 블록체인 기반의 기록을 정밀한 명령을 만드는 것
  • 어카운트 주소, 규칙 사양, 트랜잭션 되돌림과 같은 블록체인에 특화된 특정 기능이 언어에 내장되어 있어야 함
  • 여러 블록체인 노드에서 실행될 때 일관성을 유지하기 위해 제한된 샌드박스 환경에서 실행 됨

 

2. 솔리디티 언어

  • 스마트 컨트랙트를 코딩하기 위한 객체지향 고수준 언어
  • C++, 파이썬, 자바스크립트 등의 영향을 받음
  • 정적 타입의 언어
  • 상속, 라이브러리, 사용자 정의 타입 등을 지원함

 

3. 스마트 컨트랙트 코드 예시

// SPDX-License-Identifier: MIT

//사용한 언어의 버전 지정
//언어의 버전과 컴파일할 때 사용할 버전을 일치시키기 위함
//필수구문!!
pragma solidity ^0.8.0;

contract MintAnimalToken is ERC721Enumerable {
    //네임, 심볼
    constructor() ERC721("h662Animals", "HAS") {}

    //animal tokenID => animal Type
    mapping(uint256 => uint256) public animalTypes;

    //Mint function
    //함수 범위 -> public
    function mintAnimalToken() public {
        //지금까지 minting된 양 ERC721 제공
        uint256 animalTokenId = totalSupply() + 1;

        //랜덤으로 나오는 숫자 1~5
        uint256 animalType = (uint256(
            keccak256(
                abi.encodePacked(block.timestamp, msg.sender, animalTokenId)
            )
        ) % 5) + 1;

        animalTypes[animalTokenId] = animalType;

        //ERC721 제공
        //msg.sender -> mint 누른 사람
        //animalTokenId -> 토큰 ID
        _mint(msg.sender, animalTokenId);
    }
}

 

 

출처: <블록체인 인 액션> 비나 라마머시