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 |
댓글