📌스마트 계약
🌳스마트 계약 저작 도구 – 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()
3) ganache 명령행 인터페이스
=>이더리움을 사용해 원장에 거래를 기록하는 2가지 단계를 거쳐야 합니다.
첫번째 단계는 거래를 생성해서 거래 풀에 집어 넣는 것
두번째 단계는 거래 풀에서 모든 거래를 가져와 채굴하는 것으로 간헐적으로 일어나는데 이더리움 데이터베이스 또는 원장에 거래를 기록하는 것을 채굴이라고 합니다.
=>이 작업이 시간이 많이 걸림
=>ganache 는 이더리움 솔루션 및 스마트 계약 의 개발 과 테스트 과정을 간소화하기 위해 개발
=>node에 의존하기 때문에 node 와 npm 이 설치되어 있어야 합니다.
npm install -g ganache-cli
=>실행
ganache-cli
4) 솔리디티 컴파일러 설치
npm install -g solc
5) web3 자바스크립트 라이브러리
=> 이더리움 노드에 접속하는데 사용할 수 있는 오픈 소스 자바스크립트 라이브러리
=> 노드 모듈로 만들어져 있음
=> 설치
npm install web3@0.19
6) 미스트 지갑
=>이더리움은 이더 암호 화폐를 사용하는데 이더를 보내고 받을려면 지갑이 필요
=>https://github.com/ethereum/mist/releases
=>geth 와 버전이 맞지 않으면 checksum 에러가 발생
7) MetaMask
=>이더리움 네트워크 와의 상호 작용을 돕는 경량의 크롬 확장 프로그램
=>이더를 주고 받는 것을 돕는 지갑
=>https://metamask.io
=>브라우저에서 구동되기 때문에 전체 체인 데이터를 로컬에 다운로드 하지 않음
=>체인 데이터는 중앙에 저장하고 브라우저를 통해서 그것에 연결하도록 도와주는 역할
다양한 암호화폐 증권 퀀트 게시물 -> https://quantpro.co.kr
Blockchain smart contract development information, smart contract, meta mask, Ethereum network