반응형

dApp을 개발함에 있어서는 크게 두 파트로 나누어진다. 

첫 파트는 블록체인과 연결되는 스마트 컨트랙트 코드, 프론트엔드 코드이다.

 

 

 결국 스마트 컨트랙트 코드 + 프론트엔드 코드 + 기타를 합쳐서 dApp을 구성하게되는데, 이 때 프론트엔드 코드가 스마트 컨트랙트 코드 함수에서 실행되는 것에 대해서 소통을 하기 위해서 이용되는 것이 바로 Event이다.

스마트 컨트랙트가 Event를 send하면 프론트엔드 코드에서 listen하는 식으로 동작한다.

 

 

Event(이하 이벤트)란 트랜잭션 내에서 호출될 수 있는 일종의 리턴값이 없는 함수입니다. 이벤트를 호출하면 그 호출한 기록이 Transaction Receipt라 불리는 트랜잭션 결과에 저장됩니다. 일종의 로그(log)입니다. 

 



출처: https://joojis.tistory.com/entry/Solidity-프로그래밍-2 [블록체인 개발 블로그]

반응형

'Blockchain 개발 > Solidity 프로그래밍' 카테고리의 다른 글

Solidity 이더리움 송금하기  (0) 2020.02.09
Solidity 문법  (0) 2020.02.09
Solidity 실행하기  (0) 2020.02.08
반응형

사람 뿐만 아니라, 스마트 계약도 내부적으로 이더리움 계정1를 가집니다. 스마트 계약은 계약 계정를 통해 이더를 거래합니다.
예를 들어, 계약을 통해 A가 B에게 10 이더를 보내는 계약을 호출할 때, 이더는 사실 다음과 같이 이동합니다.

  1. A가 A 계정에서 계약 계정으로 10 이더를 송금
  2. 계약이 계약 계정에서 B 계정으로 10이더를 송금

 

 

payable 키워드

payable 키워드는 계약 계정에 외부에서 이더를 송금 받을 수 있도록 합니다. 즉, 계약이 A에게 송금을 받으려면 A가 호출하는 함수에 payable 키워드가 있어야합니다.

 

 

아래코드를 실행해보세요.

pragma solidity ^0.4.24;

contract Solution {
    uint256 balance = 0;

    function sending() payable public {
        balance = msg.value;
        emit Sended(msg.value, balance);
    }

    event Sended(
        uint256 _value,
        uint256 _balance
    );
}

 

payable 키워드를 사용해 계약에게 이더를 보내는 방법을 선언합니다. 

 

 

반응형

'Blockchain 개발 > Solidity 프로그래밍' 카테고리의 다른 글

Solidity Event란?  (0) 2020.02.09
Solidity 문법  (0) 2020.02.09
Solidity 실행하기  (0) 2020.02.08
반응형

주요 자료형

  • uint : 부호가 없는 정수형
  • int : 정수형
  • bool : 논리 자료형
  • string : UTF-8 인코딩 문자열
  • bytes : 바이트
  • address : 이더리움 주소 값 (0xaDc7192A0…)

레퍼런스 자료형

  • 배열 : 자료형이 같은 데이터를 묶은 자료 구조입니다.
  • 구조체 : 다양한 자료형의 데이터를 묶은 자료 구조입니다.

 

예제 1번

 

다음과 같이 입력해주시고 다시 compile을 하고 run에서 create 버튼을 클릭합니다. 

 

pragma solidity ^0.4.24;
 
contract Simpleexample {
    
    string public name = "James";
    uint128 public birthday = 20180328;
   
    uint[] setOfYear = [2018, 2019, 2020];
    uint year = setOfYear[0];
    bool isHappy = true;
    
    function getYear() public view returns (uint) {
        
        return year;
    }
 
    function getHappy() public constant returns (bool) {
        return isHappy;
    }
    
    
}


public으로 선언된 값들 위처럼 확인하실수 있습니다. 

 

 

string public name = "James";
uint128 public birthday = 20180328;   
uint[] setOfYear = [2018, 2019, 2020];
uint year = setOfYear[0];
bool isHappy = true;

각각의 자료형에 맞는 변수를 선언하고 값을 대입합니다. public이라고 명시를 하는경우만 접근지정자가 public이 되는 것을 확인하실 수 있습니다. 

 

 

function getYear() public view returns (uint) {
        return year;
    }
function getHappy() public constant returns (bool) {
        return isHappy;
    }
함수의 선언방식입니다. 기존언어들과는 다르게 접근지정자를 뒤에 쓰는게 인상적입니다.  returns (자료형) 으로 반환할 자료형을 전달하는 형식이고 return에 반환할 값을 입력하는 형태입니다. 

 

그리고 주석은 c와 동일하게 줄주석은 // 구역주석은 /* */ 를 사용합니다. 

 

 

 

 

솔리디티의 연산자(Operator)

  • 논리 연산자: !, &&, ||
  • 비교 연산자 : <=, <, ==, !=, >=, >
  • 비트 연산자: &, |, ^, <<, >> (시프트 연산자)
  • 단항(unary) 산술 연산자: +, -
  • 이항(binary) 산술 연산자: +, -, *, / (몫), % (나머지), ** (거듭 제곱)

제어문(Control Structures)

  • 조건문: if, else, ? : (삼항 연산자)
  • 반복문: while, do, for
  • 반복문 분기: break, continue
  • 반환문: return

 

예제 2번

 

 

pragma solidity ^0.4.24;
 
contract Simpleexample {
    
    uint t1 = 0;
    bool t2 = false;

    function playground() public returns (uint, bool) { // multi return type

        for (uint i = 0; i < 10; i++) {
            t1++;
        }

        t2 = 2 ** 3  == 8 &&t1 == 10;
        

      
        return (t1, t2);
    }

   
}


 

 

결과는 직접확인해보세요!

 

: 솔리디티가 부동소수점을 지원하지 않는 이유

부동소수점 타입으로는 수를 정확하게 표현하지 못합니다.
수를 정확히 다룰 수 없는 타입은 이더(Ether)를 다룰 수 없어, 솔리디티는 부동소수점을 지원하지 않습니다.

반응형

'Blockchain 개발 > Solidity 프로그래밍' 카테고리의 다른 글

Solidity Event란?  (0) 2020.02.09
Solidity 이더리움 송금하기  (0) 2020.02.09
Solidity 실행하기  (0) 2020.02.08
반응형

Solidity는 스마트 계약을 작성하기위한 객체 지향 프로그래밍 언어입니다. 다양한 블록 체인 플랫폼, 특히 이더 리움에서 스마트 계약을 구현하는 데 사용됩니다. 이전의 이더 리움 핵심 참여자들이 Ethereum과 같은 블록 체인 플랫폼에서 현명한 계약을 작성할 수 있도록 개발했습니다.

 

Influenced by

JavaScript, C++, Python, PowerShell

 

 

스마트 컨트랙터를 만들기 위해 Solidity라는 언어를 알아야 합니다. 개발환경은 Remix라는 브라우저 기반의 개발환경을 사용하려고 합니다. 보통 통합 개발 환경을 Integrated Development Environment의 약자인 IDE로 부릅니다.

Remix는 아래 링크를 따라 가면 접속됩니다.

 

https://github.com/ethereum/remix-live/tree/gh-pages

 

ethereum/remix-live

Live deployment of the remix IDE. Contribute to ethereum/remix-live development by creating an account on GitHub.

github.com

clone-download 버튼을 누르고 압축을 풀고, index.html을 클릭합니다.

 

화면과 같은 개발도구가 실행될것입니다. 왼쪽 상단에 +버튼을 누르고 Simpleexample.sol을 생성하세요.

그리고 아래에 코드를 복사해서 넣어주세요.

 

pragma solidity ^0.4.24;
 
contract Simpleexample {
    uint storedData;
 
    function set(uint x) public {
        storedData = x;
    }
 
    function get() public constant returns (uint) {
        return storedData;
    }
}

 

다음은 셋팅에서 Solidity version을 맞춰줍니다. 

다시 compile로 돌아오셔서 start to compile 버튼을 누르시면 컴파일이 완료됩니다. 

run에 들어가셔서 아래처럼 맞춰주시고  get, set함수의 버튼을 누르시면 하단의 아웃풋값이 출력되는것을 볼 수 있습니다. 

 

 

  • Web3 Provider :
    외부 도구가 필요합니다. geth가 로컬에서 작동되고 있어야 하며 이더를 할당하거나 직접 마이닝 해야 합니다.
  • Injected Provider :
    역시 외부 도구가 필요합니다. Mist 브라우저나 MetaMask를 통해 테스트넷에 연결하여 사용합니다.
  • JavaScript VM :
    셋 중 가장 간단하고 편하며, 이번에 알아볼 방법입니다. 외부 도구가 필요 없으며 Remix의 메모리상에서 모든 작업이 이루어집니다.

다음 포스팅에서는 쏠리디티 문법에 대해서 공부해보도록 하겠습니다. 

반응형

'Blockchain 개발 > Solidity 프로그래밍' 카테고리의 다른 글

Solidity Event란?  (0) 2020.02.09
Solidity 이더리움 송금하기  (0) 2020.02.09
Solidity 문법  (0) 2020.02.09

+ Recent posts