크립토 좀비의 솔리디티 버전은 0.4.19 이므로 현재 최신버전과는 다른 점이 있을 수 있습니다. 솔리디티 공식문서 한국어
솔리디티 버전 명시
pragma solidity ^0.4.19; // 설치된 컴파일러와 다를시 에러
컨트랙트 선언
contract Example {
}
상태 변수
선언
contract Example {
uint sample = 10;
}
부호 없는 정수 uint (unsigned int)
uint == uint256
uint8, uint16, uint32 등이 있는데 숫자는 변수가 사용할 비트 수만큼 명시
일반적으로는 uint만 사용
연산
add : x + y
sub : x -y
mul : x * y
div : x / y
mod : x % y
pow : x ** y
배열
선언
uint[2] fixedArray; // 고정크기 2만큼의 배열 선언
uint[] dynamicArray; // 동적배열 크기가 변할 수 있다. (python, java 등에서의 stack, list, queue, ...등과 같음)
public 배열
string[] public names; // 다른 컨트랙트(외부)에 배열을 읽을 수 있다. 자동으로 getter 메소드가 생성됨
구조체
선언
struct Person {
uint age;
string name;
}
생성
Person[] people;
Person satoshi = Person(172, "Satoshi");
people.push(satoshi);
함수
선언
function eatHamburgers(string _name, uint _amount) {
}
관례적으로 매개변수는 _(언더스코어)로 매개변수명을 시작
호출
eatHamburgers("Dean", 100);
Private / Public
솔리디티에서 기본적으로 명시를 하지 않으면 함수는 Public으로 생성된다.
Public : 누구나 or 다른 컨트랙트에서도 함수 호출 가능
Private : 컨트랙트 내에서만 함수 호출 가능
function _addToArray(string _name, uint _amount) private {
numbers.push(_number);
}
private 함수는 함수 명을 _(언더스코어)로 시작한다.
반환값
function sayHello() public returns (string) {
string greeting = "What's up dog";
return greeting;
}
함수 제어자 (view / pure)
function sayHello1() public view returns (string) {
string greeting = "What's up dog";
return greeting;
}
function _multiply(uint a, uint b) private pure returns (uint) {
return a * b;
}
view : 상태변수 읽기 O , 변경 X
pure : 상태변수 읽기 X, 변경 X
Keccak256
Keccak256은 해시함수로서 여러 용도로 쓰일 수 있지만 솔리디티에서는 문자열의 비교연산 기능이 없기 때문에 keccak256의 해시 값을 이용해 비교한다.
if(keccak256("hello") == "hello") {
}
형변환
uint8 a = 5;
uint b = 6;
uint8 c = a * b; // Error
uint8 c = a * uint8(b); // Ok
이벤트
이벤트는 컨트랙트가 사용자 단에서 액션이 발생했을때 컨트랙트가 소통하는 방법이다.
// 이벤트를 선언한다
event IntegersAdded(uint x, uint y, uint result);
function add(uint _x, uint _y) public {
uint result = _x + _y;
// 이벤트를 실행하여 앱에게 add 함수가 실행되었음을 알린다:
IntegersAdded(_x, _y, result);
return result;
}
'블록체인 > 크립토 좀비' 카테고리의 다른 글
[크립토 좀비] 레슨04/05 정리 (0) | 2022.05.03 |
---|---|
[크립토 좀비] 레슨 03 정리 (0) | 2022.04.20 |
[크립토 좀비] 레슨02 정리 (0) | 2022.04.15 |