코드코코

[솔리디티] 데이터 타입, 변수, 함수 본문

블록체인/솔리디티

[솔리디티] 데이터 타입, 변수, 함수

코드코코 2022. 2. 12. 10:37

Solidity Language

: smart contract 과정 중 EVM에서 byte코드로 생성됨.

: smart contract을 만들기 위한 가장 많이 쓰이는 언어

 

1. solidity 버전 선언 사용법 2가지

: 선호하는 방법 선택하여 사용

- pragma solidity >= 0.4.22 <0.9.0             // 0.4.22 버전 이상, 0.9.0 버전 이하를 통해서 실행이 됨.

- pragma solidity ^0.6.0                         // 최소 0.6.0 이상의 버전으로 컴파일 되야 함 (0.7.0은 안 됨.)

 

2. 데이터 타입

- boolean : 참, 거짓 
- integer : 정수형 , int8~int256 , uint8~uint256 , 일반 int = int256

- fixed point : fixed, ufixed (fixed32x2 - 전체가 32비트인 실수, 소수점 2자리까지 표현)
- address : 20바이트의 이더리움 주소
- byte array(fixed) : 정적배열, 1-32까지 고정된 사이즈로 생성 가능.
- byte array(dynamic) : 동적배열, bytes, string
- Enum : 열거형
- Arrays :  배열
- Struct : 구조체
- Mapping :  key 와 value 로 구성.
- Time units : seconds, minutes, hours, days, weeks
- Ether unis : wei, Szabo, ether

 

3. global variable : 사전에 선언된 변수

- msg object : msg.sender(=address) / msg.value(=ether) / msg.data(=데이터 payload) / msg.sig(어떤 function을 지니고 있는지)
- tx object : tx.gasprice(=gas price) /  tx.origin(=transaction을 만든 address)
- block object : block.coinbase(=miner address) / block.difficulty(=난이도) / block.gaslimit(maximum account)
- address object : address.balance / address.transfer

 

4. global function : 사전에 선언된 함수

- built-in function : addmod, mulmod, keccak256, sha256, sha3, ripemd160, ecrecover, this, selfdestruct

- ecrecover : 서명한 주체의 address를 요청
- this : 현재 동작하고 있는 contract의 address
- selfdestruct : 현재 동작하고 있는 contract의 address를 erasing 요청.

 

5. 함수

 

접근제어자

- public : default, 다른 EOA나 외부에서도 누구나 사용 가능.
- external : 외부의 EOA는 이 function을 사용 가능, 내부에서의 사용은 불가.
- internal : 내부에서만 사용가능. 외부에서는 사용불가. 더불어 파생된 contract들도 사용불가.
- private : 오직 자기 자신만 사용가능. 호출은 안되지만, 볼 수 있는 있음.

- view : 보기만 가능
- pure : 수정 뿐만 아니라, 상태 정보에 access 못함.
- payable : ether의 전송도 처리 가능.

 

 함수

- receive 함수 : 이 contract에게 receive를 받아 처리함. (원형. receive () external payable{ .. } )

- fallback 함수 : 매칭이 되는 데이터나 함수가 없을 때 fallback 함수를 사용함. (원형. fallback () external [payable] )

- contract 함수 : contract을 만들었을 때 처음 실행되는 함수. 초기 state를 설정함. 필수는 아니고 옵션임.

- selfdestruct 함수 : 이더를 받을 대상의 address를 적어주고 지워줌. (원형. selfdestruct(address recipient); )

- require 함수 : if문 같은 역할을 함. (원형. require(); )

- modifier 함수 : 함수에 여러 상태를 적용시킬 수 있음.

 

에러를 핸들링할 때 주로 사용하는 함수

- assert()

- require()

- revert

 
참조 : https://jihyeong-ji99hy99.tistory.com/213?category=927873