변수, 함수 접근 제어자 [TIL / 솔리디티]

알락·2022년 11월 24일
0

이더리움

목록 보기
7/16

solidity banner

헷갈리는 가시성. 제대로 정리하고 넘어가보려 한다.

상태 변수 접근 제어자

  • public : Getter Function 을 컴파일러가 자동으로 만들어준다는 특징이 있다. 외부에서 접근을 하게 되면 this.x의 형식으로 가능하고, 내부에서 접근하면 직접 x로 가능하다.

Getter Function은 external 가시성을 갖고 있기 때문에, 선언된 컨트랙트에서 this.x() 형식으로 접근해도 사용은 가능하다. 상태변수로 평가될 것이냐, 함수로 평가될 것이냐의 문제다.

  • internal : 정의된 컨트랙트 내부나 상속된 컨트랙트를 통해서만 접근이 가능하다. 외부에서 접근은 불가능하다. 접근 제어자를 지정하지 않고 변수를 선언하면 되면 기본값으로 설정된다.
  • private : internal 과 비슷하지만 상속된 컨트랙트에서 접근이 불가능하다.

함수 내에서 선언하는 변수에는 가시성 기능을 제공하지 않는다.
internalprivate은 다른 컨트랙트에서 접근이나 수정을 불가능하게 하기 위함이고, 블록체인 외부의 세계에서는 충분히 관찰 가능하니 주의해야 한다.

함수 접근 제어자

  • external : 컨트랙트의 인터페이스 중 하나. 다른 컨트랙트나 트랜잭션으로부터 호출되어진다. 꼭 this.f()의 형식으로 사용되게 된다.
  • public : 컨트랙트 내부나 메시지콜을 통해서 사용될 수 있다.
  • internal : 현 컨트랙트나 상속된 컨트랙트에서만 접근이 되어진다. 절대 외부에서 접근될 수 없다.
  • private : internal 과 거의 비슷하지만 상속된 컨트랙트에서 접근이 불가능하다는 차이가 있다.

컨트랙트 밖에서 작성되는 함수(free function)는 internal 가시성을 갖는다.

profile
블록체인 개발 공부 중입니다, 프로그래밍 공부합시다!

0개의 댓글