솔리디티 스마트 컨트랙트에서 함수는 컨트랙트의 기능을 구현하는 데 사용되는 코드 블록입니다. 함수는 특정 작업을 수행하거나 계산을 수행한 후 값을 반환할 수 있습니다. 이 글에서는 솔리디티에서 함수를 작성하고 사용하는 방법에 대해 알아봅시다.
함수 선언
솔리디티 함수는 function 키워드를 사용하여 선언하며, 매개변수와 반환 타입을 지정할 수 있습니다. 함수의 가시성 및 상태 변경 가능성도 지정해야 합니다.
pragma solidity ^0.8.0;
contract FunctionExample {
function greet(string memory name) public pure returns (string memory) {
return string(abi.encodePacked("Hello, ", name));
}
}
함수의 가시성
함수의 가시성은 함수를 호출할 수 있는 주체를 제한하는 데 사용됩니다. 솔리디티에서는 public, external, internal, private 네 가지 가시성을 사용할 수 있습니다.
- public: 컨트랙트 내부 및 외부에서 호출할 수 있습니다.
- external: 컨트랙트 외부에서만 호출할 수 있습니다.
- internal: 컨트랙트 내부 및 상속된 컨트랙트에서 호출할 수 있습니다.
- private: 함수가 선언된 컨트랙트 내부에서만 호출할 수 있습니다.
함수의 상태 변경 가능성
함수는 pure, view, payable, non-payable 중 하나의 상태 변경 가능성을 지정해야 합니다.
- pure: 함수가 컨트랙트의 상태를 읽거나 변경하지 않습니다.
- view: 함수가 컨트랙트의 상태를 읽을 수 있지만 변경할 수 없습니다.
- payable: 함수가 Ether를 전송받을 수 있습니다.
- non-payable (기본값): 함수가 Ether를 전송받지 못하며 상태를 변경할 수 있습니다.
pragma solidity ^0.8.0;
contract FunctionModifiersExample {
uint public value;
function getValue() public view returns (uint) {
return value;
}
function setValue(uint _value) public {
value = _value;
}
function deposit() public payable {
require(msg.value > 0, "Value must be greater than 0.");
}
}
함수 호출
함수는 컨트랙트 내부에서 다른 함수를 호출할 수 있습니다. 이 때 함수 호출에 필요한 인자를 전달해야 합니다.
pragma solidity ^0.8.0;
contract FunctionCallsExample {
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
function addAndDouble(uint a, uint b) public pure returns (uint) {
uint sum = add(a, b);
return sum * 2;
}
}
생성자 (Constructor)
생성자는 컨트랙트가 배포될 때 호출되는 특수한 함수입니다. 생성자는 컨트랙트의 초기 상태를 설정하는 데 사용됩니다. 생성자는 constructor 키워드를 사용하여 선언하며, 가시성을 지정할 수 있습니다.
pragma solidity ^0.8.0;
contract ConstructorExample {
address public owner;
constructor() {
owner = msg.sender;
}
}
폴백 (Fallback) 및 리시브 (Receive) 함수
폴백 함수는 컨트랙트에 대한 함수가 지정되지 않은 호출이 발생할 때 실행되는 기본 함수입니다. 리시브 함수는 컨트랙트가 Ether를 받을 때 호출되는 함수입니다. 두 함수 모두 한 컨트랙트에서 한 번만 정의될 수 있습니다.
pragma solidity ^0.8.0;
contract FallbackAndReceiveExample {
fallback() external payable {
// Fallback 함수 로직
}
receive() external payable {
// 리시브 함수 로직
}
}
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[솔리디티 입문] 7. 변수 선언, 초기화 및 할당 (0) | 2023.06.16 |
---|---|
[솔리디티 입문] 6. 함수 제어자 (0) | 2023.06.16 |
[솔리디티 입문] 4. 상태 변수 (0) | 2023.06.16 |
[솔리디티 입문] 3. 글로벌 네임스페이스 (0) | 2023.06.16 |
[솔리디티 입문] 2. 참조형(reference type) (0) | 2023.06.16 |
솔리디티 스마트 컨트랙트에서 함수는 컨트랙트의 기능을 구현하는 데 사용되는 코드 블록입니다. 함수는 특정 작업을 수행하거나 계산을 수행한 후 값을 반환할 수 있습니다. 이 글에서는 솔리디티에서 함수를 작성하고 사용하는 방법에 대해 알아봅시다.
함수 선언
솔리디티 함수는 function 키워드를 사용하여 선언하며, 매개변수와 반환 타입을 지정할 수 있습니다. 함수의 가시성 및 상태 변경 가능성도 지정해야 합니다.
pragma solidity ^0.8.0;
contract FunctionExample {
function greet(string memory name) public pure returns (string memory) {
return string(abi.encodePacked("Hello, ", name));
}
}
함수의 가시성
함수의 가시성은 함수를 호출할 수 있는 주체를 제한하는 데 사용됩니다. 솔리디티에서는 public, external, internal, private 네 가지 가시성을 사용할 수 있습니다.
- public: 컨트랙트 내부 및 외부에서 호출할 수 있습니다.
- external: 컨트랙트 외부에서만 호출할 수 있습니다.
- internal: 컨트랙트 내부 및 상속된 컨트랙트에서 호출할 수 있습니다.
- private: 함수가 선언된 컨트랙트 내부에서만 호출할 수 있습니다.
함수의 상태 변경 가능성
함수는 pure, view, payable, non-payable 중 하나의 상태 변경 가능성을 지정해야 합니다.
- pure: 함수가 컨트랙트의 상태를 읽거나 변경하지 않습니다.
- view: 함수가 컨트랙트의 상태를 읽을 수 있지만 변경할 수 없습니다.
- payable: 함수가 Ether를 전송받을 수 있습니다.
- non-payable (기본값): 함수가 Ether를 전송받지 못하며 상태를 변경할 수 있습니다.
pragma solidity ^0.8.0;
contract FunctionModifiersExample {
uint public value;
function getValue() public view returns (uint) {
return value;
}
function setValue(uint _value) public {
value = _value;
}
function deposit() public payable {
require(msg.value > 0, "Value must be greater than 0.");
}
}
함수 호출
함수는 컨트랙트 내부에서 다른 함수를 호출할 수 있습니다. 이 때 함수 호출에 필요한 인자를 전달해야 합니다.
pragma solidity ^0.8.0;
contract FunctionCallsExample {
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
function addAndDouble(uint a, uint b) public pure returns (uint) {
uint sum = add(a, b);
return sum * 2;
}
}
생성자 (Constructor)
생성자는 컨트랙트가 배포될 때 호출되는 특수한 함수입니다. 생성자는 컨트랙트의 초기 상태를 설정하는 데 사용됩니다. 생성자는 constructor 키워드를 사용하여 선언하며, 가시성을 지정할 수 있습니다.
pragma solidity ^0.8.0;
contract ConstructorExample {
address public owner;
constructor() {
owner = msg.sender;
}
}
폴백 (Fallback) 및 리시브 (Receive) 함수
폴백 함수는 컨트랙트에 대한 함수가 지정되지 않은 호출이 발생할 때 실행되는 기본 함수입니다. 리시브 함수는 컨트랙트가 Ether를 받을 때 호출되는 함수입니다. 두 함수 모두 한 컨트랙트에서 한 번만 정의될 수 있습니다.
pragma solidity ^0.8.0;
contract FallbackAndReceiveExample {
fallback() external payable {
// Fallback 함수 로직
}
receive() external payable {
// 리시브 함수 로직
}
}
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[솔리디티 입문] 7. 변수 선언, 초기화 및 할당 (0) | 2023.06.16 |
---|---|
[솔리디티 입문] 6. 함수 제어자 (0) | 2023.06.16 |
[솔리디티 입문] 4. 상태 변수 (0) | 2023.06.16 |
[솔리디티 입문] 3. 글로벌 네임스페이스 (0) | 2023.06.16 |
[솔리디티 입문] 2. 참조형(reference type) (0) | 2023.06.16 |