제가 이해한 내용으로 정리합니다.

스마트 계약

  • 스마트 컨트랙트
    • 두 계약 당사자 간에 이뤄지는 합의 스마트 계약의 이용
  • 간단한 거래 뿐 아니라 블록체인을 이용하여 여러가지 처리 가능하다.
  • 자체 블록체인이 아닌, 기존의 블록체인을 이용해 스마트 계약으로 블록체인을 활용하는 것
  • Solidity는 스마트 계약을 구축하기 위한 프로그래밍 언어
  • 스마트 계약을 사용해 자체 토큰도 생성 가능하다.
    • 심지어 Peg도 할 수 있음!!

solidity & 스마트 계약 작성

Solidity는 정적 타입 언어.

Solidity의 확장자는 .sol
스마트 계약의 목적 : 데이터를 저장하고 데이터를 반환할 수 있게 하기.

  1. 정보 받기
  2. 정보 저장
  3. 정보 반환

이곳에서 진행했다. –>
remix.ethereum.org

practice.sol

요약

  1. 카멜케이스 쓰는 것 같다. 세미콜론도 사용한다.
  2. // : 주석
  3. pragm : 사용중인 solidity의 버전을 나타내는 구문
  4. contrac : 계약 타입 선언
  5. uin : 정수타입 : 뒤의 숫자는
  6. strin : 문자열
  7. boo : 참 / 거짓
  8. public : 매우 중요! : 함수에 가시성 부여함. 계약 외부에서도 함수 호출을 가능하게 한다. (다른 계약에서도 이 함수를 호출해야 하기 때문)
  9. view : 상태를 수정할 수 없다는 것을 알리는 전역 제어자(Global Modifier)
  10. EVM : 이더리움 가상 머신 10.

어떤 코드를 작성할 것인가!?


solidity!

매우매우 기본

  • 라이센스 명시 없으면 밑줄 생겨서 넣었음.

  • Solidity 불러오기

pragma solidity >=0.7.0 <0.9.0;
  • pragma : 사용중인 Solidity의 버전을 나타내는 구문
  • pragma solidity >=0.7.0 <0.9.0; : 0.7 버전 이상, 0.9 미만

function set(uint x) public {
    storeData = x;
}  // 저 public 을 넣어야 한다.
  • public : 계약 외부에서도 함수 호출을 가능하게 한다. (다른 계약에서도 이 함수를 호출해야 하기 때문)
  • private : 외부에서 액세스 하지 못하게 한다.
  • view : 만약 없다면 데이터에 뭔가 반환된다.
  • retunrs : 가시성 부여 & 상태 유지 & 반환 + 무엇을 return 받을 것인지 ``(%자료형)` 명시

    function get() public view returns (uint) {
        return storeData;
    }
연습 코드
// practice1.sol

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract simpleStorage {
    // 우선 정수만 저장해본다.

    uint storeData;

    // 1. 정수를 저장하기 위한 함수 setting
    function set(uint x) public {
        storeData = x;
    }

    // 2. 정보를 회수하기 위한 함수 getting
    function get() public view returns (uint) {
        return storeData;
    }
}

연습코드 컴파일 & 배포


컴파일


DEPLOY & RUN TRANSACTIONS

  • 추후 고급 스마트 계약에서 VALUE, wei, ether 를 확인할 것임

성공한 모습

  • 계약에 성공하면 Gas 가 사용된다.
  • 주소 또한 확인 할 수 있다.

이곳에서 작성한 함수를 IDE에서 버튼을 이용, 사용할 수 있게 되었다.
== 정보를 저장하는 Dapp 완성!

get으로 확인 :


가스비가 좀 무서운걸