본문 바로가기

Blockchain/solidity

스마트컨트랙트 구조 + 접근제어 지정자(external,internal ..)

// 1. 컨트랙트 선언
contract Sample { 
	// 2. 상태 변수 선언
    uint256 data; 
    address owner; 
    
    // 3. 이벤트 정의 
    event logData(uint256 dataToLog);
    
    // 4. 함수 변경자 정의 
    modifier onlyOwner() { 
    	if(msg.sender != owner) throw; 
        _; 
    } 
    
    // 5. 생성자 
    function Sample(uint256 initData, address initOwner){ 
    	data = initData; 
        onwer = initOwner; 
   } 
   
   // 6. 함수(메소드)정의 
   	function getData() returns (uint256 returned) { 
    	return data; 
   } 
    function setData(uint256 newData) onlyOnwer { 
    	logData(newData); 
        data = newData; 
        } 
  }

접근제어 지정자 Visibility 

external : 외부 컨트랙트만 접근가능 (같은 함수 내부에서 호출X), 상태변수는 external 불가능 

internal : 컨트랙트 내부 호출가능, 상속받은 컨트랙트 호출가능, 상태변수는 디폴트가 internal 

public : 컨트랙트 내부 호출 가능, 상속받은 컨트랙트 호출가능, 외부컨트랙트 호출가능 

private : 컨트랙트 내부만 호출가능 

 

'Blockchain > solidity' 카테고리의 다른 글

Abi 파일의 역할  (0) 2023.03.15
Smart Contract의 구조 + contract 정의  (0) 2023.03.03
event의 역할 + Transaction log  (0) 2023.03.02
bytes32 자료형을 사용하는 이유? vs bytes  (0) 2023.03.02