본문 바로가기
블록체인/WEB3 개발

솔리디티 기본 문법 - 함수

by 제이제이_은재 2022. 7. 8.
반응형

 

💡솔리디티 기본 문법 - 함수

 

솔리디티에서 함수는 다음과 같이 선언한다.

function 함수이름 (파라미터 형식1 파라미터1, 파라미터 형식2 파라미터 2, ... ){...}

함수가 값을 반환하는 경우, 다음과 같이 선언한다.

function 함수이름(파라미터, ...) returns (반환 형식) {...}

 

 

✓ 함수 접근 수준 (public, external, internal, private)

 

< public(default) > 

- 외부에서 접근 가능

- 컨트랙트 내부, 외부, 클라이언트 코드에서 모두 호출 가능

 

< external >

- public 과 비슷함

- 외부(external) 컨트랙트나 클라이어트 코드에서  호출 가능

- 컨트랙트 애부에서는 호출 불가능. f()로 호출 불가능

- 컨트랙트 내부로부터 불릴 경우 this.f() 와 같이 this를 활용한 호출 가능

 

< internal >

- 컨트랙트 멤버와 상속된 컨트랙트에서 호출 가능

 

< private >

- 컨트랙트 멤버만 호출 가능

 

무언가를 internal 또는 private 으로 만드는 것은 다른 계약이 정보를 읽거나 수정하는 것을 방지할 뿐이다. 퍼블릭 블록체인 특성상 데이터는 공개되어 있다.

 

contract example{
	function changeName(address account, string newName) internal {...}
   	function checkGas(uint256 amount) private returns (bool) {...}
}

 

 

✓ Qualifier (view, pure, payable)

 

함수가 컨트랙트의 내부 상태를 변경할 수 있는 능력을 선언하는 것이다.

 

view, pure

view 로 표시된 함수는 상태를 변경하지 않는 읽기 전용 함수이다.

pure 는 스토리지에서 변수를 읽거나 쓰지 않는 함수이다.

 

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.14;

contract exampleC {

    uint256 public constant maxLimit = 1000;
    mapping(address => bool) public frozenAccount;

    function checkGas(uint256 amount) private pure returns (bool) {
        if(amount < maxLimit) return true;
        return false;
    }

    function validateAccount(address account) internal view returns (bool) {
        if (frozenAccount[account]) return true;
        return false;
    }
}

 

payable

payable을 선언하면 함수에서 이더를 받을 수 있다.

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.14;

contract exampleC {

    address public account;

    constructor(address _account) internal {
        account = _account;
    }
}

 

selfdestruct

selfdestruct 함수를 사용하여 컨트랙트를 소멸할 수 있다.

 

selfdestruct(컨트랙트 생성자의 주소);
반응형

댓글