본문 바로가기

블록체인/크립토 좀비

[크립토 좀비] 레슨 01 정리

크립토 좀비의 솔리디티 버전은 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