BlockChain>이더리움

YU YU·2021년 10월 8일
0

경일_BlockChain

목록 보기
16/24

1. 거래소 만들기 아키텍쳐


2. 이더리움


2-1. 이더리움을 배우는 이유

왜 블록체인을 배운다고 하면 이더리움을 배우는가? 비트코인 빌드도, 라이트코인 빌드도 결국은 매커니즘을 못 바꾸고 변수들만 바꾸는 수준이었다. 정해진 API를 써야했고(getnewaddress,sendtoaddress같은) 블록 안에 내가 원하는 정보를 담을 수도 없었다. 그러나 이더리움은 이를 가능하게 한다. 그래서 블록체인을 배우면 이더리움을 먼저 배우는 것이다.

장점코드을 입맛대로 쉽게 수정할 수 있다.(거래를 구현할 수 있다.)
이더리움을 쓰면 좋은 예

  • 라이트코인 빌드 중 거래 혹은 변수나 내용을 저장하는 코딩을 해야하는 경우
    -거래를 구현하기
  • A B 10개 보내는 것을 사용하는데 rpc API 수정하기
  • 기능 추가
    (A에서 B에게 보내는데 B가 확인버튼을 눌러야지만 보낼 수 있게 한다든지...)

2-2. 이더리움이 사용하는 언어

여러가지 언어로 토큰들을 만들 수 있다.
그러나 대부분 Go,Python,Javascript의 영향을 받아 만들어진 Solidity를 사용하곤 한다.

3. 스마트 컨트랙트


우리가 인터넷으로 물건을 살 때 구매를 결정짓는 요인은 2가지가 있다. 가격과 신뢰이다. 만약 아무리 가격이 싸도 신뢰할 수 없는 마켓에서 살 수는 없다. 이러한 '신뢰'의 문제를 해결하기 위해 블록체인의 '스마트 컨트랙트'를 사용할 수 있다.

3-1. 에스크로

사실 블록체인 이전에도 '신뢰'를 인증해주는 시스템이 있었다. 그 중에 하나가 에스크로라고 하는 시스템인데, 중간에 인증해주는 사람이 있어서 물건거래를 안전하게 할 수 있었다. 옥션을 예로 들어보자. 각자 마켓에서 물건을 사는데 우리는 마켓 주인에게 돈을 송금하는 것이 아니라 옥션에 송금을 함으로써 물건이 배송이 완료되고 이의를 하지 제기하지 않는한 판매자에게 중간 인증자가 돈을 넘겨주는 시스템이다.

하지만 이 시스템도 중앙화이기 때문에 관리자가 조작하면 데이터 조작이 가능하는 문제점이 있다.

3-2. 스마트 컨트랙트

이는 블록체인을 이용한 시스템이다. 블록체인을 이용하기에 관리자라고해도 마음대로 정보를 조작할 수 없다는 장점이 있다. 에스크로와는 다르게 중간 관리자가 없으며, 수정이 불가능하다는 장점이 있다.

4. Dapp

Dapp이란 블록체인의 탈중앙화 시스템을 이용하여 application을 만드는 것이다. 블록체인의 목적은 신뢰투명성이다.
그래서 계약서 작성이나

5. 우리가 만들 것

토큰임. 메인넷을 구축하지 않는다. 이더리움의 메인넷을 빌려쓰는 것임.이더리움을 통해서 단위가 쪼개진 토큰을 제작한다.

테스트가 어려우면 개발이 생각보다 어려워짐.시간도 오래걸림.
그래서 우리는 가짜 이더리움, 환경을 구현한 라이브러리를 쓸 것이다. 가볍게 데몬을 설치할 수 있는 가나슈를 쓸 것이다. 테스트를 하기 쉽게 만든 패키지임.

프레임워크
개발이 쉽게 만들었고 시스템이 정해져 잇다. 코드들의 모음

5-1. Truffle(트러플)

  • Dapp을 만들기 위해 사용되는 프레임워크
  • 스마트 컨트랙트를 작성해보고 해봐야 이해가 갈 것임.

6. 솔리디티

6-1. OOP 개념

객체지향언어
Object Oriented Programing
무언가를 할 때 선언이 우선임. 변수나 객체를 사용할 때 먼저 선언을 해야함.
Typescript
코드블럭에서만 코드를 작성한다.
맨 처음에 실행되는 함수를 메인함수라고 한다.

6-2. 각 언어의 출력문

  • Java의 출력문
    public static void main(String[] args){
    .....
    Stytem.out.prinln("hello world")
    }
  • javascript 출력문
....
console.log('hello wolrd')
  • C++ 출력문
int main(void){
...
prinln("hello world")
}

6-3. 언어의 해석기

JVM(Java Virtual Machine)은 자바를 해석해주는 프로그램이다.
EVM
가상 머신은 코드를 해석해주는 프로그램이다.

흔히 쓰는 EVM을 사용하는 IDE에는 remix IDE가 있다. 여기서 쉽게 solidity 언어를 활용하여 스마트 컨트랙트를 구현할 수 있다.
https://remix.ethereum.org



기본적인 확장자는 .sol이다.

가나슈

초콜렛이 아님..
메인넷 테스트넷을 빌려쓰지 않고 로컬 PC에서 가볍게 데몬을 구현할 수 있도록 하는 프로그램
블록의 정보를 local에서 저장

Truffle

Dapp을 만들기 위해 쓰는 프레임워크

EVM

node.js와 같은 역할을 한다고 보면됨. 언어해석해주는 역할을 한다.
비슷한 예로는 java의 jvm
Solidyity언어를 해석해주는 역할을 한다.

remix

비쥬얼스튜디오같은 편집기 툴인데 온래인에 존재함.
EVM을 실행시켜준다.(언어를 해석해준다.)

스마트 컨트랙트

거래 내용을 코딩할 수 있는 작업(?)

solidity

스마트 컨트랙트를 만드는 언어. 꼭 솔리디티를 사용할 필요는 없다.

https://cryptozombies.io/ko

7.solidity언어 문법

pragma solidity ^0.4.19;
solidity는 개발 속도가 빠른 언어이다. 그래서 심지어 한달 전에 작성했던 코드가 지금은 실행이 안될수도 있음. 그래서 버전을 명시해서 그 버전에 맞는 걸로 빌드를 해주는 것임.

7-1. 데이터 타입

  • uint == int or number

Zombie 의 동적 배열을 생성하려면 구조체 안에서 선언되는 변수 영역에 쓰는 것이 아니라 struct Zombie 밖에 쓴다.

profile
코딩 재밌어요!

0개의 댓글