솔리디티 및 블록체인

솔리디티 & 블록체인 02.

채채_._. 2024. 4. 10. 11:42

솔리디티

- 스마트 컨트랙트를 하기 위한 언어.

- Ethereum Virtual Machine 타겟으로 만들어짐.

 

Ethereum Virtual Machine

- 이더리움 노드들이 공유하는 하나의 거대한 가상머신

- 정적 타입

- 여러 기능 중 상속, 라이브러리, 유저 정의 타입 등을 지원.

- 스마트 컨트랙트를 할 번 올리면 수정할 수 없기에 신뢰성 보장.

 

remix.ethereum.org

- 웹 기반 솔리디티 에디터

- remix는 웹 브라우저에서 사용 가능한 IDE

솔리디티 특징

- 반복문과 제어문 사용과 비슷한 튜링완전하다라는 특징을 가지고 있음.

- 특별한 변수를 가지고 있음.

  • msg.sender : 메세지를 보낸 주소
  • msg.value : 메세지를 보낸 값

 

스마트 컨트랙트 구조

// 1. 컨트랙트 선언
contract Sample {
    // 2. 상태 변수 선언
    uint256 data;
    address owner;
    
    // 3. 이벤트 정의
    event logData(uint256 dataToLog);
    
    // 4. 함수 변경자 정의
    modifier onlyOwner() {
        if(msg.sender != owner) revert();
        _;
    }
    
    // 5. 생성자
    function Sample(uint256 initData, address initOwner) {
        data = initData;
        onwer = initOwner;
    }
    
    // 6. 함수(메소드) 정의
    function getData() returns (uint256 returned) {
        return data;
    }
    function setData(uint256 newData) onlyOwner {
        logData(newData);
        data = newData;
    }
}

- 해당 코드는 스마트 컨트랙트 뼈대로 사용 가능.

 

솔리디티 데이터 타입

  • string > UTF-8로 인코딩되어 우리가 알아보기 쉽도록 설정.
  • byte

 

맵핑

- 키와 value의 쌍

 

특징

  • 동적 배열 > 블록체인 상에 db처럼 값을 계속 추가하여 사용할 수 있음. 인터페이스를 사용하여 추상계층 작성 가능.
  • 정적 배열도 사용 가능.

 

Modifier 한정자

- 한정자는 함수 선언에 같이 선언하면 함수를 실행시키는 조건으로 자리할 수 있음.

- 다른 언어의 데코레이터랑 비슷한 역할.

 

데이터 위치

  • storage : 상태변수, 로컬변수로 블록체인 내에 저장되고 메모리는 사용 후 휘발.
  • memory : 로컬 변수

 

솔리디티 문법

- if, else, while, for, break, continue, return,삼항연산자 지원

 

가시성

- 누구나 접근할 수 있는지 정의.

  • external : 다른 컨트랙트나 트랜잭션을 통해서만 호출 가능.f()는 안되고 this.f()로 function을 호출하면 동작.
  • public : 모든 방법으로 접근 가능, 
  • internal : 내부적으로만 접근 가능. 접근을 위해 this를 사용할 수 없음.
  • private : internal과 비슷하지만 상속된 컨트랙트에서는 접근할 수 없음.

 

가스

- EVM에서 무언가 실행될 때 가스 발생.

- 가스는 수수료.

  • 가스 리밋 : 수수료의 한계치, 낮게 설정하면 수수료를 다 써버리게 됨. > 이런 경우 수수료 환불 X
  • 가스 프라이스 : 가스당 가격

 

가스 프라이스 * 가스 사용량 = 수수료

'솔리디티 및 블록체인' 카테고리의 다른 글

솔리디티 06. function 2  (0) 2024.05.08
솔리디티 05. Function 1 - 정의  (0) 2024.05.01
솔리디티 04. Ether/GWei/wei 그리고 Gas  (0) 2024.05.01
솔리디티 03.  (0) 2024.04.17
솔리디티 & 블록체인 01.  (0) 2024.04.03