일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쿠버네티스
- CSS
- es6
- 웹
- 자바스크립트
- 백준
- 컴퓨터공학
- docker
- VUE
- 솔리디티
- HTML
- 리액트
- 블록체인
- 파이썬
- 백엔드
- next.js
- 프론트엔드
- react
- JavaScript
- 클라우드
- BFS
- 이더리움
- 이슈
- k8s
- kubernetes
- AWS
- TypeScript
- 타입스크립트
- 알고리즘
- 가상화
- Today
- Total
즐겁게, 코드
솔리디티 - 01. 기본 문법 1 (자료형과 연산) 본문
솔리디티(Solidity)는 *계약 지향 프로그래밍 언어로, 다양한 블록체인 플랫폼의 스마트 계약 로직을 작성할 때 사용됩니다.
(쉽게 설명하면 이더리움 계열의 블록체인은 솔리디티로 작성됐다고 보면 됩니다.)
✅ TIP - 솔리디티를 처음 학습하는 입장이라면 이 "계약 지향" 이라는 말이 굉장히 생소하게 느껴질 수 있는데요, 보면서 느끼시겠지만 계약(contract)은 문법상 자바 등의 "클래스" 와 굉장히 유사한 구조입니다.
따라서, 앞으로 나올 "컨트랙트" 라는 말이 어색하다면 "클래스" 와 비슷한 개념이라고 어렴풋이 이해하고 계셔도 될 듯 합니다.
솔리디티의 큰 특징은 다음과 같습니다.
- 정적 타입 언어
- Ethereum Virtual Machine (EVM) 위에서 실행됨
- 문장의 끝을 반드시 세미콜론(;)으로 표현함
솔리디티는 공식 IDE인 remix.ethereum.org/ 에서 실행할 수 있으며, visual studio나 VS Code에서도 지원합니다!
1. 첫 사용시
pragma solidity ^0.4.19;
pragma solidity ^버전명 으로 사용할 솔리디티 언어 버전을 명시해줘야 함.
=> 그래야 컴파일러가 버전에 맞게 컴파일할 수 있음.
2. 컨트랙트
pragma solidity ^0.4.19;
contract ZombieFactory {
}
이더리움과 비트코인의 가장 큰 차이중 하나인 컨트랙트, 모든 코드의 실행은 이 "컨트랙트" 안에서 실행되어야 합니다.
(위에서 잠깐 언급했지만, 자바의 클래스와 유사합니다.)
3. 자료형
주요 자료형
- uint (부호 없는 정수형) - uint는 기본적으로 256비트 자료형으로, 보다 작은 자료형은 uint32, uint64 등으로 선언할 수 있습니다.
- int (정수형)
- bool : 논리 자료형
- string : UTF-8 인코딩 문자열
- bytes : 바이트
- address : 이더리움 주소 값 (0xaDc7192A0…)
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
}
연산
솔리디티는 사칙연산과 나눗셈(모듈로) 연산, 지수 연산을 지원합니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10 // b는 16의 10승
}
구조체
구조체는 struct
키워드로 생성할 수 있으며, 컨트랙트 내부에서 정의되어야 합니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
}
배열
솔리디티에는 정적 배열과 동적 배열이 존재합니다.
정적 배열 : uint[4] fixedArray
처럼 미리 사용할 배열의 크기를 지정함.
동적 배열 : uint[] dynamicArray
처럼 고정된 크기가 없어 계속 커질 수 있음.
new 키워드를 활용한 배열 : new uint[](5)
처럼 길이 인자를 반드시 명시해줘야 함.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] zombies; // Zombie 구조체를 저장하는 크기 5의 배열
}
public 속성 배열
배열에는 public
이라는 속성을 부여할 수도 있습니다.
public
속성과 함께 배열을 선언하면 다른 컨트랙트에서도 배열을 읽을 수 있게 되지만, 쓸 수는 없습니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies; // 다른 컨트랙트에서도 zombies 배열을 읽을 수(만) 있음.
}
'💬 언어 > Solidity' 카테고리의 다른 글
솔리디티 - 05. Storage와 Memory (0) | 2021.04.16 |
---|---|
솔리디티 - 04. 매핑과 msg.sender (0) | 2021.04.16 |
솔리디티 - 03. 이벤트 (0) | 2021.04.16 |
keccak256 함수로 난수 생성하기 (0) | 2021.04.16 |
솔리디티 - 02. 기본 문법 2 (함수) (0) | 2021.04.15 |