반응형
💡솔리디티 기본 문법 - 함수
솔리디티에서 함수는 다음과 같이 선언한다.
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(컨트랙트 생성자의 주소);
반응형
'블록체인 > WEB3 개발' 카테고리의 다른 글
솔리디티 기본 문법 - 이벤트 및 에러 핸들링 (0) | 2022.07.08 |
---|---|
솔리디티 기본 문법 - 함수 제어자 (0) | 2022.07.08 |
솔리디티 기본 문법 - 연산자 (0) | 2022.07.08 |
솔리디티 기본문법 - 자료형 (0) | 2022.07.08 |
솔리디티 기본문법 - 변수 (0) | 2022.07.08 |
댓글