일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자료구조 #알고리즘
- 블록체인 #layer2 #레이어2 #이더리움스케일링
- #국제채권시장 #유로본드 #유로커런시 #유로달러 #외국채 #금융중개기관 #간접금융 #거래비용#다우존스공업평균지수 #나스닥종합지수 #FTSE100 #DAX #CAC40 #straittimes #항생지수 #거래비용 #유동성 #위
- #경제상식 #화폐 #금융 #화폐금융론 #경제학 #경제기본 #경제지식 #경제근육 #투자지식 #경제공부 #경제학전공 #금융이란 #화폐란 #금융시장 #금융시장역할 #화폐역할 #화폐역기능 #금융역기능 #
- 미쉬킨의화폐와금융 #미쉬킨 #화폐금융론 #화폐와금융 #경제학 #교양 #경제지식 #경제공부
- 페이스북유니버시티 #마케팅교육 #마케팅캠프
- html #js #parsing
- vp #vc #did #신원인증 #블록체인
- Today
- Total
평행우주 : world 1
[Solidity] 컨트랙트 정의와 함수 본문
컨트랙트 정의
솔리디티의 주요 데이터 타입은 contract이다
객체지향 언어의 객체와 마찬가지로,
컨트랙트는 데이터와 메서드가 포함된 컨테이너다
솔리디티는 컨트랙트와 유사한 두 가지 객체 유형을 제공한다
interface
인터페이스 정의는 함수가 정의되어 있지 않고 선언만 되어 있다는 것을 제외하면,
컨트랙트와 완전히 같은 구조로 되어 있다
이런 유형의 선언은 흔히 stub이라고 불린다
어떤 구현도 없이 함수의 인자와 반환 유형을 알려준다
인터페이스는 컨트랙트의 형태를 지정한다
상속될 때 인터페이스에 의해 선언된 각 함수는 자식에 의해 정의되어야 한다
library
라이브러리 컨트랙트는 delegatecall 메서드를 참고하여
한 번만 배포되고 다른 컨트랙트에서 사용되기 위한 컨트랙트이다
함수
컨트랙트 내에서 EOA 트랜잭션이나 또 다른 컨트랙트에 의해 호출될 수 있는 함수 정의
솔리디티에서 함수를 선언할 때 사용하는 구문은 다음과 같다
function FuntionName([parameters]) {public | private | internal | external}
[pure | constant | view | payable] [modifiers] [returns (return types)]
FunctionName
트랜잭션 (EOA로부터), 다른 컨트랙트 또는 동일한 컨트랙트 내에서 함수를 호출하는 데 사용되는 함수의 이름
각 컨트랙트마다 한 개의 함수는 이름이 없이 정의될 수 있는데,
그것을 폴백 함수라고 부르고 다른 함수 이름이 없을 때 호출된다
폴백함수는 인수가 없으며 아무것도 반환할 수 없다
parameters
이름 뒤에 함수 이름과 유형과 함께 전달되어야 하는 인수를 지정한다
다음 키워드들은 함수의 가시성을 지정한다
* 컨트랙트 내의 모든 함수 또는 데이터는 공개 블록체인에서 항상 볼 수 있다
즉 누구나 코드 또는 데이터를 볼 수 있다
여기서 설명된 키워드는 함수를 호출할 수 있는 방법과 조건에만 영향을 준다
public
공개 함수는 기본값이다
공개함수는 다른 컨트랙트 또는 EOA 트랜잭션 또는 컨트랙트 내에서 호출할 수 있다
external
외부함수는 명시적으로 키워드 this가 앞에 붙지 않는 한,
컨트랙트 내에서 호출할 수 없다는 점을 제외하면 공개함수와 같다
internal
내부함수는 컨트랙트 내에서만 접근할 수 있다
다른 컨트랙트 또는 EOA트랜잭션으로는 호출할 수 없다
파생괸 컨트랙트(이 컨트랙트를 상속받은 컨트랙트)에 의해서는 호출될 수 있다
private
비공개 함수는 내부 함수와 유사하지만 파생된 컨트랙트에서도 호출할 수 없다
다음 키워드들은 함수의 동작에 영향을 준다
constant 또는 view
뷰로 표시된 함수는 상태를 변경하지 않는다
상수라는 용어는 향후 릴리스에서 사용되지 않는 뷰의 별칭이다
현재 컴파일러는 view 변경자를 강제화하지 않고 경고만 표시하고 있다
pure
순수함수는 스토리지에서 변수를 읽거나 쓰지 않는 함수다
저장된 데이터를 참고하지 않고 인수에 대해서만 작동하고 데이터를 반환할 수 있다
순수함수는 부작용이나 상태가 없는 선언형 스타일의 프로그래밍을 지원하기 위한 것이다
payable
선언되어 있다면 입금을 받을 수 있는 함수이고,
그렇지 않다면 입금이 거부될 것이다
EVM에서 설계할 때 두 가지 예외가 있는데,
보상지불 및 SELFDESTRUCT다
이 두 가지 경우는 코드의 실행이 지불의 일부는 아니기 떄문에
폴백 함수가 payable로 선언되어 있지 않은 경우에도 지불될 것이다
'텃밭 1 : BlockChain > Solidity' 카테고리의 다른 글
[Solidity] Subcurrency 코드 분석 (0) | 2022.03.29 |
---|---|
[Solidity] 이더리움 토큰과 ERC20 필수함수 + 이벤트 (0) | 2022.03.28 |
[Solidity] Faucet을 구현하는 솔리디티 컨트랙트 분석 (0) | 2022.03.27 |
[Solidity] Data type (0) | 2022.03.25 |
[실습 | 블록체인] Mnemonic Wallet 개발하기 (0) | 2022.03.17 |