solidity 왕기초 및 Remix 사용법

HyeongA·2023년 5월 2일
0

Blockchain_dev

목록 보기
1/20
post-thumbnail

📝 Solidity

1. 변수 (상태변수, 지역변수, 전역변수)

  • 지역변수 : 지역(function)안에서만 작동 및 참조할 수 있는 변수
  • 상태변수
    : 코드 전체에서 참조 활용이 가능함 (흔히 다른 언어에서 전역변수라고 불림)
    : 체인에 같이 들어가는 요소 중 하나
    : 변경하려면 가스비가 필요함
  • 전역변수

2. 함수

  • public : write ; 상태변수 변경가능 ; 가스비 발생 O
  • view : read ; 상태변수 읽을 수만 있음; 지역변수는 변경 가능 ; 가스비 X
  • pure : only 지역변수, 상태변수는 읽지도 못함 ; 가스비 X
    ( pure 쓰는 경우 : 상태변수 수정이 없고, 상태변수 읽을 일도 없을 때 사용 )

3. 가스비

  • 함수 하나 하나를 사용할 때도 가스비가 발생함
    (코드를 잘못 짜면 가스비가 많이 드는 서비스가 될 수 있음)
  • remix UX/UI에서 가스비 사용 유무를 나타내줌
    : view와 pure 함수는 state variable(상태변수)의 값을 변화시키지는 않음 → gas비 안씀

💻 Remix IDE

  • Compiler
    : 컴파일러의 버전을 정할 수 있음
    : 선택한 컴파일러가 코딩에서 선언한 버전보다 더 구식이면 오류 발생
    (선언한 버전보다 낮은 버전에선 작동 안 함 (높은 버전에선 작동))


  • 컨트랙트 배포하기
    순서 : 코드작성 → compile 완료 → 배포(deploy)

💻 Example Code

// 주석으로 License선언 (없으면 컴파일 오류발생)
// SPDX-License-Identifier: GPL-3.0   
pragma solidity >=0.8.2 <0.9.0;       //compiler선언
//StoreandReturn이라는 contract작성
contract StoreandReturn {
    uint a; // 숫자형 변수 a  ; 상태변수
    uint b; // 숫자형 변수 b
    uint c=2; //숫자형 변수c, 값은 2
     // 함수이고, 이름은 getA, input값은 없음, public 하고 view 함, output 값은 1개 있음, uint 형
    function getA() public view returns(uint){
        return a;
    }    
    //input 값으로 uint 형인 _a를 받아옴; a의 값을 변경하기 때문에 view사용 못 함(gas비 발생)
    function setA(uint _a) public {
        a= _a;    //_a ; 지역변수
    }    
    function setAasFive() public {
        a=5;
    }
    //output값 2개, 둘다 uint형
    function getAB() public view returns(uint,uint){
        return(a,b);
    }
    //  Q. 숫자 _aa와 _bb를 받아서 2개의 숫자를 더한 결과값을 반환하는 함수 Add를 구현하세요
    function Add(uint _aa, uint _bb) public pure/*상태변수는 하나도 필요없을 때 pure*/ returns(uint) {
        return _aa+_bb;
    }
    //  Q. 숫자 a와 b를 갖고와서 이 2개의 숫자를 더한 결과값을 반환하는 함수 Add2를 구현하세요
    function Add2() public view/*상태변수를 갖고오기 때문에 view로*/ returns(uint) {
        return a+b;
    }
}
profile
Solidity | React | Python

0개의 댓글