ݺߣ

ݺߣShare a Scribd company logo
가상화폐 개념 및
거래 기초개발
지앤클라우드 송상욱
가상화폐
출처 : https://coinmarketcap.com/all/views/all/
• 암화화 화폐 Crypto currency
• 현재 사용되는 전자화폐와는 다른 개념
• 종속성이 없는 블록체인이 핵심기술
• 집단지성, 탈중앙화된 자율조직, 암호화 등 혁신적
인 기술과 이데올로기
• 현재 가상화폐는 1147개가 존재 (17년 9월)
• 상위에 비트코인, 이더리움, 리플, 라이트코인 존
재
블록체인
• 분산 원장 (분산 데이터베이스)
• 지속적으로 성장하는 데이터 기록 리스트
• 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안
• 많은 업계에서 블록체인 기술을 이용한 실증 실험이 검토
이미지 출처 : http://www.itworld.co.kr/news/100106
기본원리
• 비트코인의 화폐는 10분에 한번씩 블록 생성
• 이더리움의 화폐는 15초에 한번씩 블록 생성
• 마이닝에 참여한 사용자 중 한 명에게 블록 지급
• 마이닝이란 특정한 조건을 가지는 해시값을 찾는 일
• 해당 시간(10분, 15초)에 하나의 블록이 생성될수 있도록 문제
의 난이도가 조정됨.
이더리움
• 스마트 계약 분산 기술
• 가상화폐단위
• Ether
• Szabo : 10-8 Ether
• Wei : 10-18 Ether
• 실행환경 : EVM ( Ethereum Virtual Machine)
• 클라이언트
• Geth - golang
• Eth – c++
• Pyethapp - python
• Ethereumj - Java
• Web3.js – javascript
작업증명
• 블록 생성 조건: 블록의 해시가 일부 목표 값보다 작아야함
• 이유
• 분산 시스템에서 누구나 블록을 생산할 수 있음
• 네트워크가 블록으로 넘치지 않도록 함.
• 특정 버전의 블록 체인 뒤에 얼마나 많은 합의가 이루어 졌는지 측정 할 수있는 방법
을 제공하기 위해서.
• 블록을 만드는 것이 어려워야 함.
• 해시가
000000100000000000000000000000000000000000000000000000000000
000 미만인 블록을 찾는 데 평균 43억 회 소요.
이더리움 채굴
• 채굴의 보상
• 5.0 Ether로 구성된 'winning'블록에 대한 보상
• 블록 내에서 소비 된 가스 비용
• Uncles 포함에 따른 추가 보상
• Mining에는 geth보다는 c++로 만들어진 eth가 유리
• 싱글 GPU 명령
• eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name
"OPTIONALNAMEHERE" -x 50 -m on -G
• 멀티 GPU 명령
• eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name
"OPTIONALNAMEHERE" -x 50 -j
• ethminer --no-precompute -G --opencl-device X
비트코인 개발
• 테스트넷 기동
• $ bitcoind –regtest –daemon
• 블록생성
• $ bitcoin-cli –regtest generate 101
• 블록수 확인
• $ bitcoin-cli –regtest getblockcount
• 계좌생성
• $ bitcoin-cli –regtest getnewaddress swsong
• > 1GZaq7gue1fJ3Xv4pXymJ1F7WPLwMax4Rv
• 잔고확인
• $ bitcoin-cli –regtest getbalance
• 송금
• $ bitcoin-cli –regtest sendtoaddress 1GZaq7gue1fJ3Xv4pXymJ1F7WPLwMax4Rv 10
이더리움 개발
• 테스트 네트워크 구축
• $ geth –networkid “123” –datadir “eth_data” –olympic console
• 계좌생성
• > personal.newAccount(“swsong”)
• 잔고확인
• > eth.getBalance(eth.accounts[0])
• 블록수 확인
• > eth.blockNumber
• 송금
• > eth.sendTransaction({from: ‘0x19f0..’, to: ‘0x382..’, value: web3.toWei(1, “ether”)})
• 송금확인
• > eth.getBalance(eth.accounts[1])
이더리움 Contract 개발
• Solidity 이더리움 고유언어를 사용하여 개발
• EVM위에서 동작
• geth의 RPC 기동
• $ geth –networkid “123” –rpc –rpcaddr “192.168.56.105” –rpcport 8545 –
rpccorsdomain “*” –rpcapi “net,eth,web3,personal” –datadir “eth_data” –
olympic console
• web3.js 의 접근
• var master = web3.eth.contract(masterABI).at(“0x8aece3……”);
• 개발환경
• Remix – 웹 브라우저기반의 IDE. https://remix.ethereum.org/
• IDEA Plugin
• Visual Studio Extension
• Etheratom
참고
• https://github.com/ethereum/wiki/wiki

More Related Content

가상화폐 개념 및 거래 기초개발

  • 1. 가상화폐 개념 및 거래 기초개발 지앤클라우드 송상욱
  • 2. 가상화폐 출처 : https://coinmarketcap.com/all/views/all/ • 암화화 화폐 Crypto currency • 현재 사용되는 전자화폐와는 다른 개념 • 종속성이 없는 블록체인이 핵심기술 • 집단지성, 탈중앙화된 자율조직, 암호화 등 혁신적 인 기술과 이데올로기 • 현재 가상화폐는 1147개가 존재 (17년 9월) • 상위에 비트코인, 이더리움, 리플, 라이트코인 존 재
  • 3. 블록체인 • 분산 원장 (분산 데이터베이스) • 지속적으로 성장하는 데이터 기록 리스트 • 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안 • 많은 업계에서 블록체인 기술을 이용한 실증 실험이 검토 이미지 출처 : http://www.itworld.co.kr/news/100106
  • 4. 기본원리 • 비트코인의 화폐는 10분에 한번씩 블록 생성 • 이더리움의 화폐는 15초에 한번씩 블록 생성 • 마이닝에 참여한 사용자 중 한 명에게 블록 지급 • 마이닝이란 특정한 조건을 가지는 해시값을 찾는 일 • 해당 시간(10분, 15초)에 하나의 블록이 생성될수 있도록 문제 의 난이도가 조정됨.
  • 5. 이더리움 • 스마트 계약 분산 기술 • 가상화폐단위 • Ether • Szabo : 10-8 Ether • Wei : 10-18 Ether • 실행환경 : EVM ( Ethereum Virtual Machine) • 클라이언트 • Geth - golang • Eth – c++ • Pyethapp - python • Ethereumj - Java • Web3.js – javascript
  • 6. 작업증명 • 블록 생성 조건: 블록의 해시가 일부 목표 값보다 작아야함 • 이유 • 분산 시스템에서 누구나 블록을 생산할 수 있음 • 네트워크가 블록으로 넘치지 않도록 함. • 특정 버전의 블록 체인 뒤에 얼마나 많은 합의가 이루어 졌는지 측정 할 수있는 방법 을 제공하기 위해서. • 블록을 만드는 것이 어려워야 함. • 해시가 000000100000000000000000000000000000000000000000000000000000 000 미만인 블록을 찾는 데 평균 43억 회 소요.
  • 7. 이더리움 채굴 • 채굴의 보상 • 5.0 Ether로 구성된 'winning'블록에 대한 보상 • 블록 내에서 소비 된 가스 비용 • Uncles 포함에 따른 추가 보상 • Mining에는 geth보다는 c++로 만들어진 eth가 유리 • 싱글 GPU 명령 • eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name "OPTIONALNAMEHERE" -x 50 -m on -G • 멀티 GPU 명령 • eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name "OPTIONALNAMEHERE" -x 50 -j • ethminer --no-precompute -G --opencl-device X
  • 8. 비트코인 개발 • 테스트넷 기동 • $ bitcoind –regtest –daemon • 블록생성 • $ bitcoin-cli –regtest generate 101 • 블록수 확인 • $ bitcoin-cli –regtest getblockcount • 계좌생성 • $ bitcoin-cli –regtest getnewaddress swsong • > 1GZaq7gue1fJ3Xv4pXymJ1F7WPLwMax4Rv • 잔고확인 • $ bitcoin-cli –regtest getbalance • 송금 • $ bitcoin-cli –regtest sendtoaddress 1GZaq7gue1fJ3Xv4pXymJ1F7WPLwMax4Rv 10
  • 9. 이더리움 개발 • 테스트 네트워크 구축 • $ geth –networkid “123” –datadir “eth_data” –olympic console • 계좌생성 • > personal.newAccount(“swsong”) • 잔고확인 • > eth.getBalance(eth.accounts[0]) • 블록수 확인 • > eth.blockNumber • 송금 • > eth.sendTransaction({from: ‘0x19f0..’, to: ‘0x382..’, value: web3.toWei(1, “ether”)}) • 송금확인 • > eth.getBalance(eth.accounts[1])
  • 10. 이더리움 Contract 개발 • Solidity 이더리움 고유언어를 사용하여 개발 • EVM위에서 동작 • geth의 RPC 기동 • $ geth –networkid “123” –rpc –rpcaddr “192.168.56.105” –rpcport 8545 – rpccorsdomain “*” –rpcapi “net,eth,web3,personal” –datadir “eth_data” – olympic console • web3.js 의 접근 • var master = web3.eth.contract(masterABI).at(“0x8aece3……”); • 개발환경 • Remix – 웹 브라우저기반의 IDE. https://remix.ethereum.org/ • IDEA Plugin • Visual Studio Extension • Etheratom