문법(변수, 함수)

워뇽쿤·2022년 9월 19일
0

Solidity

목록 보기
1/10
post-thumbnail

1. 변수

1.1. 상태변수

  • 컨트랙트 저장소(이더리움 블록체인)에 영구적으로 저장되는 변수를 말함
  • 컨트랙트 최상단에 선언
pragma solidity ^0.8.14;
contract SimpleStorage{
	unit storedData; // 상태변수 선언
    unit storedData2 = 20; // 상태변수 선언 및 초기화
}
  • 상태변수 접근 수준
    • internal (default)
      • 컨트랙트 및 해당 컨트랙트 상속받은 컨트랙트 접근 가능
      • 외부에서 엑세스 불가
    • public
      • 컨트랙트 내에서 직접 퍼블릭 상태 변수 사용 가능
      • 외부 컨트랙트나 클라이언트 코드에서 getter함수로 접근 가능
    • private
      • 동일한 컨트랙트 멤버만 접근 가능
    • constant / immutable
      • 선언될때 값을 할당

1.2. 지역변수

  • 함수가 실행될 때까지만 존재하는 변수
pragma solidity ^0.8.14;
contract SimpleStorage{
	function simpleFunction() public pure returns(unit){
    unit a; // 지역변수 선언
    unit b = 1; // 지역변수 선언 및 초기화
    a = 1;
    unit c = a + b;
    return c
    }
}

1.3. 전역변수

  • 다른 개발 언어들과는 다른 의미임
  • 전역변수는 블록체인 안에 특수 변수를 말함 (지정되어있음)
function f(unit start, unit daysAfter) public {
	if (block.timestamp >= start + daysAfter * 1 days){
      // block.timestamp 가 전역변수 (미리 지정되어있는 기능이 있는 변수)
    } 
}
  • block : 블록에 대한 정보를 가지고 있음
  • msg : 컨트랙트를 시작한 트랙잭션 콜이나 메시지 콜에대한 정보를 가지고 있음
  • tx : 트랜잭션 데이터를 가지고 있음
  • This : 현재 컨트랙트를 참조한다

함수

  • 일반 문법의 함수와 비슷함
  • 함수 사용 방법
// 함수 선언
function 함수이름 (파라미터 형식1 파라미터1, 파라미터 형식2, 파라미터2, ...){...}
// 리턴 값이 있는 경우
function 함수이름 (파라미터 형식1 파라미터1,...) returns (반환형식) {...}

view, pure

  • view : 함수 밖의 변수들을 읽을 수 있으나 변경 불가능
unit256 public a = 1;
function read_a() public view returns(unit256){	
	return a+2; // view는 함수 밖의 a를 읽을 수 있지만 가존 a의 값에는 영향을 끼치지 않음
}
  • pure : 함수 밖의 변수들을 읽지 못하고, 변경도 불가능 (함수 내에서만 변수사용)
function read_b() public pure returns(unit256){	
	unit256 b = 1;
    return b+2; // pure는 함수 내에서만 사용할 때 
}
  • view, pure 둘다 명시 안할 시 함수 밖의 변수들을 읽어서, 변경을 해야함
unit256 public a = 1;
function read_c() public returns(unit256){	
	a = 3;	// view, pure 둘다 사용 안할시 외부의 변수를 가져오면 값을 재할당 해줘야함
    return a+2; 
}
  • 컨트랙트 소멸
selfdestruct(컨트랙트 생성자의 주소);

함수제어자(modifier)

  • 비슷한 역할을 하는 코드를 모아서 만든 특별한 형태의 함수
  • 함수 선언에 modifier를 추가하여 함수에 변경자를 적용 할 수 있음
    • 변경자 : 함수를 실행하기 전, 요구 조건을 만족하는지 확인하는 작업
    • 변경자는 _; 로 함수를 실행함
  • 함수가 돌다가 _; 를 만나면 변경자 함수를 동작시키고 변경자 함수가 종료되면 그다음음 함수를 계속 실행한다.
profile
QA 성장기

0개의 댓글