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);
}
}
출처: <블록체인 인 액션> 비나 라마머시