블록체인 스마트계약 구현 개발 팁 방출

DongJoo Kwak·2022년 7월 18일
2

🐳블록체인 개발을 도와주는 도구들 정리!

다양한 암호화폐 증권 퀀트 게시물 -> https://quantpro.co.kr

📌스마트 계약

🌳스마트 계약 저작 도구 - remix

=>온라인에서 작성: http://remix.ethereum.org

=>로컬에서 작성하기 위한 IDE 다운로드: https://github.com/ethereum/remix-ide

*python3를 먼저 설치


🌳solidity

=>EVM에서 동작하는 스마트 계약을 만들 수 있도록 해주는 프로그래밍 언어 중 하나

=>solidity 같은 스마트 계약을 만들 수 있는 언어로 블록체인 기술을 활용한 탈 중앙화된 애플리케이션을 DApp

=>Defi: 탈 중앙화 된 금융


📌블록체인 네트워크

🌳이더리움 네트워크

⚡ 주 네트워크

  • 누구나 사용할 수 있는 글로벌 공중 네트워크

  • 계정을 사용해서 접근할 수 있고 누구나 무료로 계정을 생성하고 솔루션 과 스마트 계약을 배포할 수 있음

  • 주 네트워크를 사용하기 위해서는 가스가 필요

  • 현재 이름은 Homestead

⚡테스트 네트워크

  • 블록 체인의 구축 및 도입을 도와주는 네트워크로 주 네트워크를 복제한 것

  • 비용이 들지 않음

  • faucet 에서 테스트 용 이더를 받아서 Ropsten, Kovan, Rinkeby 등에 테스트

  • Ropsten은 작업 증명 합의 방식(PoW)을 사용하여 블록을 생성하는데 Morden 이라고 함

  • Rinkeby는 권위 증명(PoA)를 합의 메커니즘으로 사용

  • 작업 증명이 견고하기는 하지만 채굴자를 완벽히 통제하지 못해서 권위 증명이 등장

🌳사설 네트워크

  • 사설 인프라에서만 사용하기 위해서 만든 네트워크

🌳컨소시엄 네트워크

  • 서로 다른 조직에서 관리하는 노드가 연합해서 만들어 진 네트워크



💡개발 환경

  • 이더리움 노드 나 클라이언트를 구현할 때는 Go, C++, Python, Java, Ruby 등 다양한 언어로 가능

1) Geth

  • 사설 체인에서 노드 와 채굴자를 생성하도록 해주는 Go 로 작성된 명령행 도구
    *설치: https://geth.ethereum.org/downloads/

  • JSON RPC 프로토콜에 기초해서 JSON 형식으로 인코딩 된 payload를 가지고 원격 프로시저 호출의 명세를 정의

  • 사용할 수 있는 프로토콜
    IPC(Inter Process Communication): 동일한 컴퓨터 내의 프로세스 들 끼리 통신하는데 사용되는 프로토콜

  • RPC(Remote Procedure Call - 원격 프로시저 호출): 서로 다른 컴퓨터 사이의 프로세스 간 통신에 사용되는 프로토콜로 일반적으로 TCP 및 HTTP 프로토콜에 기초

2) WebSocket: 웹 소켓을 통해 연결

  • 터미널에서 geth 라고 입력을 하게 되면 공중 네트워크에 접속

  • 사설 네트워크 생성
    디렉토리를 설정 - c:\geth

👨‍🌾위에서 만든 디렉토리 안에 genessis.json 파일을 이용해서 최초의 블럭이 만들어지도록 해주어야 합니다.

{
 "nonce": "0x0000000000000042",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "difficulty": "0x200",
 "alloc": {},
 "coinbase": "0x0000000000000000000000000000000000000000",
 "timestamp": "0x00",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "gasLimit": "0xffffffff",
 "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
 }
}

데이터 디렉토리 생성 - c:\geth\data

사설 네트워크 생성
geth init "genessis.json 파일의 경로" --datadir "데이터디렉토리경로"

=>IPC를 이용해서 접속
다른 터미널을 실행시킨 후 실행
geth attach ipc:\.\pipe\geth.ipc

=>다른 컴퓨터에서 접속할 수 있도록 명령 수행
geth -datadir "C:\geth\chaindata" -rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 15

=>RPC를 이용해서 접속: 다른 터미널에서 수행
geth attach rpc:http://127.0.0.1:8545

=>계정 생성
personal.newAccount()

=>계정 설정
miner.setEtherbase("계정")

=>계정 확인
eth.coinbase

=>채굴 시작
miner.start()

=>채굴 중지
miner.stop()

2)ganache 명령행 인터페이스
=>이더리움을 사용해 원장에 거래를 기록하는 2가지 단계를 거쳐야 합니다.
첫번째 단계는 거래를 생성해서 거래 풀에 집어 넣는 것
두번째 단계는 거래 풀에서 모든 거래를 가져와 채굴하는 것으로 간헐적으로 일어나는데 이더리움 데이터베이스 또는 원장에 거래를 기록하는 것을 채굴이라고 합니다.
=>이 작업이 시간이 많이 걸림
=>ganache 는 이더리움 솔루션 및 스마트 계약 의 개발 과 테스트 과정을 간소화하기 위해 개발
=>node에 의존하기 때문에 node 와 npm 이 설치되어 있어야 합니다.
npm install -g ganache-cli
=>실행
ganache-cli

3)솔리디티 컴파일러 설치
npm install -g solc

4)web3 자바스크립트 라이브러리
=> 이더리움 노드에 접속하는데 사용할 수 있는 오픈 소스 자바스크립트 라이브러리
=> 노드 모듈로 만들어져 있음
=> 설치
npm install web3@0.19

5)미스트 지갑
=>이더리움은 이더 암호 화폐를 사용하는데 이더를 보내고 받을려면 지갑이 필요
=>https://github.com/ethereum/mist/releases
=>geth 와 버전이 맞지 않으면 checksum 에러가 발생

6)MetaMask
=>이더리움 네트워크 와의 상호 작용을 돕는 경량의 크롬 확장 프로그램
=>이더를 주고 받는 것을 돕는 지갑
=>https://metamask.io
=>브라우저에서 구동되기 때문에 전체 체인 데이터를 로컬에 다운로드 하지 않음
=>체인 데이터는 중앙에 저장하고 브라우저를 통해서 그것에 연결하도록 도와주는 역할


[![Velog's GitHub stats](https://velog-readme-stats.vercel.app/api?name=dongzooo&tag=블록체인)](https://velog.io/@dongzooo)
profile
즐거운 개발 공간

0개의 댓글