본문 바로가기
전공공부/블록체인공학

Solidity 데이터타입과 연산자

by 으노으뇨 2021. 11. 4.
728x90
반응형
SMALL

1. Solidity 데이터타입

기본 데이터 타입 -논리
-정수
-소수
-실수 
등등
복합 데이터 타입 -문자열
-배열
-구조체

기존 자바? 와 비슷하게 데이터타입이있다.

솔리디티는 저장하는 위치는 스마트계약을 작성하였을때, 저장하는 위치가 다르다.

스토리지 저장 영구적으로 저장됨
gas소모량이 큼
- 변수 대부분은 스토리지에 저장 
메모리 저장 휘발성 저장
gas 소모량이 적음
- 메모리에 저장하고싶으면 메모리에 저장하겠다고 함수나 메서드를 작성해야함
- 함수의 인수나 반환값은 메모리에 저장된다.

상태변수 

Contract 상위에 선언된 변수로써 Contract에 속한 변수이다.

클래스의 멤버 변수와 동일하다.(어떤 함수에 속한 변수가 아님)

저장 위치는 스토리지 이다.

지역변수

함수에 속한 변수 (함수가 끝나면 사라지는.. )

저장 위치는 스토리지


2. 기본문법

pragma solidity ^0.4.18; //1
contract test{ //2

function artith1() public pure returns(fixed){ //3
fixed a = 3; ..4
fixed b = 2; 
return a*b; //5
}
}
// 1 - ^ 사용시 해당 버전 이상만 사용 가능(0.5버전 미만 가능)
- pragma로 컴파일러 버전 확인
// 2 - 스마트 컨트랙트 선언
// 3  - 함수 선언
// 4 - 지역변수 선언
// 5 - 반환값

스마트 컨트랙트 선언

객체지향 언어의 클래스와 유사하게 작성 가능

contract 파일명(계약명){
변수
생성자
함수
...


}

함수 선언

function 함수명(1. 매개변수들) public pure returns(2. 리턴값 자료형) ..{

변수
...

return ...
}
// 1. 매개변수들 ex) uint a, int b (해당 함수에서 unint 형 a와, int형 b를 입력받아 활용)
// 2. 리턴값 자료형 ex) uint(해당 함수의 리턴값으로 uint 형 값 1개 반환함)

- 입력 매개변수와 리턴값이 없을 수도 있다.

함수의 접근 제어(1/2)

함수의 호출범위

public  내부 계약 또는 외부 계약 호출 시 사용 가능
internal 내부 계약 또는 상속 계약에서 호춣가능
private 계약 안에서만 호출 가능
external  외부 계약 호출 시 에만 사용가능
같은 함수 내부에서는 호출 불가

우리가 만약 public을 쓰지않으면, internal인 기본값으로 인식된다.

함수의 접근 제어(2/2)

함수 타입 제어

뷰인지 퓨어인지 헷갈리게쓰거나 잘못쓰면 에러가발생하니 주의해서 쓰도록해야한다.

view - 스토리지 저장된 변수를 읽어올 수만 있음 = 수정불가(읽을수만! 있으니까~)
- 상태변수만 사용할 경우 view 사용할 것
pure - 스토리지에 저장된 변수를 사용할 수 없음 = 읽어오거나 수정할 수 없음
- 지역변수만 활용할 경우 pure 사용할 것 (지역변수와 상태변수 둘다쓰고싶음 뷰를 쓰면된다.)
- 지역변수와 상태변수를 함께 사용할 경우 view 사용할 것

데이터 타입

정수 정수타입
int, uint 
소수 실수 타입
선언가능하나 완전하게 지원하지 못함
fixed ,  unfixed
주소 20바이트 고정 이더리움 계정의 주소
고정멤버 소유
balance , transfer
바이트(bytes) 문자열 저장
문자열 사용 시 bytes 주로 사용
크기를 문한으로 지정가능
논리 참, 거짓 판별
true, false로 나타냄
열거 문자열 배열에 index 를 부여하여 index값을 정수형으로 리턴하는 자료형
enum
함수 처리할 내용을 모듈 단위로 함수 처리가능

 

728x90
반응형
LIST

'전공공부 > 블록체인공학' 카테고리의 다른 글

Solidity 데이터타입과 연산자(3)  (0) 2021.11.05
Solidity 데이터타입과 연산자(2)  (0) 2021.11.05
Solidity개발(2)  (0) 2021.10.31
이더리움 - solidity개발  (0) 2021.10.28
스마트컨트랙트(2)  (0) 2021.10.23

댓글