728x90

 

Solidity는 이더리움 가상머신을 대상으로 설계된 언어이며 Smart Contrat  을 구현하기 위한 언어이다.

Solidity을 이해하려면 Smart Contrat 이 무엇인지 먼저 알아야되고, Smart Contrat  을 이해하기 위해서는 블록체인이 뭔지 알아야된다. (추가로 EVM 까지...)

 

도움받은 자료(블록체인과 스마트컨트랙을 이해하는데 도움이 됨. 본인은 사실 코인투자를 해왔기에 이미 두루뭉실하게 알고있었음) 

1.  https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE10531916

 

블록체인 기술과 활용 연구 | DBpia

이새봄, 박아름, 송재민 | 한국컴퓨터정보학회논문지 | 2021.2

www.dbpia.co.kr

2. https://goldsystem.tistory.com/347

 

스마트컨트랙 제대로 이해하기

정의 스마트 계약 또는 스마트 컨트랙이란 블록체인 기반으로 금융거래, 부동산 계약, 공증 등 다양한 형태의 계약을 체결하고 이행하는 것을 말합니다. 블록체인 2.0이라고도 합니다. Hashgraph에

goldsystem.tistory.com


Solidity 언어 특징

  • 절차적 프로그래밍 언어(C++ , 자바스크립트, 자바)
  • 정적타입 (자바와 비슷) : 컴파일 시에 타입이 결정, 오류가 있다면 컴파일 에러 발생
  • 객체 지향언어
  • 확장자 : .sol 

예제 코드 

실습환경 : https://remix.ethereum.org/ 

Compiler : 0.8.24

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SimpleStorage {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public view returns (uint) {
        return storedData;
    }
}

SPDX-LIcense-Identifier

스마트 컨트랙트에 대한 신뢰를 높이고, 저작권 문제를 해소하기 위해 코드 최상단에 꼭 SPDX라이센스를 주석으로

명시해야된다. 

https://spdx.org/licenses/

 

SPDX License List | Software Package Data Exchange (SPDX)

SPDX License List The SPDX License List is an integral part of the SPDX Specification. The SPDX License List itself is a list of commonly found licenses and exceptions used in free and open or collaborative software, data, hardware, or documentation. The S

spdx.org

 

SPDX(Software Packgae Data Exchange)는 소프트웨어 명세서에 대한 개방형 표준

SPDX는 소프트웨어와 관련된 구성요소,라이센스,저작권,보안 참조 및 기타 메타데이터의 표현을 허용하며

원래목적은 라이센스 준수를 개선하는 것이었고 이후 공급망 투명성과 같은 추가 사용사례를 촉진하기 위해 확장됨


Pragma

컴파일러의 특정 기능을 활성화 하는데 사용됨

위 예제코드에서는 solidity 버전을 0.4.16 ~ 0.9.0을 사용한다고 설정 


Contrat

객체지향언어(Java)에서 class와 유사 위 예제코드에서는 Contrat SimpleStorage를 만들고, 이 Contract 안에는

storedData라는 상태변수(storage에 저장되어있는 데이터)와  set과 get의 함수들이 정의되어있다.


상태변수(State Variables)

Contract 내부에서 선언된 변수 중 function 외부에서 선언된 변수를 상태변수(state Variables)라고 함

contract storage에 저장됨 -> 모든 function이 접근가능, function이 변경한 값은 계속해서 저장됨,,

 

1. Storage : 블록체인에 기록되는 영구적으로 값이 유지되는 데이터 영역

2. Memory : 프로그램이 동작되는 동안에만 값이 저장되고, 종료되는 값이 사라짐


값형 데이터 타입 (Value types)

  • Boolean
    true(default)/false
  • 정수(int, uint)
    signed integers: 부호 있음
    unsigned integer: 부호 없음
    8bit ~ 256bit까지 지원 (예: int8: -128 ~ 127, uint16: ~65,535)
  • Byte
    데이터를 바이너리 형태로 저장하기 위해 byte타입을 지원함.
    bytes1 ~ bytes32까지 정해져 있음.
    크기가 정해져 있기 때문에 fixed-sized byte array라고도 불림.
    정해진 바이트 크기와 다르면 에러가 남.
  • cf.) bytes 타입: dynamically sized byte array - 참조형(reference) 타입임
  • 주소(Address)
    20byte 크기의 이더리움 어드레스
    balance property를 갖고 있어 이더 잔액을 확인할 수 있음.
    이더를 옮기는 transfer, send 메소드 지원(address.transfer(amount), address.send(amount))
  • 열거형 (Enumerations)
    내부적으로는 정수 값으로 구현됨.

 

참조

.https://velog.io/@mae-zung/Solidity-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95

 

.https://docs.soliditylang.org/en/v0.8.24/introduction-to-smart-contracts.html#simple-smart-contract

 

.https://goldsystem.tistory.com/347

 

728x90

+ Recent posts