solidity

[solidity] visibility (public, private, external, internal)

승딱 2022. 9. 26. 23:16
반응형

solidity 는 변수및 함수에 대해 접근에 제한을 두는데 그 가시성(visibility)을 기준으로 한다.

 

그중 함수에서 visibility 에 대해서 알아보자

 

solidity 에서 함수 선언시 구조

 

function / name / (input) / public,private,external,internal / view,pure,paylable / returns (output) {};

함수 선언 / 함수명 /   인풋  /                  함수의종류                    /         함수의 성질       / 리턴여부 (아웃풋타입) { 함수 }

 

함수의 종류를 나타내는 부분에 대해서 알아보자

1. contract 외부에서는 접근이 안되는경우 > private, internal  : 여기서 컨트랙트의 외부라 함은 내부함수가 아닌 사용자가 직접적으로 호출하는 곳, 다른컨트랙트 와 같을 곳을 의미한다.

 

2. public 은 이름처럼 그냥 다 접근 가능한 함수를 나타내고 external 은 외부에서만 접근이 가능한 함수임

 

3. private 와 internal 의 차이는 private 의 경우에는 오직 컨트랙트 내부에서만 사용이 가능하다 상속한 컨트랙트에서도 사용이 안된다.

internal 의 경우에는 상속된 컨트랙트에서도 사용이 가능하다.

 

표로정리하면

  컨트랙트 내부 상속된 컨트랙트 컨트랙트 외부
public o o o
external x x o
private o x x
internal o o x

처음 써보는 방식이라 이런부분 고민하면서 사용해봐야겠다.