ethereum classic 설명서 - btrade.co.kr · 자 상호 작용 (트랜잭션)은 강력한...

167
1 Ethereum Classic 설명서 발매 0.1 Ethereum classic 커뮤니티 2016년 7월 31일

Upload: others

Post on 07-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

1

Ethereum Classic 설명서

발매 0.1

Ethereum classic 커뮤니티

2016년 7월 31일

2

1 목차

1.1 소개

1.1.1 이더리움이란?

다음세대의 블록체인

이더리움 가상 머신

이더리움의 작동원리

1.1.2 이 안내서를 사용하는 방법

이더리움 사용 : 기본 사항

1.1.3 The classic '출시'

동기

목표

Crypto-Decentralist Manifesto

1.1.4 Web 3 : 분산 된 앱을위한 플랫폼

현명한 계약

DAO

1.1.5 이더리움의 역사

시작

이더리움파운데이션과 에테르 특별판매

ETH / DEV 및 이더리움 개발

에테 리엄 프론티어 출시

1.1.6 커뮤니티

레딧

이더리움 클래식 위키

텔레그램

3

슬랙

이더리움 개선 방안 (EIPs)

중국 커뮤니티

러시아 커뮤니티

인도네시아 커뮤니티

Gitter Rooms (구)

Stack Exchange (구)

Obsolete

1.1.7 이더리움 재단

커뮤니티와 마주한 이더리움 재단

1.1.8 공헌

1.2 이더리움 고객

1.2.1 고객 선택하기

이더리움 고객이 여러명이 있는 이유는?

1.2.2 고객 설치

내 데스크탑 / 노트북에 무엇을 설치해야합니까?

내 모바일 / 태블릿에 무엇을 설치해야합니까?

내 SBC에 무엇을 설치해야합니까?

1.2.3 cpp-ethereum

빠른 시작

세부 사항

1.2.4 go-ethereum

1.2.5 pyethapp

1.2.6 ethereumjs-lib

4

1.2.7 Ethereum(J)

1.2.8 ethereumH

1.2.9 Parity

1.2.10 ruby-ethereum

1.3 계정 관리

1.3.1 계정

1.3.2 핵심 파일

1.3.3 계정 생성

geth 계정 사용하기

gethconsole 사용하기

미스트 이더리움 월렛 사용하기

미스트에서 다중서명월렛 생성하기

Eth 사용하기

Ethkey 사용하기 (더 이상 사용되지 않음)

1.3.4 미리 사용할 월렛 가져오기

미스트 이더리움 월렛 사용하기

geth 사용하기

1.3.5 계정 업데이트

geth 사용하기

1.3.6 백업 및 복구 계정

백업/복원 메뉴얼

암호화 된 개인키 가져오기

1.4 이더

1.4.1 이더란?

5

Denominations

1.4.2 이더 공급

1.4.3 이더 얻는법

신뢰할 수 없는 서비스

중앙 교환 시장 목록

중앙 집중식 고정 요금제

거래 및 가격 분석

1.4.4 온라인 지갑, 종이 지갑 및 냉동 창고

1.4.5 이더 보내기

1.4.6 가스와 이더

1.5 이더리움 네트워크

1.5.1 네트워크 연결

이더리움 네트워크

연결 방법

더 빠르게 블록체인 다운하는 방법

정적 노드, 신뢰할 수 있는 노드 및 부팅 노드

1.5.2 네스트 네트워크

Morden testnet

1.5.3 로컬 전용 테스트 넷 설정

eth (C++ client)

geth (Go client)

1.6 채굴

1.6.1 소개

채굴이란?

6

채굴 보상

Ethash DAG

1.6.2 알고리즘

1.6.3 CPU 마이닝

geth 사용하기

1.6.4 GPU 채굴

하드웨어

Ubuntu Linux셋업

Mac 셋업

윈도우 셋업

geth로 ethminer사용하기

ethfh ethminer 사용하기

1.6.5 풀 마이닝

마이닝 풀

1.6.6 마이닝 리소스

POS vs POW

1.7 계약과 트랜잭션

1.7.1 계좌 타입,Gas,그리고 트랜잭션

EOA vs 계약 계좌

트랜잭션이란?

메시지란?

Gas란?

트랜잭션 비용의 평가

계정 상호작용의 예 - 도박 계약

7

거래의 서명

1.7.2 계약

계약이란?

이더리움 높은레벨의 언어

계약 작성

계약서 작성

계약서 작성과 배포

계약의 상호작용

metadata 계약

트랜잭션과 계약 테스트하기

1.7.3 트랜잭션과 계약 액세스

RPC

협약

계약 전개

현명한 계약과 상호작용

Web3.js

콘솔

트랜잭션과 계약 보기

1.7.4 Mix

프로젝트 편집기

시나리오 편집기

상태 뷰어

트랜잭션 탐색기

자바스크립트 콘솔

8

트랜잭션 디버거

Dapps 배포

코드 에디터

1.7.5 Dapps

Dapp 디렉토리

Dapp 브라우저

1.7.6 개발자 도구

Depp 발달 리소스

Mix - IDE

IDEs/프레임 워크

이더리움 콘솔

기초 서비스

EVM

1.7.7이더리움 테스트

Testeth 사용하기

블록 체인 테스트

상태 테스트

RLP 테스트

난이도 테스트

트랜잭션 테스트

VM 테스트

1.7.8 Web3 기초 서비스

Swarm - 분산된 데이터 저장 및 배포

Wisper - 분산 메시징

9

네임 레지스트리

계약 레지스트리

1.8 자주하는 질물

1.8.1 질문

이더리움이란?

이더리움은 들어 봤지만 Geth, Mist, Ethminer,Mix는 무엇인가?

블록체인 상에서 큰 파일은 어떻게 저장하나?

이더리움은 비트코인이 기초인가?

이더리움의 미래는?

"지갑 계약"과 계좌는 무엇이 다른가?

주요 파일은 클라이언트를 다운로드 한 컴퓨터에서만 접속 할수 있나?

블록 체인을 다운로드 하는데 시간이 얼마나 소요되나?

주소 안팎의 트랜잭션 목록을 어떻게 얻나?

계약 체결은 그 비용을 지불 할수 있나?

계약서에서 다른 계약서를 불러 올수 있나?

거래가 서명되어 다른 온라인 장치에 제출 될 수 있나?

testnet Ether는 어떻게 얻나?

제 3자가 거래를 보낼수 있나? 트랜잭션 브로드 캐스팅을 아웃소싱 할

수 있나?

이더리움은 third-party API를 사용하여 데이터를 가져올 수 있나?

이더리움 네트워크를 통해 전송된 데이터 및 계약의 내용이 암호화 되

어 있나?

이더리움 네트워크에 비밀 또는 암호를 저장 할 수 있나?

이더리움은 어떻게 채광 웅덩이의 중앙 집중화와 싸울 것입니까?

이더리움은 블록 체인지의 크기가 어떻게 증가 할 것인가?

10

이더리움은 네트워크가 초당 10,000 개 이상의 트랜잭션을 처리 할 수

있는 방법을 어떻게 보장합니까?

계약은 어디에 있습니까?

귀하의 질문에 여전히 답변이 없습니까?

1.9 용어집

1.10 고전적인 문서 이니셔티브

1.10.1 목적과 청중

1.10.2 모범 사례를 위한 참고 자료

1.10.3 재구성 된 테그트 마크 업, 스핑크스

1.10.4 컴파일 및 배포

1.10.5 처리 팁

1.10.6 이전 문서 참조

1.10.7 Pandoc을 사용하여 이전 Wiki 컨텐트를 마이그레이션 및 변환

11

이 문서는 Ethereum 커뮤니티의 자원 봉사자가 지속적으로 공동으로 노력한 결과입니다.

TheEthereum Foundation의 승인을 받지는 못했지만, 우리는 당신이 유용하게 쓰길 바라며, 새로

운 기여자를 환영합니다.

12

Ethereum1.1 소개

1.1.1 이더리움이란?

Ethereum은 누구나 블록 체인 기술로 실행되는 분산 된 애플리케이션을 구축하고 사용할 수있는

개방형 블록 체인 플랫폼입니다. Bitcoin과 마찬가지로 누구도 Ethereum을 제어하거나 소유하지

않습니다. 이것은 전세계의 많은 사람들이 만든 오픈 소스 프로젝트입니다. 그러나 Bitcoin 프로토

콜과 달리 Ethereum은 적응력과 유연성을 갖도록 설계되었습니다. Ethereum 플랫폼에서 새로운

애플리케이션을 쉽게 생성 할 수 있으며, Homestead 릴리즈를 통해 누구나 이러한 애플리케이션

을 안전하게 사용할 수 있습니다.

차세대 블록체인

Blockchain 기술은 Bitcoin의 기술 기반으로, 처음 발표 된 신비한 저자 나카 모토 사토시의 백서

"Bitcoin : APeer-to-PeerElectronicCashSystem "(2008 년)에 설명되어 있습니다. 좀 더 일반적인 사

용을위한 블록 체인의 사용은 원래의 논문에서 이미 논의되었지만, 몇 년 후까지는 블록 기계 기

술이 일반적이었다. 블록 체인은 모든 네트워크 노드가 블록으로 그룹화 된 동일한 트랜잭션을

실행하고 기록하는 분산 컴퓨팅 아키텍처입니다. 한 번에 하나의 블록 만 추가 할 수 있으며 모

든 블록에는 이전 블록과 순서대로 이어지는지를 검증하는 수학적 증명이 포함됩니다. 이 경우,

블록 체인의 "분산 데이터베이스"는 전 체 네트워크를 중심으로 계산됩니다. 원장과의 개별 사용

자 상호 작용 (트랜잭션)은 강력한 암호화로 보호됩니다. 네트워크를 유지하고 확인하는 노드는

프로토콜에 코딩 된 수학적으로 시행 된 경제적 인센티브에 의해 인센티브를 받습니다..

비트 코인 (Bitcoin)의 경우 분산 데이터베이스는 계좌 잔고, 원장 테이블로 간주되며 트랜잭션은

비트 동전 토큰을 전송하여 개인 간의 신뢰없는 소통을 촉진합니다. 그러나 비트 코인 (bitcoin)이

개발자와 기술자들로부터 큰 주목을 받기 시작하면서, 소설 프로젝트는 값 토큰 전송 이외의 용

도로 비트 코인 네트워크를 사용하기 시작했습니다. 이 중 많은 수가 "alt 동전"형태였습니다. 원

래의 비트 동전 프로토콜을 개선하여 새로운 기능이나 기능을 추가 한 자체 크립토 코트

(cryptocurrencies)를 가진 별도의 블록 체인입니다. 2013 년 말 Ethereum의 발명가 인 Vitalik

Buterin은 임의로 복잡한 계산을 수행하도록 다시 프로그래밍 할 수있는 단일 블록 체인이 이러

한 많은 다른 프로젝트를 포함 할 수 있다고 제안했습니다. 2014 년 Ethereum 창립자 인 Vitalik

Buterin, Gavin Wood 및 Jeffrey Wilcke는 완전히 신뢰없는 스마트 계약 플랫폼을 구현하고자하는

차세대 블록 체인에 대한 작업을 시작했습니다.

13

이더리움 가상 시스템

Ethereum은 프로그래밍 가능한 블록 체인입니다. Ethereum을 사용하면 사용자가 미리 정의 된 일

련의 작업 (예 : 비트 동전 트랜잭션)을 제공하는 대신 사용자가 원하는 모든 복잡한 작업을 직접

만들 수 있습니다. 이러한 방식으로 cryptocurrencies를 포함하되 이에 국한되지 않는 분산 된 블

록 체인 어플리케이션의 다양한 플랫폼을위한 플랫폼 역할을합니다.

좁은 의미에서의 Ethereum은 분산 된 애플리케이션을위한 플랫폼을 정의하는 일련의 프로토콜을

의미합니다. Ethereum 가상 머신 ( "EVM")은 핵심 알고리즘으로 임의의 알고리즘 복잡성 코드를

실행할 수 있습니다. 컴퓨터 과학 용어로 Ethereum은 "Turing complete"입니다. 개발자는

JavaScript 및 Python과 같은 기존 언어를 모델로 한 친숙한 프로그래밍 언어를 사용하여 EVM에

서 실행되는 응용 프로그램을 만들 수 있습니다. 다른 블록 체인처럼 Ethereum도 P2P 네트워크

프로토콜을 포함합니다. 모든 블록 체인 데이터베이스는 네트워크에 연결된 많은 노드에 의해 유

지되고 업데이트됩니다. 네트워크의 모든 노드는 EVM을 실행하고 동일한 지침을 실행합니다. 이

러한 이유 때문에 에테 리엄 (Ethereum)은 때로는 "세계 컴퓨터"로 묘사됩니다. Ethereum 네트워

크 전체에 걸친 컴퓨팅의 방대한 병렬화는 계산을보다 효율적으로하기 위해 수행되지 않습니다.

사실,이 프로세스는 Ethereum에 대한 계산을 전통적인 "컴퓨터"보다 훨씬 느리고 더 비쌉니다. 오

히려 모든 Ethereum 노드는 EVM을 실행하여 블록 체인 전체에서 합의를 유지합니다. 분산 된 합

의는 Ethereum에 극단적 인 내결함성을 부여하고 중단 시간을 제로로 유지하며 블록 체인에 저

장된 데이터를 영구히 변경하지 않고 검열에 견딜 수있게합니다. Ethereum 플랫폼 자체는 기능이

없거나 가치에 무관합니다. 프로그래밍 언어와 마찬가지로, 기업가와 개발자는 무엇을 사용해야하

는지 결정해야합니다. 그러나 특정 응용 프로그램 유형이 Ethereum의 기능에서 다른 것보다 더

유리하다는 것이 분명합니다. 특히 ethereum은 피어 간의 직접적인 상호 작용을 자동화하거나 네

트워크에서 조정 된 그룹 작업을 용이하게하는 애플리케이션에 적합합니다. 예를 들어 피어 - 투

- 피어 마켓 플레이스를 조정하거나 복잡한 금융 계약을 자동화하는 애플리케이션. 개별적인 금융

기관은 개인이나 금융 기관, 은행, 정부 등을 포함하지 않고 유출 될 수 있습니다. 에테 리엄의

영향력은 더 커질 수 있습니다. 이론적으로, 금융 상호 작용이나 복잡성의 교환은 자동적으로 이

루어지며, 모든 사람들의 코더 통합을 신뢰성있게 사용하는 것이 가능합니다. 금융 응용 프로그램

외에도, 예를 들어, 자산 등록, 투표, 거버넌스 및 사물의 인터넷과 같은 중요한 보안, 안전 및 보

안이 필요한 환경은 Ethereum 플랫폼의 영향을 크게받을 수 있습니다.

이더리움이 어떻게 작동할까요?

Ethereum은 Bitcoin 사용자에게 익숙한 많은 기능과 기술을 통합하면서 많은 수정 및 자체 기술

혁신을 도입했습니다. Bitcoin 블록 체인은 순전히 트랜잭션 목록 이었지만, Ethereum의 기본 단위

14

는 계정입니다. Ethereum 블록 체인은 모든 계정의 상태를 추적하며 Ethereum 블록 체인의 모든

상태 전환은 계정간에 가치와 정보를 전송합니다. • 비공개 키로 제어되는 외부 소유 계정 (EOA) •

계약 코드에 의해 제어되며 EOA Formostusers 만 "활성화"할 수있는 계약 계정, 해당 개인 사용

자 간의 기본적인 차이점 - 이는 개인 키를 제어하므로 EOA를 통제하십시오. 반면 계약 계정은

내부 코드에 의해 관리됩니다. 사용자가 "제어"하는 경우 특정 전자 메일 주소로 전자 메일 주소

(EOA)가 제어하도록 프로그래밍되어 있으며 해당 전자 메일 주소를 제어하는 개인 키를 가진 사

람이 제어합니다. 널리 사용되는 "스마트 계약"은 거래가 해당 계좌로 전송 된 경우 계약 계좌 -

프로그램 상태를 지칭합니다. 사용자는 블록 체인에 코드를 배포하여 새로운 계약을 생성 할 수

있습니다. 계약 계정은 EOA에 의해 지시 될 때만 조작을 수행합니다. 계약 계정에서 임의 번호

생성 또는 API 호출과 같은 기본 작업을 수행하는 것은 불가능합니다. EOA에 의해 요청 된 경우

에만 이러한 작업을 수행 할 수 있습니다. Ethereum은 노드가 계산 결과에 동의 할 것을 요구하

기 때문에 엄격하게 결정적 실행을 보장해야합니다. Bitcoin에서와 마찬가지로 사용자는 네트워크

에서 트랜잭션을 실행해야합니다. 이것은 DDoS 공격 또는 무한 루프와 같은 경박하거나 악의적

인 계산 작업으로부터 모든 블록 체인을 보호합니다. 트랜잭션의 발신자는 계산 및 메모리 저장

을 포함하여 활성화 한 "프로그램"의 각 단계마다 비용을 지불해야합니다. 이 수수료는 Ethereum

의 원래 가치 토큰 인 에테르로 지불됩니다. 이러한 거래 수수료는 네트워크를 확인하는 노드에

의해 수집됩니다. 이러한 "광부"는 Ethereum 네트워크에서 트랜잭션을 수신, 전파, 검증 및 실행

하는 노드입니다. 그런 다음 광부는 Ethereum 블록 체인의 계정 상태에 대한 많은 업데이트를 포

함하는 트랜잭션을 "블록"이라고 불리는 그룹으로 그룹화하고 광부가 블록에 추가 될 다음 블록

이되도록 서로 경쟁합니다 블록 체인. 광부들은 광산을 성공적으로 탈 때마다 에테르로 보상을받

습니다. 이것은 사람들이 Ethereum 네트워크에 하드웨어와 전기를 바칠 수있는 경제적 유인을 제

공합니다. Bitcoin 네트워크에서와 마찬가지로 광부는 블록을 성공적으로 "채굴"하기 위해 복잡한

수학 문제를 해결해야합니다. 이를 "작업 증명"이라고합니다. 솔루션을 검증하는 것보다 알고리즘

적으로 해결하기 위해 더 많은 리소스를 요구하는 계산상의 문제는 작업 증명을위한 좋은 후보입

니다. Bitcoin 네트워크에서 발생한 것처럼 특수 하드웨어 (예 : ASIC)의 사용으로 인해 중앙 집중

화를 방해하기 위해 Ethereum은 메모리가 많은 계산상의 문제를 선택했습니다. 문제가 CPU뿐만

아니라 메모리를 필요로한다면 이상적인 하드웨어는 실제로 일반 컴퓨터입니다. 이로써 Ethereum

의 Proof of Work는 ASIC에 내성을 갖게되어 Bitcoin과 같은 특수 하드웨어가 광업을 지배하는 블

록 체인보다 보안의 분산 된 분산을 허용합니다.

Ethereum에 대해 알아보기

[더배우기]

몇 가지 단점이있는 홍보 동영상 :

15

• Ethereum: the World Computer

• Ethereum – your turn

블록체인 그리고 이더리움 101

•저와 같은 비트 코인에 대해 설명합니다. 블록체인 기술 및 비트 코인을 약간의 기술적 문외한

에게 소개하는 데 유용합니다..

• https://medium.com/@creole/7-a-simple-view-of-ethereum-e276f76c980b

• http://blog.chain.com/post/92660909216/explaining-ethereum

•스택에 대한 기술 분야가 아닌 사람들의 질문에 이더리움 설명

• Reddit threads on ELI5-ing Ethereum:

비디오들

• http://change.is/video/ethereum-the-world-computer-featuring-dr-gavin-wood

인포 그래픽

• Ethereum explained...[to your mother]

• http://decentral.ca/wp-content/uploads/2016/03/infographic.jpg

•https://medium.com/@angelomilan/ethereum-explained-to-my-mom-

infographic673e32054c1c#.n9kzhme6v

대안과 비교

• NXT

• MaidSafe

1.1.2 이 가이드 사용 방법

이더리움 사용: 기본 사항

이 섹션은 기본 프로젝트에 들어가기를 원할 것입니다. 네트워크에서 노드가되면 먼저 Ethereum

클라이언트를 실행해야합니다. 여러 구현은 클라이언트 선택 섹션에 나열되어 있으며 다양한 설

정에서 어떤 클라이언트를 선택할지 조언합니다. 네트워크에 연결하면 네트워크, 연결 문제 해결

16

및 블록 체인 동기화에 대한 기본 정보를 얻을 수 있습니다. 사설망 설정과 같은 고급 네트워크

항목은 테스트 네트워크에 있습니다.

1.1.3 클래식 '출시'

Ethereum 'Classic'은 Ethereum 플랫폼의 원래 제작되지 않은 Ethereum 블록 체인입니다. 우리는

분권화되고 검열에 저항하며 무익한 블록 체인을 믿습니다. 우리는 당신이 닥쳐 올 수없는 세계

적인 컴퓨터 인 Ethereum의 원래 비전이 돌이킬 수없는 현명한 계약을 실행하고 있다고 믿습니

다. 우리는 시스템 포크가 실제 플랫폼 버그를 수정하기 위해서만 가능하고 실패한 계약과 특별

관심사를 구제 할 수는없는 우려의 강력한 분리를 믿습니다. 실제로 신뢰할 수있는 웹 라이센시

저항성 플랫폼.

동기

Ethereum Foundation은 가능한 한 최악의 방법으로 DAO의 사태에 대응했습니다. 재단을 통제하

는 특별한 이해 관계는 에테 리엄 이해 관계자들의 중요한 경제적 소수에 대한 원칙적 반대에 대

비하여 DAO 구제 금융을 통해 중점을두고있다. Carbonvote에 대한 (부지런히 숨겨진, 프로 포크)

동전 투표에 따르면, ETH 소지자의 13 %는이 hardfork에 반대합니다. 또한, Ethereum 광부의 약

22 %가 이전 'DAO softfork'에 반대표를 던졌고 논리적으로 hardfork에도 반대 할 것입니다. 이해

관계자의 중요한 소수는 제출을 위해 침묵하거나 협박해서는 안되며 명확한 선택을해야합니다.

우리가 계속 나아가고 원래의 에리트레아 비전의 생존을 보장하기를 원한다면 우리는 에테 리엄

을 포크해야합니다. 실제로 검열에 견딜 수있는 안전한 분산 응용 프로그램을 구축 할 수있는 토

대가 마련 될 것입니다.

More: http://github.com/ethereumclassic/freeworldcomputer-project

목표

이 프로젝트의 주요 목표는 원래 에테 리움 블록 체인의 생존을 보장하는 것입니다. 우리는 DAO

구제 금융 및 Ethereum Foundation의 프로젝트 방향에 크게 동의하지 않는 사람들에게 대안을

제공하기 위해 노력할 것입니다. 원래 사슬에 남아 있기로 마음 먹은 사람은 누구나 그러한 기회

를 가져야합니다.

암호 해독기

by: Bit Novosti

블록 체인 (blockchains)은 전례없는 수준으로 진정한 세계적 규모로 사회 경제적 협력을 확대 할

수있는 메커니즘을 제공하여 세계를 지배하게 될 것입니다. 그러한 협력은 인간, 집단 및 협회뿐

17

만 아니라 점차적으로 점점 더 많은 독립적 인 인공 작업자를 포함 할 것이다.

• 모든 블록 체인은 네트워크 접근 방식으로 응용 프로그램을 생성하며 네트워크 가치는

리드의 법칙에 따라 참가자 수와 함께 증가합니다. 이전 중앙 집중식 모델에서와 마찬가

지로이 값은 중개자 또는 컨트롤러에 의해 추출되지 않습니다. 대신 참여자들 사이에 공

유되어 강제적 인 협력없이 경제적 인센티브를 제공합니다.

• 모든 블록 체인이 동일하게 생성되는 것은 아닙니다. 확장 성있는 블록 체인을 가능하게

하는 세 가지 주요 특성 : 개방성, 중립성 및 불변성.

• 개방성이 필요합니다. 게임의 규칙이 누구나보고 이해할 수 있도록 열려 있어야한다는 것

은 말할 필요도 없습니다. 누구나 시스템 허가를 받아야한다. 누구나 네트워크는 룰과 일

치해야합니다. 누구나 오픈 프로토콜을 구현하는 자체 클라이언트를 만들 수 있어야합니

다. 누구나 네트워크 보안에 기여할 수 있어야합니다. 등록, 식별 및 기타 조건들은 참여

를 제한해야한다. 이러한 모든 제한 사항으로 인해 네트워크가 확장되지 못하며 강제로

중앙 집중화 위험이 발생합니다.

• 중립성이 필요합니다. 블록 체인을 사용하는 협력에 참여하는 사람은 다른 사람들과 동등

한 발판을 유지하는 것이 중요합니다. 엄청난 경제적 힘을 행사할 지 소량인지는 중요하

지 않습니다. 너는 그다지 너는 그렇지 않다. 너는 마약 중독자 다. 당신이 인간 이건 냉

장고 이건 상관하지 않습니다. 당신이 무엇을 믿는지, 어떤 정치 이론을 당신이 구독하는

지, 또는 당신이 도덕적이거나 비도덕적인 사람인지는 중요하지 않습니다. 참가자의 민족

성, 나이, 성별, 직업, 사회적 지위, 친구 또는 공감, 모델 또는 모델, 목표, 목적 또는 의도.

게임의 규칙은 모든 사람에게 똑같습니다. 중립성이 없다면, 시스템은 다른 참가자를 희

생시키면서 한 세트의 참가자를 향해 비뚤어집니다. 이 경우 범용 승인을 얻고 모든 사람

에게 네트워크 가치를 극대화 할 가능성이 적습니다.

• 불변의 것이 필요합니다. 블록 체인은 보편적으로 받아 들여지는 하나의 역사 버전을 유

지하는 진리 기계이며, 하나의 불변의 일련의 사건입니다. 정치적 이익이나 사업 이익에

관계없이 한 번 사실이라면 무엇이든 사실이며, 로비 활동은 그만큼 변할 수 있습니다.

단순히 역사를 바꿀 수 없다면 노력에 낭비되는 자원이 없습니다. 허점이 하나라도 있다

면, 충분히 동기를 부여하고 결정한 이해 집단이 다른 사람들을 희생시키면서이를 착취하

여 모든 사람의 네트워크 가치를 떨어 뜨릴 것입니다.

• 블록 체인 네트워크를 관리하는 규칙은 미리 알려져 있습니다. 그들은 모든 사람들에게

똑같고 100 % 합의가 아닌 다른 변화를 겪지 않습니다. 예, 100 % 여야합니다. 모든 참가

자가 아닌 시스템의 모든 변경 사항은 네트워크 구성을 자유롭게 결정하므로 모든 사람

이 네트워크 가치를 감소시킵니다.

18

진정으로 분산 된 시스템없이 이러한 블록 체인 특성을 달성하는 것은 불가능합니다. 블록 체인

시스템의 어떤 부분이 중앙 통제의 대상이되면, 하나 이상의 주요 블록 체인 특성을 위반하는 공

격 벡터가 발생합니다. 참여를 제한 할 수 있으며 (예 : AML / KYC 규칙 시행) 개방성을 침해 할

수 있습니다. 차별 정책 (예 : "불법"거래를 필터링)을 실시하여 중립성을 위반하는 것이 가능할 수

있습니다. 사건의 이력 (예 : 자금을 확인하거나 "재배포")을 다시 쓰는 것은 가능할 수 있으며, 따

라서 불변성을 침해 할 수 있습니다. 중앙 집중식 초크 포인트를 도입하면 다른 참가자의 비용으

로 시스템에서 가치를 엿볼 수있는 "블록 체인 중개자 또는 컨트롤러"의 도입을위한 전제 조건이

마련됩니다.

지방 분권화 (Sodecentralization)는 블록 체인 시스템의 중요 기능이며, 그 중 하나가 바로 그 것

이다. 분권화로 인해 블록 체 인은 세계를 통치하게 될 것입니다. 그것 없이는, 그들은 틈새 응용

프로그램에 "포함"되고 철저히 조사 될 것입니다.

쐐기 세동자는 블록 체인을 열고, 중립적이고 흉허하다. 분산화 된 블록 체인 시스템을 보호합니

다. 이것은 암호화 세계와 그 이후의 모든 발전에 대한 우리의 모든 행동과 입장을 알려줍니다.

모든 주요 블록 체인 특성을 위반하려는 모든 시도가 이루어져야합니다. 새로운 중앙 집중화 위

험을 야기하거나 기존의 중앙 집중화 위험을 강화하는 블록 체인 규칙의 모든 변경 사항을 해결

해야합니다. 분권화에 분명히 유익한 개발이나 세 가지 핵심 블록 체인 특성을 강화해야하는 내

용 만 지원하고 장려해야합니다. 블록 체인 혁명은 중앙 집중화되지 않습니다. 그걸 확인합시다.

1.1.4 Web 3: 분산형 애플리케이션을 위한 플랫폼

많은 사람들이 Ethereum과 같은 개방적이고 신뢰할 수없는 블록 체인 플랫폼이 분산되고 안전한

인터넷 웹 3.0에 대한 "백엔드"의 공유 역할을하기에 완벽하다고 믿게되었습니다. DNS와 디지털

신원과 같은 핵심 서비스가 분산되어 있고 개인이 서로 경제적 상호 작용을 할 수있는 인터넷.

Ethereum 개발자가 의도 한대로 Ethereum은 빈 캔버스이며 원하는대로 만들 수 있습니다.

Ethereum 프로토콜은 핵심 기능이 임의의 방식으로 결합 될 수 있도록 일반화되어야합니다. 이상

적으로 Ethereum의 dapp 프로젝트는 Ethereum 블록 체인을 활용하여 이전에는 불가능했던 새로

운 제품과 서비스를 제공하기 위해 분산 된 합의에 의존하는 솔루션을 구축합니다.

Ethereum은 아마도 생태계로 가장 잘 묘사 될 것입니다. 핵심 프로토콜은 Ethereum 프로젝트를

함께 구성하는 다양한 인프라, 코드 및 커뮤니티에서 지원됩니다. Ethereum은 Ethereum을 사용하

는 프로젝트를 보면 이해할 수 있습니다. 이미 Augur, Digix, Maker와 같은 Ethereum을 기반으로

하는 많은 고급 프로파일 프로젝트가 있습니다 (Dapps 참조). 또한 누구나 사용할 수있는 오픈

소스 구성 요소를 개발하는 개발 팀이 있습니다. 이들 조직 각각은 Ethereum Foundation과 분리

되어 있으며 자신의 목표를 가지고 있지만, 의심 할 여지없이 전체 Ethereum 생태계에 이익이됩

19

니다.

더보고 / 읽기 :

• Vitalik Buterin - TNABC 2015: https://www.youtube.com/watch?v=Fjhe0MVRHO4

•Gavin Wood – DEVCON1–Ethereum for Dummies: https://www.youtube.com/watch?v=U_LK0t_qaPo

• Ethereum London Meetup (best detailed here): https://www.youtube.com/watch?v=GJGIeSCgskc

스마트계약

by Alex:

너는 또 다른 사람과 교역 할까? 이디오피아에 머물러 있니? 전쟁 지역의 소수 민족 신문에 투자

자가 되시겠습니까? 인터넷을 통해 5 달러짜리 구매에 대한 법적 구속력 계약서를 작성하는 번거

로움에 갈 수 있습니까?

이 질문의 대부분은 계약서에 대규모 인프라가 필요하다는 이유로 대답하지 않습니다. 때로는 양

당사자간에 신뢰 관계가 필요하며 때로는 유효한 법률 시스템, 경찰력 및 변호사 비용에 의존해

야합니다.

Ethereum에서는 그 중 어떤 것도 필요하지 않습니다. 계약에 대한 모든 요구 사항을 블록 체인에

넣을 수 있다면, 비용이 거의 들지 않는 무자비한 환경에서 처리 할 수 있습니다.

현재의 계약을 블록 체인으로 옮기는 것을 생각하는 대신 경제적으로 실현 가능하지 않거나 합법

적 인 보호가 충분하지 않기 때문에 동의하지 않는 모든 작은 계약을 생각해보십시오.

DAO

다음은 한 가지 예입니다. 친구와 함께 소규모 비즈니스를 운영하는 경우를 상상해보십시오. 변호

사와 회계사는 비용이 많이 들며 책을 감독하는 단일 파트너를 신뢰하는 것이 긴장의 원인이 될

수 있습니다 (사기의 기회조차도). 둘 이상의 파트너가 책을 감독하고 프로토콜이 정확하게 따르

지 않을 때마다 사기의 대상이되는 시스템을 엄격하게 준수해야합니다.

똑똑한 계약을 사용하면 회사의 소유권 및 자금 출납에 대한 조건을 처음부터 지정할 수 있습니

다. 스마트 콘트랙트는 소유자의 중요도를 크게 변경할 수있다. 이러한 스마트 계약은 오픈 소스

소프트웨어로 제공 될 예정이므로 회계사 / 변호사 대신 자신의 프로그래머를 고용 할 필요조차

없습니다.

이와 같은 똑똑한 계약은 즉시 확장됩니다. 몇 십대는 레바논 스탠드에서 수익을 나눠 줄 수 있

20

는데, 이는 국부 펀드가받을 자격이있는 수억 명의 시민들에게 자금을 분배 할 수있는 것처럼 투

명한 것입니다. 두 경우 모두이 투명성의 가격은 1 달러 당 1 센트의 분율 일 가능성이 높습니다.

1.1.5 이더리움의 역사

최근의 역사적인 계정에 대해서는 Taylor Gerring의 블로그 포스트를 참조하십시오.

인셉션

에머리온은 기본적으로 빅토리아 부작용에 대한 설명과 함께 빅토리아 공동체에 대한 조사와 작

업을 수행했다. 그 직후, Vitalik은 Ethereum 백서를 발표했으며 Ethereum 프로토콜과 스마트 계약

아키텍처의 기술적 설계와 이론적 근거에 대해 자세히 설명합니다. 2014 년 1 월, Ethereum은

Vitalik이 미국 플로리다 주 마이애미에있는 The North American Bitcoin Conference에서 공식 발표

했습니다.

그시기에 Vitalik은 Gavin Wood 박사와 함께 일하기 시작했으며 함께 Ethereum을 공동 설립했

습니다. 2014 년 4 월 Gavin은 Ethereum Virtual Machine (EVM)의 기술 사양으로 사용될

Ethereum Yellow Paper를 발표했습니다. The Yellow Paper의 상세한 사양을 따르면, Ethereum 클라

이언트는 프로그래밍 언어 (C ++, Go, Python, Java, JavaScript, Haskell, Rust)를 구현하고 전반적인

소프트웨어를 향상 시켰습니다.

• Ethereum이 Cryptocurrency 2.0 네트워크를 시작합니다 - Coindesk의 2014 년 1 월 기사

• Bitcointalk에서의 Ethereum 발표 bitcin 커뮤니티에 대한 Vitalik의 최초 발표. 5000 개의 답을

가진 포럼 스레드.

Ethereum Foundation과 에테르 presale

Ethereum 용 소프트웨어를 개발하는 것 외에도 새로운 cryptocurrency 및 블록 체인을 시작하는

기능은 부팅 및 실행에 필요한 리소스를 모으기 위해 대규모 부트 스트랩을 필요로합니다.

Ethereum은 개발자, 광부, 투자자 및 기타 이해 관계자의 대규모 네트워크를 시작하기 위해

Ethereum의 통화 단위 인 에테르 토큰의 판매 계획을 발표했습니다. presale을 통한 기금 모금의

법적 및 재정적 복잡성으로 인해 스위스의 Zug에서 2014 년 6 월에 설립 된 Ethereum

Foundation (Stiftung Ethereum)을 포함한 여러 법인체가 창설되었습니다.

Ethereum은 2014 년 7 월부터 42 일간 공개 된 에테르 프리 세일 (ether presale)을 통해 에테

르의 초기 배분을 분배했으며, 31,591 비트 동전은 18,439,086 달러였으며 약 60,102,216 달러였

다. 이 결과는 처음에는 법적 채무를 갚는 데 사용되었지만 아직 보상을받지 못한 개발자 노력의

몇 개월 동안 그리고 Ethereum의 진행중인 개발을 처리하기 위해 사용되었습니다.

21

• 에테르 판매 개시 - Ethereum 블로그에 공식 발표

•(그 이후 비활성화된)사전 할당에 대한 간결한 정보가 풍부한 통계 페이지

•개요:이더리움초기 공식 판매-석회화에 의한 블로그 포스트-에테르 사전 판매에 대한 모든 통

•사전 판매 약관

ETH/DEV 그리고 이더리움 발전

그 결과, Ethereum 개발은 ETH DEV라고 불리는 비영리 기관에서 공식화되었으며, Ethereum

Suisse와의 계약하에 Ethereum의 개발을 관리합니다. Vitalik Buterin, Gavin Wood 및 Jeffrey

Wilcke가 조직의 3 명의 이사로 활동합니다. Ethereum에 대한 개발자의 관심은 2014 년까지 꾸

준히 증가했으며 ETH DEV 팀은 개발 커뮤니티의 평가를 위해 일련의 PoC (proof-of-concept)

출시를 전달했습니다. 전체 블로그는 해당 블로그에 대한 정보도 제공하며 일시적인 회피는 불

가능합니다. 그로 인해 플랫폼 기반의 개발자 커뮤니티가 점점 더 커져 가고 있습니다. 이 추세

는 바로 지금까지 계속되었습니다.

DEVCON-0

2014 년 11 월, ETH DEV는 DEVELON-0 행사를 조직했습니다. DEVCON-0 행사는 전세계의

Ethereum 개발자를 만나서 Ethereum 기술 토픽의 다양한 범위를 만나 논의했습니다. DEVcon-0

의 여러 프레젠테이션과 세션은 나중에 Ethereum의 안정성, 보안 성, 확장 성을 높이기위한 중

요한 계획을 추진하게됩니다. 전반적으로이 행사는 Ethereum의 출시를 위해 계속 노력하면서

개발자들에게 활기를 불어 넣었습니다.

• DEVCON-0 talks youtube playlist

• DEVCON-0 reddit post

• Gav’s DEV update mentioning DEVCON-0

• DEVcon-0 recap blog post

DEVgrants program

2015 년 4 월, Etgramum 플랫폼과 Ethereum 기반 프로젝트 모두에 대한 기금을 제공하는 프

로그램 인 DEVGRANTS 프로그램이 발표되었습니다. 이미 수백 명의 개발자가 Ethereum 프로

젝트와 오픈 소스 프로젝트에 시간과 생각을 투자하고있었습니다. 이 프로그램은 해당 개발자

에게 기여한 것에 대해 보상하고 지원하는 역할을했습니다. DEVgrants 프로그램은 오늘 계속 운

영되고 있으며 프로그램 자금은 최근 2016 년 1 월에 갱신되었습니다.

22

• DEVgrants initial announcement

• Announcement of new funding at DEVCON-1

• DEVgrants public gitter room

• DEVgrants talk at DEVCON-1 by Wendell Davis on YouTube

올림픽 시험장, 버그 보상 및 보안 감사

2014 년과 2015 년 동안 올림픽 (Olympic)이라고 불리는 9 번째 POC 오픈 테스트 넷 (open

testnet)으로 이어지는 일련의 개념 증명을 통해 개발이 진행되었습니다. 개발자 커뮤니티는 네

트워크의 한계를 테스트하도록 초청 받았고, 다양한 기록을 보유한 사람이나 시스템을 여러 가

지 방법으로 파괴하는 데 성공한 사람을 포상하기 위해 상당한 상금이 할당되었습니다. 보상은

생방송으로 출시 된 후 1 개월 만에 발표되었습니다. 2010 년에도 Ethereum 소프트웨어 스택의

일부에 취약성을 확인하는 BTCreview가 제공됩니다. 이것은 의심 할 여지없이 Ethereum의 신뢰

성과 안전성 및 기술 공동체의 안전성에 기여했습니다. 설치 프로그램이 현재 비활성 상태이며

계획된 종료일이 없습니다. Ethereum 보안 감사는 2014 년 말에 시작되어 2015 년 하반기까지

지속되었습니다. Ethereum은 여러 프로토콜을 사용하여 모든 프로토콜 핵심 요소 (Ethereum

VM, 네트워킹, 작업 증명)에 대한 보안 기능을 제공합니다. 감사를 통해 다시 다루어지고 테스

트 된 보안 문제가 밝혀지면서 궁극적으로 더욱 안전한 플랫폼이 탄생했습니다.

• Olympic testnet prerelease - Vitalik’s blogpost detailing olympic rewards

• Olympic rewards announced - Vitalik’s blogpost detailing the winners and prizes

• Bug bounty program launch

• Ethereum Bounty Program website

• Least Authority audit blogpost - with links to the audit report

• Deja Vu audit blogpost

이더리움 프론티어 출시

Ethereum Frontier 네트워크는 2015 년 7 월 30 일에 시작되었으며, 개발자는 현명한 계약을

맺기 시작했고, 분산 된 애플리케이션을 네트워크에 배포하기 시작했습니다. 게다가, 광부들은

각 블록 네트워크를 보호하고 차단 블록으로부터 보호 할 수 있습니다. 프론티어 릴리스는

Ethereum 프로젝트의 첫 번째 이정표이며 개발자가 베타 버전으로 사용할 목적으로 개발되었

지만 예상 한 것보다 더 강력하고 신뢰할 수있는 것으로 밝혀졌으며 개발자는 솔루션을 구축하

23

고 Ethereum 생태계.

다음 항목을 참조하십시오.

• Original announcement of the release scheme by Vinay Gupta

• Frontier is coming - Frontier launch announcement by Stephan Tual

• Frontier launch final steps - Follow-up post to announcement

• Ethereum goes live with Frontier launch

• The frontier website

DEVCON-1

두 번째 개발자 컨퍼런스 DEVCON-1은 2015 년 11 월 초 런던시에서 열렸습니다. 100 개 이상

의 프리젠 테이션, 패널 토론 및 조명 워크숍은 개발자, 기업가, 사상가 및 경영진이 섞인 400

명이 넘는 참가자를 끌어 모았습니다. 회담은 모두 녹음되었고 자유롭게 이용 가능하다.

UBS, IBM 및 Microsoft와 같은 대기업의 존재는이 기술에 대한 기업의 관심을 분명히 나타냅니

다. Microsoft는 Microsoft Azure 클라우드 플랫폼의 서비스로 새로운 블록 체인에 Ethereum을

제공 할 것이라고 발표했습니다. DEVCON-1과 함께,이 발표는 Etherchum을 중심으로 블록 체인

기술이 주류가 된 순간으로 기억 될 것입니다.

• DEVCON-1 talks Youtube playlist

• DEVCON-1 website full listing of presentations with links to the slides if available.

역사 자료

• a simple graphical timeline

1.1.6 Community

토론을 시작하거나 질문 할 때 현명하게 포럼을 선택하고 다양한 포럼을 깨끗하고 정돈 된 상

태로 유지하십시오.

Reddit

Ethereum classic 서브 레딧은 가장 포괄적 인 Ethereum 클래식 포럼으로 커뮤니티 토론의 대

부분이 일어나고 있으며 핵심 개발자도 활발하게 활동합니다. 뉴스, 언론 보도, 발표, 브레인 스

토밍에 대한 일반적인 토론을위한 포럼입니다. 일반적으로 Ethereum은 모든 커뮤니티와 관련이

24

있습니다.

엄밀히 말하면 가격 논의가 없습니다.

또한 실용적인 도움을 요청하거나 명확한 즉각적인 답변이 필요한 질문을 게시하는 데 이상적

인 곳이 아닙니다 (Gitter Rooms (old) 및 Stack Exchange (old)를 각각 사용하십시오).

게시하기 전에 Ethereum고전적인 하위 디렉토리 규칙을 읽어 보십시오.

추가 특수 하위 규정:

• /r/Ethereum- Ether hard-fork discussion

• /r/EthTrader - Ether trading, price and market

• /r/EtherMining - Ether mining discussion

• /r/Ethmarket - Marketplace for individuals looking to exchange goods and services for Ether

•/r/Ethinvestor-

NewsandprospectsforEthereuminvestors.FollowingthelongtermtrendsintheEthereum marketplace.

• /r/ethereumism/-abitmoreism,ostic,ical,istandtinfoilhats,pyramidsandcrystalballtypeofviews-the

ethereal side of Ethereum

Ethereum Classic Wiki

• Ethereum Classic Wiki: ETHC wiki

Telegram

• Ethereum Classic (general discussion): @ethclassic

• Ethereum Classic Dev: @etcdev

Slack

• https://ethereumclassic.slack.com/

개선 방안 (EIPs)

EIP 계획은 프로토콜의 개선을 조정하는 프레임 워크 및 대부분 비공식적 인 비즈니스 프로세

스를 목표로합니다. 사람들은 아이디어를 제안하거나 EIP 저장소에 요청을 제기해야합니다. 기

본 필터링 후 제안서에 번호가 부여되고 초안 양식으로 게시됩니다. EIP가 활성화 되려면 커뮤

니티의 상호 동의가 필요합니다. 제안 변경은 궁극적으로 동의가 Ethereum 사용자의 합의에 달

25

려 있다고 생각해야합니다. EIP 토론에 대해서는 'EIP 토론을위한 거터 채널'을 사용하십시오.

• EIP guidelines and sample EIP

• EIP template

• EIP repository and README

중국 공동체

• WeChat group: ETCClassic

• QQ group: 361470220

• Weibo Group: http://weibo.com/ethereumclassic/

• Chinese Wiki: http://assembly.io/

• 8btc: http://8bct.com/forum-126-1.html

러시아 공동체

• https://bitcointalk.org/index.php?topic=1563268

• https://bitcointalk.org/index.php?topic=1563328

• https://ethclassic.ru

인도네시아 공동체

• https://bitcointalk.org/index.php?topic=1563400

Gitter Rooms (old)

Gitter는 매일 채팅을위한 최고의 포럼입니다. devs가있는 가상 공동 작업 공간이므로 필요한 경

우 빠른 도움과 약간의 손을 잡을 수 있습니다.

Gitter는 Github 계정을 사용하고, Github 통합 (notifificationofpullrequestsetc), 비공개 채널을

제공하며, 표식 포맷을 제공합니다.

대부분의 Gitter 채널은 특정 리포지토리 또는 연구 또는 거버넌스와 같은 일반적인 주제를 중

심으로 구성됩니다. 적절한 방을 선택하고 주제에 대한 토론을 계속하십시오.

Ethereum 조직을위한 거친 방의 전체 목록을보십시오. 다음은 활성 공개 채널 목록입니다.

• go-ethereum - about geth (and tools related to the go implementation)

26

• cpp-ethereum - about eth (and tools related to the C++ implementation)

• web3.js - about web3.js, Ethereum JavaScript API library

• Solidity - The Solidity Contract-Oriented Programming Language

• serpent - The Serpent language for contract development

• mist - GUI dapp browser, official wallet app

• light-client - about light client and the LES protocol

• research - Ethereum research

• governance - about dev governance

• whisper - anonymous datagram publishing

• swarm - decentralised content storage and distribution network

• EIPs - discussion of Ethereum Improvement Proposals (EIPs)

• ethereumjs-lib - a JavaScript library of core Ethereum functions

• devp2p - ÐΞV’s p2p network protocol & framework

Stack Exchange (old)

Ethereum Classic Stack Exchange는 Q & A 커뮤니티의 StackExchange 네트워크의 일부입니다.

StackExchange는 모든 질문과 답변이 후손을 위해 보존되는 무료 Q & A 사이트입니다.

이것은 기술적 인 질문을하는 가장 좋은 곳입니다. 질문에 대답하고 평판 포인트를 수집하여

동료 ethereanans 도와주세요. Obsolete

Skype

사회성에 대한 언급은 성품을 사용하도록 촉구 하겠지만, 사람들은 그 성품을 사용하고 끈적

거리거나 느슨한 것을 사용하도록 권합니다.

Ethereum Forum

Stephan Tual의 전설적인 Ethereum 포럼은 더 이상 유지되지 않으며 곧 폐기 될 것입니다. 위

에 열거 된 권장 대안 중 하나를 사용하는 것이 좋습니다.

1.1.7 이더리움 재단

27

그 밖에도 Ethereum과 분산 된 기술 생태계에 가장 잘 부합하기 위해 Ether Sale으로부터 모금

된 기금을 관리하기위한 목적으로, 스위스에 등록 된 비영리 단체가 있습니다. 스위스에서

2014 년 7 월에 설립 된 Stiftung Ethereum의 사명은 새로운 개방형 및 분산 형 소프트웨어 아

키텍처의 분야에서 특히 새로운 기술 및 응용 프로그램의 개발을 촉진하는 것입니다. 분산되고

열린 기술이 개발되고, 양육되고, 촉진되고 유지되는 것이 목표입니다. 독점적이지는 않지만

Ethereum 프로토콜 및 관련 기술의 개발을 촉진하고 Ethereum 기술 또는 프로토콜을 사용하는

응용 프로그램의 판촉 및 지원에 중점을두고 있습니다. Stiftung Ethereum은 다양한 형태의 분산

된 인터넷을 지원하고 옹호 할 것입니다.

웹 사이트에서 재단 관리팀에 대해 자세히 알아보십시오.

Ethereum Foundation’s faces to the community

• Official Homestead website - main entrypoint

• Reddit - see Community

• Blog

• Twitter

• Youtube

• Facebook - largely unused

• Email - use if you must

Ethereum 블로그의 포괄적 인 블로그 포스트의 형태에서 대부분의 주요 내용과의 의사 소통.

게시물의 일부는 기술, 일부 조직, 일부 개인 게시물입니다. 모든 블로그 게시물은 Twitter 및

Reddit에서 발표됩니다. Foundation Youtube 채널은 개발자 회의 DEVCON0 및 DEVCON1의 모

든 회담을 포함하여 우리 비디오를 호스팅합니다.

커뮤니티 토론 포럼은 커뮤니티를 참조하십시오.

1.1.8 기부자

이 문서는 원래 홈 팀 문서 이니셔티브라는 프로젝트의 일환으로 이더리움과 이더리움클래식

커뮤니티에 의해 공동으로 작성되었습니다. 이 프로젝트는 다음에 의해 조정되었습니다.

• Viktor Trón (“zelig”)

• Hudson Jameson (“Souptacular”)

28

그 후에 다음과 같은 방법으로 조정된 고전적 문서화 이니셔티브를 사용하여 전통적인 지역 사

회의 요구에 부응하도록 수정되었습니다.

• Cody Burns (“dontpanicburns”)

이러한 노력에 도움을 주신 모든 분들께 감사 드립니다.

1.2 이더리움 고객

1.2.1 고객 선택

Ethereum 고객이 여러 명인 이유는 무엇입니까?

이더리움클라이언트는 JavaVM또는. NET런타임과 매우 유사합니다.

컴퓨터에서 "Ethereum 프로그램"을 실행할 수 있습니다. 그것들은 서면 규격 (Yellow Paper)으로

구현되며, 상호 운용성이 있으며 다소 "필수품"이다.

프로젝트가 시작된 이래로 다양한 운영 체제 범위에서 여러 개의 상호 운용 가능한 클라이언트

구현이있었습니다. 클라이언트 다양성은 생태계 전체에 큰 승리입니다. 이 프로토콜을 사용하면

프로토콜이 모호하지 않은지 확인할 수 있습니다. 새로운 혁신을 위해 문을 열어 두었습니다.

그것은 우리 모두를 정직하게합니다. 그러나 최종 사용자가 사용할 수있는 범용 "Ethereum

Installer"가 없기 때문에 최종 사용자에게는 매우 혼란 스러울 수 있습니다.

홈스테드 단계에 접어 들면서, 바둑 클라이언트는 매우 지배적이지만 항상 그런식이 아니 었으

며 앞으로 반드시 그렇게되지는 않을 것입니다. ethereumH를 제외한 모든 클라이언트에는

Homestead 호환 릴리스가 있습니다. 아래 표에는 최신 릴리스에 대한 링크가 포함되어 있습니

다.

1.2.2 클라이언트 설치

29

The Foundation Foundation에서 관리하는 리소스를 기반으로 개발이 진행된 수많은 '많은 고객'

이 있습니다. 공동체 또는 다른 상업적 실체에 의해 구축 된 다른 여러 클라이언트가 있습니다..

이 장의 특정 클라이언트 섹션에서 특정 클라이언트에 대해 자세히 읽어 보십시오.

데스크탑/노트북에 무엇을 설치해야 합니까?

랩톱 또는 데스크탑 컴퓨터가있는 경우에는 Ethereum Wallet을 설치하면됩니다.

• Download the latest Ethereum Wallet ZIP from Github.

• Unzip wherever you like

• Click on the executable (Ethereum-Wallet,Ethereum-WalletorEthereum-Wallet.app)

• The block-chain will be downloaded

Ethereum Wallet은 Mist Browser의 "single dapp"배포이며, Homestead 이후에 나오는 대도시 개

발 단계의 중심이 될 것입니다.

Mist는 번들 된 e-mail과 cpp-ethereum 바이너리를 제공하며 Mist가 시작될 때 명령 행

Ethereum 클라이언트를 실행하지 않으면 번들 클라이언트 중 하나를 실행하기 시작합니다.

명령 행에서 Ethereum과 상호 작용하고 Javascript 콘솔을 이용하려면 클라이언트 애플리케이션

중 하나와 Mist를 직접 설치해야한다.

go-ethereum과 cpp-ethereum은 프로젝트를 시작한 이래 개발 중에 있으며, 보안 감사를 통과

했으며, 모든 플랫폼에서 작동하고, 지속적인 유지 관리 및 지원에 할당 된 The Ethereum

Foundation 리소스를 보유하고 있기 때문에 시작하기 가장 좋은 장소입니다. .

• Follow the Installing binaries instructions forcpp-ethereum

• Forgo-ethereum, just unzip the released binaries

패리티는 빠른 속도로 인기를 얻고 있습니다.

물론, 그것은 모두 개인적인 취향의 문제입니다. 그들 모두를 시도해보십시오 :-)

광산업을하고 싶다면 미스트는 충분하지 않을 것입니다. 채광 섹션을 확인하십시오.

모바일 PC/태블릿에 무엇을 설치해야 합니까?

우리는 모바일 장치에 대한 지원을 시작했습니다. Go 팀은 실험용 iOS 및 Android 라이브러리

를 게시하고 있습니다. 일부 개발자는 모바일 응용 프로그램의 부트 스트랩을 시작하기 위해

사용하고 있지만 아직 사용할 수있는 모바일 Ethereum 클라이언트는 없습니다.

30

Ethereum을 모바일 장치에서 사용하는 주된 장애는 Light Client 지원이 여전히 불완전하다는

것입니다. 완료된 작업은 사설 지사에서 처리되지 않으며 Go 클라이언트에서만 사용할 수 있습

니다. doublethinkco는 후원금 기금을 수반하여 C ++ 고객을위한 Light Client 개발을 시작할 예

정입니다.

처음에 Ethereum (J)을 기반으로 한 ethereumj-personal을 사용하고 있던 Syng.im을 확인해보십

시오.하지만 Light Client를 사용하여 Geth 크로스 빌드에 최근에 액세스했습니다.

SBC에 무엇을 설치해야 합니까?

당신은 당신의 기술 수준에 따라, 그리고 당신이하고 싶은 것을 선택할 수 있습니다.

• 완전히 준비된 이미지 다운로드 (자세한 다운로드 및 설치 지침이 포함 된 페이지 링크)

- 라스베리 파이와 같은 에테 리엄과 SBC 보드가 처음이라면 이것은 당신을위한 것입니다! 사

용중인 개발 보드에 이미지 사양을 다운로드하고 SD 카드로 구워서 장치를 부팅 한 다음

Ethereum을 실행하면됩니다!

•사전 컴파일된 응용 프로그램 다운로드(상세 다운로드 및 설치 지침이 있는 페이지 링크)

- SBC가 이미 실행 중이며 유지하고자하는 특정 OS 또는 설정이있는 경우 이것이 최선의 선택

입니다! 플랫폼에 따라, 당신은 간단히 apropriate 실행 파일을 다운로드 할 수 있으며, 라이브

러리를 공유하고 PATH를 설정하는 것만으로도 기존 환경에서 실행될 수 있습니다!

• 사용자 정의 가능한 스크립트를 사용하여 소스에서 빌드하십시오 (자세한 내용과

https://github.com/ethembedded에 대한 개별 SBC 링크로 연결되는 링크)

- 맞춤 설치를 수행 하시겠습니까? 우리는 "장치상의"소스에서 컴파일 할 수있는 스크립트를

가지고 있습니다. 스크립트에는 클라이언트 자체뿐만 아니라 종속성의 자동 설치가 포함되어

있습니다. 이를 통해 Ethereum 클라이언트의 특정 버전 (즉, "개발", "마스터"등)을 설치하고, 자

신 만의 포크 버전의 클라이언트를 컴파일하고, 일반적으로 빌드 프로세스의 intracacies를 가지

고 놀 수 있습니다.

1.2.3 cpp-ethereum

31

빠른 시작

• The Github project for the Ethereum C++ client is https://github.com/ethereum/cpp-ethereum/

• As of right now, though (only for the v1.3.0 release), the canonical mainline is at

https://github.com/bobsummerwill/cpp-ethereum/tree/merge_repos

• Prior to the v1.3.0 release and for several months before, the canonical mainline was at

https://github.com/ethereum/webthree-umbrella

• If you just want to install binaries then head to Installing binaries.

• If you want to build from source then head to Building from source.

• You can chat with the community and developers at cpp-ethereum-gitter

32

• The developers have their in-depth conversations at cpp-ethereum-development-gitter

• Please log any issues using the Github issue tracker.

• cpp-ethereum is extremely portable and is used on a very broad range of platforms.

세부

프로젝트 리부팅

이 프로젝트는 새로운 리더십으로 재부팅을 진행합니다. 글을 쓰는 시점에는 여러가지 움직이는 부분이 있

습니다. 우리와 함께 하시기 바랍니다.

우리는 홈스테드에서 포르젝트 명명법을 단순화했습니다. 그러나 과거의 명명 그림자는 여전히 남아 있습

니다. 2016년 5월 Christian 의 C++개발 업데이트가 추가로 있었습니다.

다음 단계는 우리의 보류중인 git저장소 재구성입니다. 그러면 코드가 다시 cpp-ethereum저장소로 옮겨

집니다.

또한 우리는 코드베이스를 Apache2.0으로 다시 라이선스하기 위해 노력하고 있습니다. 이는 코어를 자유

화하려는 매우 장기적인 계획의 절정일 것입니다. 2015년에 cpp-ethereum코어를 MIT로 재 라이선스 하

기 위한 노력이 시작되었지만 완료되지 않았습니다. 이것은 특히 리눅스 기금의 Hyperledger 프로잭트와

의 협력 가능성에 대한 관점에서 그 노력의 부활입니다.

현재 현식 (사각형은 응용 프로그램, 서클은 라이브러리) :

타겟 리팩터링 :

코드의 기록

C++Ethereum프로젝트는 2013년 12월 이더리움 기금의 전 CTO 인 Gavin Wood에 의해 시작되었습니

다.그것은 이더리움 기금에 의해 지어진 지배적인 geth 클라이언트 뒤에 먼 길을 걸어가는 고객 중 두 번

째로 인기가 있습니다.

원래 C++ 개발자 중 상당수는 Slock. It과 Ethcore에서 2015년 말과 2106년 초에 C++개발을 위한 75%

의 비용 절감을 거쳐 역할을 수행했습니다. 이러한 삭감은 재단 비용을 통제하기 위한 광범위한 노력의 일

환이었으며, 최근 ETH 가치가 급등하기 전에 재단이 훨씬 더 안정적인 재무 상태에 빠지게 되었습니다.

코드를 작성한 모든 사람들의 전체 목록은 참여자를 참조하십시오.

이식성

Ethereum C++클라이언트 코드는 이식성이 뛰어나며 거대한 범위의 다양한 운영 체제 및 장치에서 성공

33

적으로 사용되고 있습니다.

우리는 계속 범위를 확장하고 추가 운영 체제, 컴파일러 또는 장치에 대한 지원을 추가하는 끌어 오기 요

청에 매우 개방적입니다.

작동하는 것으로 확인된 운영 체제

리눅스

BSD

OS X

윈도우

34

운영 체제 – 진행중인 작업

리눅스

BSD

안드로인드

작동중인 것으로 검증된 장치

모든 종류의 데스크 탑 및 랩 탑 장치 (Windows,OSX,DesktopLinux)

스마트폰

-리눅스

SBCs

-리눅스

35

디바이스 – 진행중인 작업

스마트 시계

스마트폰

개발자 용 전화

36

테블릿

SBCs

바이너리 설치하기

cpp-ethereum개발팀과 광범위한 이더리움 커뮤니티는 다양한 플랫폼을 위한 다양한 형태의 바이너리 릴

리스를 공개합니다. 이것은 해당 릴리스의 전체 목록을 목표로 합니다.

제 3자 팩 노화 방지 노력에 대해 알고 계시다면, cpp-ethereum gitter 채널에 알려 주시기 바랍니다. 우

리는 이 목록에 추가 할 것입니다.

UbuntuPPA(개인 패키지 아카이브)

다음 Ubuntu 버전에 대해 PPA 인스턴스를 설정했습니다.

64 비트 빌드만 지원합니다. 소스에서 빌드하고 EVMJIT 및 기타 기능을 사용하지 않도록 설정하여

Ubuntu 32 비트에서 클라이언트를 작동 시키는 것이 가능할 수 있습니다. 우리는 그러한 지원을 추가하려

는 요청을 받아 들일지 모르지만, Ubuntu 32비트 빌드를 지원하기 위해 개발 시간을 낭비하지 않을 것입

니다.

“eth” 명령 줄 도구 설치 경고 : ethereum-qt PPA는 Trusty의 경우 5.2에서 Utopic의 5.3까지 시스템

전반의 Qt5 설치를 5.5로 업그레이드 합니다.

최신 안정 버전 :

37

최첨단 개발자 버전을 사용하려면 다음을 수행하십시오.

Mix IDE설치

Mix IDE는 개발자 PPA에서 Ubuntu에 제공됩니다. 위의 단계를 수행 한 다음 수행하십시오.

윈도우 설치 프로그램

각 릴리스에 대해 윈도우 설치 프로그램을 생성합니다.

자동화 된 빌드는 모두 윈도우 8.1 호스트 시스템에 구축되지만 윈도우7, 윈도우 8/ 8.1, 윈도우 10 및 윈

도우 서버 2012 R2에서 작동합니다.

msvcp120.dll또는 msvcr120.dll파일이 누락되었다고 불평하는 런타임 오류가 발생하면 마이크로소프트에

서 Visual Studio 2013 용 Visual C++ 재 배포 가능 패키지를 설치하십시오.

우리는 64비트 빌드만 지원합니다.

소스에서 빌드하고 EVMJIT 및 기타 기능을 사용하지 않도록 설정하여 윈도우 32비트에서 클라이언트를

작동시키는 것이 가능할 수 있습니다. 이러한 지원을 추가하기 위해 요청을 받아 들일 수도 있지만 윈도우

32비트 빌드를 지원하기 위해 개발 시간을 낭비하지 않을 것입니다.

윈도우를 사용하는 대다수의 사람들은 현재 64비트 하드웨어를 가지고 있습니다.

Windows Chocolatey NuGet 패키지

우리는 과거에 그렇게 했음에도 작성 당시 Chocolatey패키지를 생성하지 않습니다.

이 기술에 익숙하지 않은 사람들을 위해, 이것은 기본적으로 도구에 대한 글로벌 자동 설치 프로그램인 윈

도우용 apt-get입니다.

우리는 OS X에서 홈 브루(Homebrew)를 지원하고 Ubuntu에서 PPA를 사용하는 것과 같은 이유로 가까

운 시일 내에 Chocolatey를 다시 지원하고 싶습니다. 기술적으로 유능한 사용자의 경우 다음과 같은 명령

줄 작업이 매우 편리합니다.

38

OS X DMG (디스크 이미지) 우리는 각 릴리스에 대해 OS X 디스크 이미지를 생성합니다.

우리는 최신 OS X 버전 2개만을 지원합니다.

64비트 빌드만 지원합니다.

시스템이 이러한 OS X 버전 중 하나를 지원하지 않으면 운이 없는 것입니다. 유감입니다.

OS X Homebrew 패키지

우리는 자동 빌드 시스템 내에서 Homebrew 패키지를 생성합니다.

우리는 최신 OS X 버전 2개만을 지원합니다

64비트 빌드만 지원합니다.

스템이 이러한 OS X 버전 중 하나를 지원하지 않으면 운이 없는 것입니다. 유감입니다.

모든 OS X 빌드에서는 Homebrew 패키지 관리자를 설치해야만 다른 작업을 수행 할 수 있습니다. 처음부

터 다시 시작하고 싶다면 Homebrew를 제거하는 방법입니다.

Homebrew에서 Ethereum C++ 구성 요소를 설치하려면 다음 명령을 실행하십시오.

또는 ...

... AlethZero와 Mix IDE를 만들고 싶다면 ....

응용 프로그램을 시작하려면 터미널 창에 다음 명령 중 하나를 입력하십시오.

다음은 지원되는 모든 명령 행 옵션을 상세히 설명하는 Homebrew Formula입니다.

39

Razberry Pi, Odroid, BeagleBone Black, Wandboard EthEmbedded의 John Gerryts는 이러한 장

치의 빌드 스크립트를 테스트하고 유지 관리하는것 외에도 주요 일정에서 다양한 SBC 용 이진

이미지를 작성합니다. EthEmbedded은 2015 년 5 월에 devgrant받는 사람이었습니다. 그는 eth와

geth 모두를 위한 바이너리를 만듭니다.

다음은 EthEmbedded의 Homestead 바이너리입니다.

리눅스 ARM 크로스 빌드웨어, 웨어러블, SBC doublethinkco의 Bob Summerwill은 모바일 및 웨어

러블 Linux 배포판 (Sail fi sh OS, Tizen OS, Ubuntu Touch)에서 EthEmbedded 대상과 동일한 SBC

까지 매우 다양한 하드웨어에서 작동하는 ARM 바이너리를 교차 빌드합니다. doublethinkco는

2016 년 2 월 BlockGrantX 수신자였습니다.

전체 플랫폼의 매트릭스 및 알려진 상태는 cpp-ethereum-cross README를 참조하십시오.

다음은 doublethinkco의 크로스 빌드 바이너리입니다 : 발표 - Homestead의 크로스 바이너리 빌드

바이너리.

ArchLinux 사용자 저장소 (AUR) Arch Linux 패키지는 Afri Schoedon이 관리하는 커뮤니티입니다.

aur.archlinux.org에서 다음 패키지를 확인하십시오.

• ethereum (안정된 최신 릴리스)

• ethereum-git (불안정, 최신 개발)

패키지를 빌드하고 설치하려면 AUR 설치 패키지 지침을 따르십시오.

• PKGBUILD가 포함 된 타볼 가져 오기

• 타볼 추출

• 파일이 저장된 디렉토리에서 makepkg -sri를 단순한 사용자로 실행하십시오

• 수퍼 유저로 pacman -U를 사용하여 결과 패키지를 설치합니다

yaourt 또는 pacaur와 같은 AUR 도우미를 사용하여 시스템에 직접 패키지를 설치할 수도 있습니

다.

소스에서 빌드

40

개요 cpp-ethereum 코드베이스는 Gitub의 webthree-umbrella repo 아래에 하위 모듈로 모두 그룹

화 된 여러 Git 저장소에서 중간 중간으로 이동하여 cpp-ethereum으로 다시 돌아갑니다.

현 시점에서 (v1.3.0 릴리스에만 해당), 표준 메인 라인은 다음과 같습니다.

https://github.com/bobsummerwill/cpp-ethereum/tree/merge_repos

commonCMakebuild 시스템을 사용하여 플랫폼 별 빌드 파일을 생성합니다. 즉, 워크 플로는 사

용하는 운영 체제와 매우 유사합니다.

• 빌드 도구 및 외부 패키지 설치 (플랫폼에 따라 다름)

• 웹 사이트 - 우산 자식 저장소에서 소스 코드 복제

• CMake를 실행하여 빌드 파일 (makefile, Visual Studio 솔루션 등)을 생성합니다.

• 빌드하십시오

플랫폼 별 지침

Linux 용 빌드 주 - EVMJIT와 다른 기능을 사용하지 않도록 설정하여 Linux 32 비트 용 클라이언

트를 작동시킬 수도 있습니다. 우리는 그러한 지원을 추가하려는 요청을 받아 들일지 모르지만

Linux 32 비트 빌드를 지원하기 위해 자체 개발 시간을 투입하지 않을 것입니다.

Linux는 배포판에서 시작하여 배포를 시작하기 전에 먼저 배포판 별 패키지 시스템 단계에 대한

공포를 표시합니다. 아래 섹션에서는 이러한 단계를 캡처하려고 시도합니다. 다른 배포판 및 히트

문제로 사용하는 경우 알려 주시기 바랍니다.

저장소 복제 소스 코드를 복제하려면 다음 명령을 실행하십시오

의존성 설치하기 (쉬운 방법!) 2016 년 7 월의 "홈 커밍"릴리즈 (v1.3.0)에서는 배포판을 식별하고

필요한 패키지를 설치하는 외부 종속성을 설치하기위한 새로운 "원 버튼"스크립트를 추가했습니

다. 이 스크립트는 새롭고 불완전하지만이 문서의 다음 절에서 설명하는 수동 단계보다 쉬운 방

41

법입니다. 가자! 그것은 우분투와 macOS 및 다른 몇몇 배포판에서 이미 작동합니다.

당신이 그것을 시도하고 그것이 작동하지 않는 경우 알려 주시기 바랍니다 우리는 우선 귀하의

배포판을 해결할 것입니다! :

의존성 설치하기 (배포판 별)

Ubuntu을 위한 의존성 설치하기

Ubuntu Trusty Tahr (14.04) 단계 :

Ubuntu Utopic Unicorn (14.10) 단계

sudo apt-get -y upgrade

sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev

\ libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \

libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev

\ libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers

\ libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev

\ libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev

sudo apt-get -y install libjson-rpc-cpp-dev

sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine

./install_deps.sh

42

Ubuntu Vivid Vervet (15.04) 단계

43

Ubuntu Wily Werewolf (15.10) 단계

Ubuntu Xenial Xerus (16.04) 단계

44

Fedora 20 단계

Fedora 21 단 계

github 에서 json-rpc 를 perhttps 로 빌드 하십시오 : //github.com/ethereum/cpp-ethereum

Fedora 22 Fedora 22 종속성은 이미 설치 한 항목에 따라 다를 수 있습니다.

gcc 버전 4.9를 설치하십시오! Fedora 22는 다른 컴파일러 (CC v5.3)와 함께 제공됩니다. SRC에서

gcc 버전 4.9를 설치했기 때문에 웹 사이트를 엮지 않을 것입니다.

usr / local에 gcc4.9가 설치되어 있는지 확인하십시오. / home / app / gcc49에 설치 했으니 선택 사

항을 google에서 gcc 컴파일 방법을 읽어보십시오! 그 후에는 모든 cmake 전에 gcc4.9를 사용하

여 필요한 모든 것을 4 개의 웹 우산으로 엮어야 합니다.

이렇게하면 배포판 F22와 함께 제공되는 대신 gcc4.9를 사용하여 엮습니다.

45

배포판과 함께 제공되는 컴파일러를 제거하지 않는 것이 좋습니다! symlinking으로 작업 할 수도

있습니다.

Fedora에서 설치 COPP REPO LLVM3.7 with :

Fedora 22는 주식 리포지토리에서 llvm-3.5를 제공하기 때문에 이 작업을 수행해야했습니다! 다른 솔루션이

있을 수 있지만 이 중 하나가 날 위해 일했습니다.

SRChttps에서 CryptoPP 설치 : //github.com/weidai11/cryptoppCRYPTOPP_5_6_2 :

COPR에서 QT5를 설치하십시오. "dnf copr enable @ kdesig / Qt5"최신 QT5 버전 :

이것은 COPR repo에 QT5 버전 5.6.0을 설치해야합니다. 다른 QT5가 있습니다. 다른 사용자의

패키지는 테스트하지 못했습니다.

qtwebengine fromhttps를 설치하십시오 : //GITHUB.COM/QTPROJECT/QTWEBENGINEI 설치된 버전

5.6.0 다른 사람들도 알아낼 수 있습니다 : D

githubhttps의 json-rpc를 설치하십시오 : //GITHUB.COM/ETHEREUM/CPP-ETHEREUM/ISSUES/617

46

콘솔에서 jsonrpcstub가 작동하는지 확인하고 "jsonrpcstub"를 입력하고 응답하는지 확인하십시오.

만약 No Argument 또는 slt라고 대답하면 blabla.so와 같은 파일을 얻지 못하면 libs dir / usr / local

/ lib64 또는 usr / local / lib에없는 파일을 심볼릭 링크해야합니다. blabla.so 파일 "updatedb"와

"locate blabla.so"로 찾으려고 합니다.

그런 파일이 없다면 심볼릭 링크가 없거나 일부 누락 된 패키지가 있으면 "dnf search packname

*"또는 "dnf list packname *"과 같이 dnf로 찾으십시오. Webthree-Umbrella의 5 분짜리 컴파일은

Tflux99를 즐기지 않습니다.

openSUSE를위한 의존성 설치하기 다음은 OpenSUSE에서 최신 웹 우산을 만드는 데 필요한 의

존성을 얻는 방법입니다. 이것은 Leap 42.1에서 수행되었지만, Tumbleweed와 13.x에서 사용 가능

한 패키지가 동등해야 합니다.

먼저 주요 저장소에서 제공하는 종속성을 설치하십시오.

generic libOpenCL1을 사용할 수도 있지만 AMD 드라이버 repo fglrx64_opencl_SUSE421의 AMD

독점 패키지 만 테스트했습니다.

이러한 패키지는 표준 보고서에는 없지만 OpensuSE빌드 서비스 패키지 검색 및 Yast1-ClickInstall

을 사용하여 확인할 수 있다.

• libargtable2-devel

• libv8-3

• v8-devel

47

Chrome repo에서 v8을 설치 한 경우 devel 패키지는 작동하지 않는 4.x 분기로 기본 설정됩니다.

이 패키지를 3.x로 다운 그레이드하려면 YaST 또는 zypper를 사용하십시오.

Arch리눅스에 대한 종속성 설치 Arch리눅스 기반 컴파일에는 일반 저장소와 ARCH사용자 저장소

(AUR)모두에서 종속성이 필요합니다. 일반 저장소에서 패키지를 설치하려면 pa.an을 사용합니다.

AUR로부터의 패키지 설치를 위해, 많은 AUR도우미가 이용 가능합니다. 이 가이드에서는

YaourtAUR도우미가 사용됩니다.

종속 항목 설치

#fromofficialrepositoriessudopacman-Sygitbase-develcmakeboostcrypto++leveldbllvmminiupnpc

libcl opencl-headers libmicrohttpd qt5-base qt5-webengine

# from AUR yaourt -Sy libjson-rpc-cpp

소스 코드 컴파일 이 단계 동안 이더리움 설치 폴더를 지정할 수 있습니다. 그러나 폴더의 지정

은 선택 사항입니다. 지정되지 않으면 이진 파일이 빌드 폴더에 위치합니다. 그러나 이 지침서에

서는 Ethereum파일이/opt/.eth에 설치된다고 가정한다. /user등에 설치된 Ethereum파일을 나중에

삭제하는 것이 훨씬 쉽기 때문에 사용/선택하는 것이 좋습니다. 또한/옵션은 수동으로 컴파일한

프로그램과 같이 패키지 시스템에 의해 관리되지 않는 소프트웨어를 설치하는 데 일반적으로 사

용됩니다.

컴파일 및 설치가 성공적으로 완료되면 이더리움 바이너리는/opt/.eth 2/V/bin,/opt/V/init시 공유

라이브러리 및 헤더 파일에 확인할 수 있다.

48

Ethereum라이브러리 경로 지정 이더리움이/opt/.eth에 설치되었기 때문에, 해당 바이너리를 실행

하면 이더리움공유 라이브러리를 찾을 수 없어 링크 오류가 발생할 수 있다. 이 문제를 해결하려

면 Ethereum공유 라이브러리가 포함된 폴더를 LD_library_PATH환경 변수에 추가해야 합니다.

Debian에 대한 종속성 설치

DebianJessie(8.5)

단계:

cmake버전 3.5.2를 설치했는지 확인한다. App-get에 이전 버전이 설치된 경우, 이 링크의 지침에

따라 원본에서 컴파일합니다.

Cryptopp을 설치하기 위해서는 다음 공급원에서 빌드 하는 것이 필요하다:

49

테스트 설치:

결과를 확인하고 다른 테스트를 수행합니다.

테스트는 괜찮습니까? 계속하겠습니다.

CryptoPP가 설치되었습니다!

이제 소스에서 LLVMBuilding을 설치합니다.

Apt-get로 돌아갑니다:

소스에서 json-rpc-cpp 빌딩을 설치하십시오.:

50

종속성을 설치 한 후에 만 명령 행을 빌드하십시오 (이 문서의 나머지 부분):

Windows 용 건물 우리는 64 비트 빌드 만 지원하며 다음 Windows 버전에만 지원합니다.

• Windows 7

• Windows 8/8.1

• Windows 10

• Windows Server 2012 R2

EVMJIT와 다른 기능을 사용하지 않도록 설정하여 Windows 32 비트 용 클라이언트를 작동시키는

것이 가능할 수도 있습니다. 우리는 그러한 지원을 추가하려는 요청을 받아 들일지 모르지만 우

리는 Windows 32 비트 빌드를 지원하기 위해 자체 개발 시간을 투입하지 않을 것입니다.

사전 요구 사항 다음 종속성을 설치해야합니다.

소스 얻기 다음 명령을 실행하여 모든 소스 코드가 들어있는 자식 저장소를 복제하십시오.

51

외부 의존성 얻기 프로젝트를 빌드하는 데 필요한 사전 빌드 된 외부 라이브러리를 다운로드하고

압축을 푸는 CMake 스크립트를 실행합니다.

Visual Studio프로젝트 파일을 생성 그런 다음 CMake를 사용하여 Visual Studio 솔루션 파일을

생성하는 다음 명령을 실행합니다.

어떤 디렉토리를 빌드하는 cpp-ethereum.slnin을 생성해야합니다.

참고: 우리는 cpp-ethereum-v.1.3.0부터 Visual Studio 2015 만 지원합니다.

해당 파일을 두 번 클릭하면 Visual Studio가 실행됩니다. RelWithDebugInfo 구성을 작성하는 것

이 좋지만 다른 모든 구성은 작동합니다.

명령 줄에서 빌드 또는 다음과 같이 명령 줄에서 프로젝트를 빌드 할 수 있습니다.

Building for OS X

개요-Here be dragons! Homebrew가 "롤링 릴리스"패키지 관리자이기 때문에 OS X 빌드 중단을

피할 수 없습니다. 외부 종속성을 우리 자작 탑에 모두 추가하거나 git 하위 모듈로 추가하지 않

으면 바닥이 영원히 움직일 것입니다. 우산 프로젝트 내에서. 최종 사용자 결과는 프로젝트를 빌

드하는시기에 따라 다릅니다. 어제 건물이 당신을 위해 일했을지 모르지만, 그것은 당신의 친구가

오늘 그들의 컴퓨터에서 같은 결과를 가질 것이라는 것을 보장하지 않습니다. 말할 것도없이,이

상황은 행복하지 않습니다.

OS X에서 빌드를 중단 한 경우 Github 문제를보고 문제가 이미보고되었는지 확인하십시오. 그렇

다면 기존 문제에 대해 의견을 말하십시오. 유사한 내용이 보이지 않으면 OS X 버전, cpp-

52

ethereum 버전, 하드웨어 및 기타 관련 세부 정보를 자세하게 설명하는 새로운 문제를 작성하십

시오. 자세한 로그 파일을 gist.github.com 또는 유사한 서비스를 통해 추가하십시오.

cpp-ethereum-development gitter 채널은 우리가 만나는 곳이며 함께 협력하여 알려진 문제점을

해결합니다.

다음 OSX버전만 지원합니다.

• OS X Mavericks (10.9)

• OS X Yosemite (10.10)

• OS X El Capitan (10.11)

cpp-ethereum 코드 기반은 구형 OS X 버전을 기반으로하지 않으며 이것은 우리가 지원할만한 것

이 아닙니다. 이전 OS X 버전을 사용하는 경우 cpp-ethereum을 빌드 할 수있을뿐만 아니라 사용

자 자신의 보안을 위해 최신 릴리스로 업데이트하는 것이 좋습니다.

저장소 복제 소스 코드를 복제하려면 다음 명령을 실행합니다.

사전 요구 사항 및 외부 종속성 최신 버전의 xcode가 설치되어 있는지 확인하십시오. 여기에는

OSX상의 C++어플리케이션을 구축하는 데 필요한 ClangC++컴파일러, .ode IDE및 기타 Apple개발

도구가 포함되어 있다. 처음으로 또는 방금 새 버전을 설치한 경우 명령줄 빌드를 수행하기 전에

라이센스에 동의해야 합니다.

우리의 OS X 빌드에서는 외부 종속성을 설치하기 위해 Homebrew 패키지 관리자를 설치해야합

니다. 처음부터 다시 시작하고 싶다면 Homebrew를 제거하는 방법입니다.

우리는 이제 macOS와 수많은 리눅스 배포판에 필요한 모든 외부 의존성을 설치하는 "원 버튼"스

크립트를 가지고 있습니다. 이것은 다단계 수동 프로세스에 사용됩니다.

명령줄/프로젝트 루트에서 가져오는 명령:

53

직접 빌드 설치 동일한 Makefile을 사용하여 컴퓨터에서 전 세계적으로 자신 만의 빌드를 설치할

수도 있습니다.

이렇게 하면 바이너리가 /usr /local/anusr .bin/에 설치됩니다.

프로젝트 루트에서 xcode 프로젝트 생성:

이렇게하면 cpp-ethereum.xcodeproj라는 Xcode 프로젝트 파일이 생성됩니다.이 파일을 xcode로

열고 build / debug / run 할 수 있습니다.

FreeBSD를 위한 건물 참고-FreeBSD 메인 가이드 패키지는 이 가이드를 훨씬 간단하게 변경 해야

합니다.

수동으로 포트 설치 이 단계 중 일부에서는 포트 디렉토리를 수정하기 위해 루트 액세스가 필요

합니다.

Webthree-umbrella는 포트 시스템에도없는 [libjson-rpc-cpp.shar]

(https://raw.githubusercontent.com/enriquefynn/webthreeumbrella-port/master/libjson-rpc-

cpp.shar)에 의존합니다.

먼저 shar 파일을 다운로드하여 "devel"세션 아래 포트 디렉토리 (보통 / usr / ports / devel)에 놓

아야합니다.

이제 다음과 같은 방법으로 스크립트를 실행합니다.

54

이렇게 하면 libjson-spc-.p 포트가 생성됩니다. 이제 당신은 webthreem-nobrella포트에 대해 같게

해야합니다. 우리는 [webthree-umbrella](https://raw.githubusercontent.com/enriquefynn/webthree-

umbrellaport/master/webthree-umbrella.shar) 파일을 가져와서"net-.p"디렉토리 아래에 포트를 생

성해야 합니다.

빌드 및 설치 이제 webthreel-nobrella디렉토리로 이동하여 포트를 설치할 수 있습니다.

Android 용 구축 우리는 현재 doublethinkco의 로드맵에 있지만 작동중인 Android 빌드를 보유

하고 있지 않습니다. Android는 Linux 커널을 사용하지만 ARM Linux 교차 빌드와 다른 API를 사

용합니다. 즉, 특정 바이너리가 필요할 것입니다.

ARM 리눅스 배포판은 Android가 생체 공학을 사용하는 GLIBC 런타임 라이브러리를 사용합니다.

iOS 용 구축 iOS 빌드는 doublethinkco의 로드맵에 있지만. iOS는 ARM 칩을 사용하는 Darwin

(BSD) 기반의 유닉스 계열 운영 체제입니다. 이것은 ARM Linux 크로스 빌드와 다른 API입니다.

즉, 특정 바이너리가 필요할 것입니다.

Raspberry Pi Model A, B +, Zero, 2and3를 위한 구축 EthEmbedded은 모든 Raspberry Mi 모델

에 대한 빌드 스크립트를 유지 관리합니다. 그들은 Raspi-Eth-Install 저장소의 Github에 있습니다.

또한 이러한 플랫폼에 대한 크로스 빌드가 가능합니다.

Odroid XU3 / XU4 구축 EthEmbedded은 이러한 Odroid 모델 모두에 대한 빌드 스크립트를 유

지 관리합니다. 향후 다양한 Odroid 장치에 대한 지원이 가능할 것입니다. 그들은 OdroidXU3-

Eth-Install 저장소의 Github에 있습니다. 또한 이러한 플랫폼에 대한 교차 구축이 가능합니다.

BeagleBoone Black을 위한 구축 EthEmbedded은 BBB-Eth-Install 저장소의 Github에 BBB 용 빌

드 스크립트를 유지 관리합니다. 이 플랫폼을위한 크로스 빌드가 가능합니다.

55

WandBoard를 위한 구축 doublethinkco maintain a Docker-based cross-build infrastructure which

is hosted on Github in the cpp-ethereum-cross repository.

ARM 용 Linux 구축 (크로스 빌드) doublethinkco는 cpp-ethereum-cross 저장소의 Github에서 호

스팅되는 Docker 기반 크로스 빌드 인프라를 유지 관리합니다.

• Jolla Phone (Sailfish OS)

• Nexus 5 (Sailfish OS)

• Meizu MX4 Ubuntu Edition (Ubuntu Phone)

• Raspberry Pi Model B+, Rpi2 (Raspbian)

• Odroid XU3 (Ubuntu MATE)

• BeagleBone Black (Debian)

• Wandboard Quad (Debian)

• C.H.I.P. (Debian)

Still TODO:

• Tizen

• Tizen

• iOS

Running

인수없이 eth를 실행하면 노드를 공개 블록 체인에 동기화합니다. 다른 블록 체인을 생성하거나

동기화 할 수도 있습니다 (eth를 사용하여 사용자 정의 블록 체인 참조).

노드와의 상호 작용은 geth또는 이더리움콘솔을 사용하여 수행할 수 있습니다.

Geth 사용

56

이더리움콘솔 사용

ethereum 콘솔은 실행중인 eth / geth 노드에 연결하고 web3 객체에 대한 액세스를 제공하는

node.js 응용 프로그램입니다.

npm을 사용하여 설치할 수 있습니다.

참고:

> npm install -g ethereum-console

> ethconsole

참고:

용법:

ethconsole [ javascript 파일] [ipc 소켓] ip3을 통해 ethereum 노드에 연결하여 전역 변수 web3을

통해 원격으로 제어합니다 (web3.admin도 있음). 인수가 주어지지 않으면 기본 ipc 소켓에 연결하

여 대화식 모드로 빠져 나갑니다.

인수 :

<ipc socket path> 지정된 ipc 소켓에 연결합니다 (.ipc로 끝나지 않으면 ipc : // <path> 사용).

<javascript 파일>은 비대화 형 방식으로 .js로 끝나야하는 주어진 자바 스크립트 파일을 실행합니

다. 스크립트는 콘솔을 종료하기 위해 process.exit ()을 호출해야합니다.

모듈은 무엇입니까? 주 실행 파일은 무엇입니까?

•RPC를 통해 제어할 수 있는 ethernet전체 노드.

•mixAn IDE 계약 및 사용자 인터페이스 개발, 테스트 및 블록 체인 배포.

•견고성 명령줄 컴파일러

•LLL명령줄 컴파일러.

57

더 이상 사용되지 않는 실행 파일

•AlethZero Ethereum과 상호 작용하기위한 Qt 기반의 포괄적 인 GUI (최소한의 지원 만 받음).

• EthKey Key 관리 CLI.

다양한 모듈은 무엇입니까?

• AlethZero Ethereum과 상호 작용하기위한 Qt 기반 GUI. 최소한의 지원 만받습니다.

• libethereum - 모듈은 웹 3의 일부와 관련이 있습니다. 합의 엔진, 블록 체인 다운로드, 가상

머신

– ethkey: 독립형 키 관리

– ethminer: 독립형 ethash miner

– ethvm: 독립 실행 형 EVM 실행 유틸리티

– evmjit: Just-In-Time 컴파일러를위한 EVM 라이브러리

– libethash: 에쉬 쉬 마이닝 POW 알고리즘 구현

– libethash-cl: GPU 마이닝을위한 에셜론 마이닝 코드 (OpenCL)

– libethashseal: POW 블록 씰 엔진 주변의 일반 래퍼. 또한 모든 Ethash 기반 체인의 기원 상태

를 포함합니다.

– libethcore: 핵심 데이터 구조 및 개념 수집

– libethereum: 주요 일치 엔진 (EVM 제외). State 클래스와 BlockChain 클래스를 포함합니다.

– libevm: 주요 일치 엔진 (EVM 제외). State 클래스와 BlockChain 클래스를 포함합니다.

– libevmasm: EVM 조립 도구는 최적화 도구도 포함합니다.

– libevmcore: EVM, opcode, 가스 비용의 기본 데이터 구조

– liblll: 저수준 LISP 유사 언어 컴파일러 및 어셈블러.

– libnatspec: natspec 스크립트 평가자 (확인 메시지)

– libtestutils: 코드 테스트 용 유틸리티

– lllc: LLL 컴파일러 명령 행 인터페이스

58

•웹 사이트-웹 사이트 코어 라이브러리, 네트워킹, 인코딩, 디코딩, 기본 데이터 구조.

– bench: 트라이 벤치마킹

– libdevcore: 데이터 구조, 유틸리티, rlp, trie, 메모리 db

– libdevcrypto: crypto 프리미티브. libsecp256k1과 libcrypto ++에 의존합니다.

- libp2p : 핵심 피어 투 피어 네트워킹 구현 (특정 하위 프로토콜 제외)

- rlp : 독립 실행 형 rlp en- / decoder

• mix-Dapp IDE

• 견고성 - 단독 실행 컴파일러

- docs : documentation은 http://solidity.readthedocs.org/에 있습니다.

- libsolidity : 실제 구현

- 분석 : 참조 해상도, 유형 검사, ... (AST에 대한 주석을 작성)

- ast : 추상 구문 트리 및 유형 시스템

- codegen : 주석이 달린 AST의 어셈블리 코드 생성 - 공식 : 공식 검증

- 인터페이스 : libsolidity의 사용자를위한 외부 인터페이스

- 파싱 : 파서 (non-annotated AST 생성)

- solc : 명령 행 컴파일러

• web3.js - JavaScript Dapp 프레임 워크 라이브러리 (RPC / IPC를 통해 백엔드에 연결)

• webthree-actualclient / nodeimplementation ( "eth")

- eth : 명령 행 클라이언트 / 노드

- libjsconsole : eth에 액세스하기위한 JavaScript 콘솔 - deprecated, nodejs 응용 프로그램으로 대체 됨

- libjsengine : libjsconsole의 기본 엔진이 제거됩니다.

- libweb3jsonrpc : json-rpcserver-sideendpoint, hp 및 ipc (unixsocket, windowspipe) 커넥터를 제공합니

다.

- libwebthree : ethereum, swarm / ipfs 및 속삭임을위한 서비스 커넥터.

- libwhisper : 속삭임 구현

• webthree-helpers - 시스템 종속적 인 외부 의존성 구축

- cmake : 빌드 시스템 용 cmake 파일들. 내부 의존성의 명세를 담고있다.

- utils : 외부 의존성

* json_spirit : Boost 's Spirit 라이브러리 용으로 작성된 JSON 파서. * libscrypt : 구현 구현

* secp256k1 : SECP 256k1 ECDSA 서명 알고리즘의 구현.

cpp-ethereum의 자동화 설정

작성 당시 cpp-ethereum의 모든 자동화는 http://52.28.164.97에 호스팅 된 Jenkins 인스턴스를 사용하여 구

59

동됩니다.

http://ethbuilds.com의 설정에 "예쁜 별칭"이 있지만, 그것은 Ethereum Foundation이 아닌 Bob Summerwill

이 개인적으로 소유하고 있으며 나중에 다른 것을 가리킬 수도 있습니다.

그것은 Go와 Python 빌드에 사용되는 Ethereum buildbot 인스턴스와 병렬로 실행됩니다.

두 가지 자동화 시스템이 있다는 사실은 이상적이지 않으며 역사적인 이유로 사용됩니다. 모든 Ethereum

Foundation 프로젝트를 일관된 단일 자동화 설정으로 통합하는 것이 합리적 일지 모르나 이는 단순한 작업

이 아닙니다. 우리는 그것에 대해 이야기하고 있습니다. C ++ 코드베이스에 대한 repo reorg를 완료했을 때

이를 평가하는 것이 훨씬 쉬울 것입니다.

현재 젠킨스 (Jenkins) 설정은 주요 약점 인 표준 연속 통합 목표를 누락하고 있습니다. HEAD에서 C ++ 빌

드가 작동하는지 또는 손상되었는지를 확인하기 위해 방문 할 수있는 URL은 하나도 없습니다. 리포지토리별

로 방문 할 수있는 URL조차도 없기 때문에 개별 리포지토리가 작동하는지 또는 파손되었는지 찾아야합니다.

또한 우리가 게시하고있는 저장소 집합이 작동하는지 또는 고장인지를 알기 위해 웹 우산 자동화를 누락했

습니다.

우리가하는 일은 우리의 풀 요청을 자동화하는 것입니다. 그것들은 의존하고있는 리파지토리의 개발 브랜치

에 대비하여 만들어졌습니다. 여러 리포지토리에 걸쳐있는 변경을 테스트 할 때 이러한 종속성에 대한 대체

분기를 지정하는 메커니즘이 있습니다. 그러나 그것은 깨졌습니다.

다음은 PR 자동화를위한 젠킨스 프로젝트입니다. 새 PR이 생성되거나 기존 PR의 분기 내용이 업데이트 될

때마다 Github webhook을 통해 자동으로 트리거됩니다.

• alethzero-prs - alethzero에 대한 홍보 테스트

• libethereum-prs - libethereum에 대한 PR 테스팅

• libweb3core-prs - libweb3core에 대한 PR 테스트

• mix-prs - 혼합에 대한 PR 테스트

• solidity-prs - 견고성을위한 홍보 테스트

• webthree-helpers-prs - Webthree-Helpers에 대한 홍보 테스트

• webthree-prs - Webthree에 대한 홍보 테스트

아래의 프로젝트들은 효과적으로 "사용자 지향 프로젝트"를 구축하는 데 사용되는 "라이브러리"입니다.

60

• ethbinaries-build - ethbinaries에서 개발 및 ethbinaries 릴리스에 사용됩니다.

• 프로젝트 빌드 - 모든 홍보 프로젝트에 사용됩니다.

• project-test - 모든 홍보 프로젝트에 사용됩니다.

• pullrequest_parser - 모든 홍보 프로젝트에 사용됩니다.

• solidity-emscripten-publisher - solidity-emscripten에 사용됩니다.

Bob은 젠킨스가 목표로하는 것이 무엇인지 알지 못합니다. 그들은 쓸모가 없을 수도 있습니다.

• 코드 - 적용 범위 - 실행

우리는 "voodoofactor"inourautomation을 줄이기 위해 자동화 스크립트를 Jenkins의 Git으로 옮기기 위해 의

식적인 노력을 기울여 왔습니다. 그중에서도 그 사용법은 다음과 같이 사용합니다 :

• homebrew / prepare_receipt.sh - Homebrew 용 빌드

• scripts / build_emscripten.sh - Emscripten 바이너리 빌드 (브라우저 견고성을 위해)

• scripts / ethbinaries.sh - Windows 및 OS X 바이너리 빌드

• scripts / ethbuild.sh - 빌드 코드 (모든 플랫폼)

• scripts / ethtests.sh - 테스트 실행 (모든 플랫폼)

• scripts / ppabuild.sh - PPA를위한 번들 빌드

그러나 우리는 여전히 Jenkins 내에서 고아가 된 스크립트를 가지고 있습니다.

• Windows PowerShell에서 Eth의 ZIP 만들기 - win_eth.zip을 만드는 데 사용됩니다.

• github_issue_mover.py - cpp-ethereum에서 webthree-umbrella repo로 이동 문제를 대응시키는 데 사

용되는 스크립트

newJenkins slave 설정하기 이것은 anightmare 과정입니다. OS X 슬레이브를 추가하는 방법은 다음과 같습

니다. 다른 플랫폼의 프로세스는 다양하지만 아직 수행하지 않아도됩니다.

• 적절한 운영 체제를 설치하십시오 (Bob은 자신의 Apple 로그인을 사용해야 함)

• Mac Store에서 최신 xcode 설치

• Homebrew 설치

- xcode select license에 yes라고 대답하십시오.

- 양조장 업데이트

- BREW 업그레이드

- 사전 필수품을 설치하십시오 (http://www.ethdocs.org/en/latest/ethereum-clients/cpp-

ethereum/buildingfrom-source/osx.html)

- installRuby

* https://github.com/rbenv/rbenv#homebrew-on-mac-os-x를 참조하십시오.

* brew install rbenv

* rbenv init * rbenv install 1.9.3-p551

* ~ / .bash_pro 파일에 eval "$ (rbenv init -)"을 추가하십시오 :

- Java 웹 스타트를 사용하여 슬레이브를 연결하십시오 (보안 설정을 낮춰야 함).

61

- 기계에서 Jenkins의 노드에 대한 컨피규레이션 필드까지 잘라내어 붙여 넣기 PATH :

* 예 : /Users/administrator/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Knownissues

• 정식 빌드 부족

• Webthree-umbrella build의 부족

• 자동화 된 Windows 테스트 없음

• 브로큰 크로스 리포 PR

• 교수형 테스트

• 불완전한 테스트 복

• "ethereum / tests"를 실행합니까?

• "ethereum / rpc-tests"를 전혀 실행하지 않습니까?

• Windows 상자에서 Windows 7 Home Edition을 실행 중입니다. RDC 액세스가 없습니다.

• Visual Studio 2013 실행.

• Windows7을 대상으로 VS2015로 Windows 10을 실행해야합니다.

• 우리는 여전히 엘 캐피 탄 바이너리를 가지고 있지 않습니다.

• 사이클마다 홈 브루 / PPA 업데이트를 수행하는 것은 없습니다.

• 깨끗한 건축물은 없었습니까?

1.2.4 go-ethereum

go-ethereum 클라이언트는 일반적으로 geth라고하며, Go에 구현 된 전체 ethereum 노드를 실행하기위한

명령 행 인터페이스입니다. geth를 설치하고 실행하면 ethereum frontier 라이브 네트워크에 참여할 수 있습

니다.

• 실제 에테르를 채광하십시오.

• 주소간에 자금 이체

• 계약서 작성 및 거래 송부

• 블록 기록 탐색

• 그리고 훨씬 더

링크:

• 웹 사이트 : http://ethereum.github.io/go-ethereum/

• Github : https://github.com/ethereum/go-ethereum

• 위키 : https://github.com/ethereum/go-ethereum/wiki/geth

• Gitter : https://gitter.im/ethereum/go-ethereum

1.2.5 pyethapp

pyethapp는 Ethereum 암호 경제 상태 머신을 구현하는 파이썬 기반 클라이언트입니다. 파이썬 구현은 쉽게

62

해킹 가능하고 확장 가능한 코드베이스를 제공하는 것을 목표로합니다.

pyethapp는 두 개의 ethereum 핵심 구성 요소를 활용하여 클라이언트를 구현합니다.

• pyethereum - 블록 라이브러리, ethereum 가상 머신, 마이닝을 특징으로하는 핵심 라이브러리

• pydevp2p - 멀티플렉싱 및 암호화 된 연결을 통해 다중 서비스에 대한 노드 검색 및 전송 기능을 제

공하는 P2P 네트워킹 라이브러리

링크:

• Github : https://github.com/ethereum/pyethapp

• 위키 : https://github.com/ethereum/pyethapp/wiki/Getting-Started

• 지터 채팅 : https://gitter.im/ethereum/pyethapp

1.2.6 ethereumjs-lib

ethereumjs-lib는 Yellow Paper에 설명 된 핵심 Ethereum 기능의 Javascript 라이브러리입니다. 이것은 다음

모듈을 제공하는 간단한 메타 모듈입니다. 대부분의 JS 모듈은 ethereumjs에서 추적됩니다.

• VM - Ethereum 가상 시스템 및 상태 처리 기능

• 블록 체인 - 블록 체인 관리

• 블록 - 블록 스키마 정의 및 유효성 검사

• 트랜잭션 - 트랜잭션 스키마 정의 및 유효성 검사

• 계정 - 계정 스키마 정의 및 유효성 검사

• rlp - 재귀 길이 미리 사전 순차 화

• Trie - 수정 된 Merkle Patricia Tree

• Ethash - Ethereum의 Proof of Work 알고리즘

• utils - 기타 도우미 함수

• devp2p - 네트워킹 프로토콜

• devp2p-dpt - 분쟁중인 피어 테이블

링크:

• Github : https://github.com/ethereumjs/ethereumjs-lib

• Gitter 채팅에 참여하십시오 : https://gitter.im/ethereum/ethereumjs-lib

1.2.7 Ethereum (J)

Ethereum (J)은 Ethereum 프로토콜의 순수 Java 구현입니다. Java / Scalaproject에 포함될 수있는 라이브러리

로서 제공되며, 여기에는 펌프 온 서비스 서브 서비스에 대한 지원이 포함됩니다. Ethereum (J)은 Roman

Mandeleil에 의해 처음 개발되었으며 <ether.camp>가 후원합니다.

63

Ethereum (J)은 CPU 마이닝을 지원합니다. 현재 순수 Java로 구현되어 있으며 사설 및 테스트 네트워크에서

사용할 수 있습니다. 경제적으로 실현 가능하지 않더라도 실제 Ethereum 네트워크에서 광업 할 수도 있습니

다.

링크:

• 블로그 : http://ethereumj.io/

• Github : https://github.com/ethereum/ethereumj

• 지터 채팅 : https://gitter.im/ethereum/ethereumj

1.2.8 ethereumH

이 패키지는 Haskell로 작성된 도구를 제공하여 Ethereum 블록 체인에 연결할 수 있도록합니다

Links :

• Github : https://github.com/blockapps/ethereumH

• BlockApps : http://www.blockapps.net/

1.2.9 패리티

패거리가 세계에서 가장 빠르고 밝은 곳을 찾는다. Rustlanguage는 안정성, 성능 및 코드 명확성을 개선합니

다. Ethereum Foundation의 여러 구성원이 설립 한 Ethcore가 패리티를 개발 중입니다.

• 웹 사이트 : https://ethcore.io/parity.html

• Github : https://github.com/ethcore/parity

• 지터 채팅 : https://gitter.im/ethcore/parity

Arch Linux 패키지는 Afri Schoedon 및 quininer에 의해 유지 보수되는 커뮤니티입니다.

• https://aur.archlinux.org/packages/parity/ (안정된 최신 릴리스)

• https://aur.archlinux.org/packages/parity-git/ (불안정, 최신 개발)

어떤 사람들은 Parity with Raspberry Pi 2에서 성공을 보고했습니다.

1.2.10 루비 – 이더리움

ruby-ethereumis는 Ruby로 작성된 Ethereum Virtual Machine을 구현 한 것입니다.

링크:

• Github : https://github.com/janx/ruby-ethereum

• 보석 : https://rubygems.org/gems/ruby-ethereum

관련 항목 :

• 루비 뱀 : Ethereum Serpent 컴파일러에 루비 바인딩.

• ethereum-ruby : Ethereum 노드와 통신하기위한 순수한 Ruby JSON-RPC 래퍼입니다. 이 라이브러리

를 사용하려면 IPC 지원이 활성화 된 Ethereum 노드가 있어야합니다 (기본값). 현재, 이동 클라이언트가

지원됩니다.

64

1.3 계정 관리

1.3.1 계정

계정은 Ethereum에서 핵심적인 역할을합니다. 계정에는 외부 소유 계정 (EOAs)과 계약 계정의 두 가지 유형

이 있습니다. 여기에 초점을 두어 간단하게 계정이 있습니다. 계약 계정은 계약이라고하며 계약서에서 자세

히 설명합니다. 외부 소유 계정과 계약을 포괄하는이 일반적인 개념은 이러한 개체가 소위 국가 개체라고

불리는 것이 정당합니다. 이러한 엔티티에는 상태가 있습니다. 계정에는 잔액이 있고 계약에는 잔액 및 계약

저장이 모두 있습니다. 모든 계정의 상태는 모든 블록으로 업데이트되고 네트워크가 실제로 합의에 도달해

야하는 Ethereum 네트워크의 상태입니다. 트랜잭션을 통해 사용자가 Ethereum 블록 체인과 상호 작용하는

데 필수적인 계정

우리가 Ethereum을 외부 소유 계정으로 만 제한하고 그들 사이의 트랜잭션 만 허용한다면, 우리는 비트 동

전 자체보다 덜 강력하고 에테르를 전송하는 데에만 사용될 수있는 "altcoin"시스템에 도달합니다.

계정은 외부 에이전트 (예 : 사람, 광산 노드 또는 자동화 된 에이전트)의 ID를 나타냅니다. 계정은 공개 키

암호화를 사용하여 트랜잭션에 서명하므로 EVM에서 트랜잭션 보낸 사람의 신원을 안전하게 확인할 수 있습

니다.

1.3.2 주요 파일

모든 계정은 한 쌍의 키, 개인 키 및 공개 키로 정의됩니다. 계정은 마지막 20 바이트를 취하여 공개 키에서

파생 된 주소로 색인화됩니다. 모든 개인 키 / 주소 쌍은 키 파일로 인코딩됩니다. 주요 파일은 모든 텍스트

편집기에서 열어 볼 수있는 JSON 텍스트 파일입니다. 키 파일의 중요한 구성 요소 인 계정의 개인 키는 항

상 암호화되어 있으며 계정을 만들 때 입력 한 암호로 암호화됩니다. 키 파일은 Ethereum 노드의 데이터 디

렉토리의 keystore 서브 디렉토리에 있습니다. 정기적으로 주요 파일을 백업하십시오! 자세한 내용은 계정

백업 및 복원 단원을 참조하십시오.

키를 생성하는 것은 계정을 만드는 것과 같습니다.

• 다른 사람에게 당신이하고 있다고 말할 필요가 없습니다.

• 블록 체인과 동기화 할 필요가 없습니다.

• 클라이언트를 실행할 필요가 없습니다.

• 인터넷에 연결할 필요가 없습니다.

당연히 어쨌든 당연한 결과입니다. 하지만 당신은 귀하의 열쇠와 암호가 없기 때문에 아무도 다른 사람에게

접근 할 수 없습니다.

Ethereum 노드간에 전체 디렉토리 또는 개별 키 파일을 전송하는 것이 안전합니다.

65

경고 : 키 파일을 다른 노드의 노드에 추가하는 경우 계정 순서가 변경 될 수 있습니다. 따라서 스크립트 또

는 코드 스 니펫에서 색인을 신뢰하거나 변경하지 마십시오

1.3.3 Creating an account

경고 : 암호를 기억하고 '키 파일을 백업하십시오. <백업 및 복원 계정>'_. ether 전송을 포함하여 계정에서

트랜잭션을 보내려면 키 파일과 암호가 모두 있어야합니다. 키 파일의 사본을 가지고 있어야하며 그 키 파

일의 암호를 기억하고 두 파일을 가능한 안전하게 저장하십시오. 여기에는 탈출 경로가 없습니다. 열쇠 파일

을 잃어 버리거나 암호를 잊어 버리면 모든 에테르가 사라집니다. 암호없이 계정에 액세스 할 수 없으며 여

기에 암호를 잊어 버린 옵션이 없습니다. 그것을 잊지 마세요.

geth 계정 사용하기 new

일단 geth 클라이언트가 설치되면, 계정을 생성하는 것은 단순히 터미널에서 geth account new 명령을 실행

하는 경우입니다.

geth 계정 명령을 사용하려면 geth 클라이언트를 실행하거나 블록 체인과 동기화 할 필요가 없습니다.

비 대화식 사용의 경우 --password 플래그에 대한 인수로 일반 텍스트 비밀번호 파일을 제공합니다. 파일의

데이터는 선택적으로 하나의 개행이 뒤에 오는 암호의 원시 바이트로 구성됩니다.

경고 : --password 플래그는 신뢰할 수 있는 환경에서의 테스트 또는 자동화에만 사용됩

니다. 패스워드를 파일에 저장하거나 다른 방법으로 노출시키는 것은 나쁜 생각입니다.

암호 파일을 읽을 수 없거나 사용자 이외의 다른 사용자도 열어 볼 수 없는지 확인 하십

시오. 다음을 사용하여 Mac/Linux 시스템에서 이 작업을 수행 할 수 있습니다.

66

현재 keystore 폴더에 있는 키 파일이 있는 모든 계정을 나열하려면 geth account 명

령의 list 하위 명령을 사용하십시오,.

주요 파일의 파일 이름은 UTC--<created_at UTC ISO8601>-<address hex> 형식입니

다. 리스팅시 계정 순서는 사전 편집이지만 타임 스탬프 형식의 결과로 실제로 생성 순서

입니다.

Geth console 사용

Geth를 사용하여 새 계정을 만들려면 먼저 콘솔모드에서 geth를 시작해야 합니다. (또는

geth attach를 사용하여 이미 실행중인 인스턴스에 콘솔을 연결 할 수 있음)

콘솔을 사용하면 명령을 실행하여 로컬 노드와 상호 작용할 수 있습니다. 예를 들어 명령

을 사용하여 계정을 나열하십시오.

이는 계정이 없음을 나타냅니다. 콘솔에서 계정을 만들 수도 있습니다.

참고 : 강력하고 무작위로 생성 된 암호를 사용해야 합니다.

방금 첫 번째 계정을 만들었습니다. 우리가 다시 우리의 계좌를 열거하려고 하면 우리는

새로운 계좌를 볼 수 있습니다.

67

MIST 이더리움 지갑 사용하기

커맨드 라인을 회피하기 위해, 이제는 계정 생성을 위한 GUI 기반 옵션이 있습니다. : “안

심할 수 있는” 미스트 이더리움 지갑. 미스트 이더리움 지갑과 그 부모 안개 프로젝트는

이더리움 기금의 후원 하에 개발되고 있으며, 따라서 “무결점” 상태가 됩니다. 지갑 응용

프로그램의 버전은 Linux, Mac OS X 및 윈도우에서 사용할 수 있습니다.

경고 : 미스트 지갑은 베타 소프트웨어 입니다. 주의하시기 바랍니다.

GUI미스트 이더리움 지갑을 사용하여 계정을 생성하는 것이 더 쉬울 수 없습니다. 실제

로 첫 번째 계쩡은 앱 설치 중에 만들어집니다.

1. 운영 체제의 최신 버전의 지갑 앱을 다운로드 하십시오. 월렛 앱을 열면 컴퓨터에서

이더리움 블록 체인의 전체 사본 동기화가 시작됩니다. 실제로는 전체 geth 노드를 실행

하게 되기 때문입니다.

2. 다운로드 한 폴더의 압출을 풀고 이더리움 지갑 실행 파일을 실행하십시오.

68

3.블록 체인이 완전히 동기화 될 때까지 기다린 다음 화면의 지시 사항을 따르십시오. 그

러면 첫 번째 계정이 생성됩니다.

4. 미스트 이더리움 지갑을 처음 실행하면 설치 과정에서 생성 한 계정이 표시됩니다. 기

본적으로 이름은 MAIN ACCOUNT (ETHERBASE)입니다.

69

5. 추가 계정을 만드는 것은 쉽습니다. 앱 메인 화면에서 계정 추가를 클릭하고 필요한

비밀번호를 입력하십시오.

참고 : 미스트 지갑은 아직 개발 중이므로 위에 설명된 단계의 세부 사항은 업그레이드

와 함께 변경 될 수 있습니다.

미스트에서 다중 서명 지갑 생성

미스트 이더리움 지갑에는 다중 서명 지갑으로 지갑 잔액을 확보 할 수 있는 옵션이 있

습니다. 다중 서명 지갑을 사용할 때의 장점은 하나 이상의 계정에서 귀하의 잔액에서 더

많은 금액을 인출 할 수 있는 권한이 필요하다는 것입니다. 다중 서명 지갑을 생성하려면

먼저 하나 이상의 계정을 만들어야 합니다.

미스트에서 계정 파일을 만드는 것은 매우 쉽습니다. ‘계정’섹션에서 ‘계정 추가’를 클릭하

십시오. 강력하면서도 기억하기 쉬운 비밀번호를 선택하고 (비밀번호 복구 옵션이 없음을

기억하십시오) 이를 확인하고 귀하의 계정이 만들어 집니다. 최소 2개의 계정을 만드십시

오. 원하는 경우 미스트를 실행하는 별도의 컴퓨터에서 보조 계정을 만들 수 있습니다.

(이론적으로는 이 방법을 사용하여 다중 서명을 보다 안전하게 만들 수 있습니다). 다중

서명 지갑을 만들 때 보조 계정의 공개 키 (예금 주소)만 있으면 됩니다. (복수 / 붙여 넣

기는 손으로 입력하지 마십시오). 다중 서명 지갑 계약을 작성하려면 기본 계정이 필요하

므로 다중 서명 지갑을 작성중인 컴퓨터에 있어야 합니다.

이제 계정을 설정하고 안전하게 백업하십시오. (컴퓨터가 고장 난 경우 평생 잊지 못할

균형을 잃을 것입니다.). ‘백업’아이콘 메뉴를 클릭하십시오. ‘키 저장소’폴더를 선택하십시

오. 반대쪽을 클릭 하여 ‘복사’를 선택하십시오(‘잘라 내기’를 선택하지 마십시오. 매우 좋

지 않을 것입니다.). 바탕화면으로 이동하여 빈 영역을 반대 클릭하고 ‘붙여 넣기’를 선택

하십시오. 당신은 ‘키 스토어’의 사본을 ‘키 스톤 백업 – 1년-월-일’과 같은 형식으로 새

복사본을 만들 수 있습니다. 이 지섬에서 폴더 내용을 zip/ rar 파일에 추가 할 수 있으

며 (온라인 백업 인 경우 강력하지만 아직 쉽지 않은 다른 암호로 아카이브를 암호로 보

호 할 수도 있음), USB 드라이브에 복사 한 다음 CD로 구울 수 있습니다. / DVD를 다운

로드 하거나 온라인 저장소 (보관 용 계정 / Google 드라이브 / etc)에 업로드 합니다.

이제 주 계정 (다중 서명 지갑 생성을 시작할 계정)에 약 0.02ETH 이상을 추가해야 합

니다. 다중 서명 지갑을 생성 할 때 거래 수수료가 필요합니다. 미스트는 현재 지갑 계약

거래가 제대로 실행되기에 충분한 ‘가스’를 확보하도록 요구하기 때문에 1ETH(또는 그

70

이상)가 추가로 필요합니다. 따라서 ETH가 약 1.02ETH 이상이어야 합니다.

이 다중 서명 지갑에 작성중인 모든 계정의 전체 주소를 작성할 때 입력하게 됩니다. 미

스트의 각 계정 세부 정보 페이지로 이동 한 다음 버튼의 오른쪽 열에서 ‘주소 복사’를

선택하면 일반 텍스트 편집기 (메모장/kedit/etc)에 각 주소를 복사/붙여 넣기 하는 것이

좋습니다. 수작업으로 주소를 입력하지 마십시오. 그렇지 않으면 오타가 발생할 위험이

높아지고 잘못된 주소로 거래를 보내는 균형을 잃을 수 있습니다.

이제 다중 서명 지갑을 만들 주비가 되었습니다. ‘월렛 계약’에서 ‘월렛 계약 추가’를 선택

하십시오. 이름을 지정하고 기본 계정 소유자를 선택한 다음 ‘다중 서명 지갑 계약’을 선

택하십시오. 다음과 같은 메시지가 표시됩니다 :

“ X 소유자가 관리하는 공동 계좌입니다. 하루에 최대 X ETH를 보낼수 있습니다. 일일

한도를 초과하는 거래에는 X소유자의 확인이 필요합니다.”

이 다중 서명 지갑에 연결하려는 소유자(계정) 수를 설정하십시오. 일일 출금 한도 (한 계

좌만 인출하면 됩니다)와 인출 금액을 승인하는데 필요한 소유자(계좌)의 수는 일일 한도

초과해도 얼마든지 설정하십시오.

이전에 텍스트 편집기에 복사/붙여 넣기 한 계정의 주소를 추가하고 모든 설정이 올바른

지 확인한 다음 하단의 ‘만들기’를 클릭하십시오. 거래를 보내려면 암호를 입력해야 합니

다. ‘월렛 계약’섹션에 새 지갑이 표시되고 ‘생성’이라고 표시 되어야 합니다.

지갑 생성이 완료되면 화면에 계약 주소가 표시됩니다. 전체 주소를 선택하고 텍스트 편

집기에서 새 텍스트 파일로 복사/붙여 넣기 한 다음 텍스트 파일을 바탕 화면에

‘Ethereum-Wallet-Address.txt’또는 원하는 이름으로 저장하십시오.

이제 계정 파일을 백업한 것과 같은 방식으로 ‘Ethereum-Wallet-Address.txt’파일을 백

업하면 됩니다. 그러면 이 주소를 사용하여 ETH로 새 다중 서명 지갑을 로드 할 준비가

된 것입니다.

백업에서 복원하는 경우에는 ‘Ethereum-keystore-backup’폴더 안의 파일을 이 연습의

첫 번째 절에서 언급한 ‘키 저장소’폴더로 복사하십시오. 참고로 이전에 설치하지 않은 머

신에 미스트를 새로 설치하는 경우 ‘keystore’ 폴더를 만들어야 할 수도 있습니다. (계정

을 처음 만들 때 이 폴더를 만들 때입니다). 멀티 시그마 지갑을 복원하는 경우 이전에

‘다중 서명 지갑 계약’을 선택하는 대신 ‘월렛 가져 오기’를 선택하기만 하면 됩니다.

문제 해결 :

71

미스트가 동기화되지 않습니다. 잘 작동하는 한 가지 솔루션은 PC하드웨어 시계

를 NTP 서버와 동기화 하여 정확한 시간을 얻은 다음 재부팅하는 것 입니다.

미스트는 동기화 후 시작되지만 빈 화면입니다. 리눅스 기반 OS (Ububtu, Linux

Mint 등)에서 “xorg”비디오 드라이버를 실행할 가능성이 있습니다. 제조업체의

비디오 드라이버를 대신 설치 하십시오.

“잘못된 암호” 이것은 현재 미스트 버전에 대한 잘못된 통지로 보입니다. 미스트

를 다시 시작하면 문제가 없어집니다. (실제로 올바른 암호를 입력 한 경우).

Eth 사용 하기

Geth를 사용하여 사용 가능한 키 관리와 관련된 모든 옵션은 eth에서 동일한 방식으로

사용할 수 있습니다.

다음은 ‘계정’관련 옵션입니다.

다음은 “지갑” 관련 옵션입니다.

참고 : ‘계정 가져오기’옵션은 일반 키 파일을 가져 오는 데만 사용할 수 있습니다. ‘지갑

가져 오기’ 옵션은 프리 세일 지갑을 가져 오는 데에만 사용할 수 있습니다.

통합 콘솔에서 키 관리에 엑세스 할 수도 있습니다. (내장 콘솔 또는 geth 첨부 사용).

Eth키 사용하기 (더 이상 사용되지 않음)

72

Ethkey 는 이더리움 지갑과 상호 작용할 수 있는 C++구현의 CLI 도구입니다. 이를 사용

하여 키를 나열, 검사, 생성, 삭제 및 수정하고 트랜잭션을 검사, 생성 및 서명 할 수 있

습니다.

우리는 Aleth 계열 클라이언트에서 eth 또는 기타와 같은 클라이언트를 아직 실행하지

않았다고 가정합니다. 가지고 있다면 이 섹션을 건널 뛸 수 있습니다. 지갑을 생성하려면

createwallet 명령을 사용하여 이더키를 실행하십시오.

키 저장소를 보화려면 MASTER 암호 문구를 입력하십시오(강하게 하십시오!) :

“마스터” 암호 문구를 묻는 메시지가 나타납니다. 이것은 귀하의 개인 정보를 보호하고

모든 키의 기본 암호 역할을 합니다. 같은 텍스트를 다시 입력하여 확인해야 합니다.

참고 : 임의로 생성된 강력한 암호를 사용하십시오.

우리는 단순히 list 명령을 사용하여 지갑 내의 키를 나열 할 수 있습니다.

아직 키를 만들지 않았으므로 우리에게 그렇게 말하고 있습니다. 하나 만들어 봅시다.키

를 만들려면 새 명령을 사용합니다. 이를 사용하려면 이름을 전달해야 합니다. 지갑에서

이 계정에 제공 할 이름입니다. “test”라고 하겠습니다.

이 계정을 보호 할 암호문을 입력하십시오(또는 마스터 암호를 사용하지 마십시오.) 이

키를 보호하기 위해 암호를 입력하라는 메시지가 나타납니다. 엔터키를 누르면 기본 “마

스터”암호 문구가 사용됩니다. 일반적으로 이것은 계정을 사용할 때 (마스터 암호를 기억

하기 때문에) 키의 암호를 입력 할 필요가 없다는 것을 의미합니다. 일반적으로 손상된

암호문 하나가 다른 계정에 엑세스하지 못하도록 하기 때문에 각 키마다 다른 암호문을

사용해야 합니다. 그러나 편의성이 떨어지면 보안 수준이 낮은 계정이 동일한 암호를 사

용하도록 결정할 수 있습니다.

여기에 123의 믿을 수 없을 정도로 상상할 수 있는 암호문을 지정해 보겠습니다.(단발성

테스트 계정 이외에는 이와 같은 간단한 암호를 절대로 사용하지 마십시오). 암호를 입력

하면 다시 입력하여 암호를 묻습니다. 두 번째로 123을 입력하십시오. 암호를 입력 했으

므로 암호를 입력하라는 메시지가 나타날 때마다 암호가 표시되도록 힌트를 제공해야 합

니다. 힌트는 지갑에 저장되며 마스터 패스 프레이즈로 보호됩니다. 정말 끔찍한 321의

73

힌트를 입력하십시오.

모든 정상적인 ICAP 주소는 XE로 시작하므로 쉽게 인식 할 수 있어야 합니다. 또한 키

에는 생성 된 키 뒤에 다른 식별자가 있습니다. 이는 UUID라고 합니다. 이는 계정 자체

와는 전혀 관련이 없는 키에 대한 고유한 식별자입니다. 공격자가 네트워크에 있는 사람

을 발견하는 데 도움이 되는 것은 아닙니다. 또한 ~/.web3/keys (Mac or Linux) or

$HOME/AppData/Web3/keys (Windows) 에서 찾을 수 있는 키의 파일 이름이 됩니다.

이제 지갑에 키를 나열하여 제대로 작동하는지 확인해 보겠습니다.

미스트 이더리움 지갑 설치 방법은 계정 만들기 : 미스트 이더리움 지갑 사용하기 섹션

에 나와 있습니다. .json 프리 세일 지갑 파일을 지정된 영역으로 끌어다 놓기만 하면 됩

니다. 패스워드를 입력하면 프리 세일 계정을 가져올 수 있습니다.

74

앱을 설치하는 동안 판매 지점 지갑을 가져 오지 않으려면 앱의 메뉴 표시 줄에서 계정

메뉴를 선택한 다음 사전 판매 계정 가져 오기를 선택하여 언제든지 가져올 수 있습니다.

참고 : 미스트 지갑은 아직 개발 중이므로 위에 설명 된 단계의 세부 사항은 업그레이드

와 함께 변경 될 수 있습니다.

Geth 사용하기

Geth의 독립 실행 형 설치가 있는 경우 터미널에서 다음 명령을 실행하여 판매 전 지갑

을 가져옵니다.

암호를 입력하라는 메시지가 나타납니다.

1.3.5 계좌 업데이트

키 파일을 최신 키 파일 형식으로 업그레이드 하거나 키 파일 암호를 업그레이드 할 수

있습니다.

Geth 사용하기

계정 주소 또는 색인을 매개 변수로 사용하여 업데이트 하위 명령을 사용하여 명령 줄에

서 기존 계정을 업데이트 할 수 있습니다. 계정 색인은 생성 순서 (생성 시간을 포함하는

주요 파일 이름의 사전 식 순서)을 나타냅니다.

또는

예를 들어

75

계정은 암호화 된 형식으로 최신 버전으로 저장되고, 암호문을 풀어 계정 잠금을 해제하

고 다른 암호를 묻는 메시지가 표시됩니다. 이 명령을 사용하여 사용되지 않는 형식의 계

정을 최신 형식으로 마이그레이션 하거나 계정의 암호를 변경할 수 있습니다.

비 대화식 사용의 경우 암호문은 –password 플래그로 지정할 수 있습니다.

하나의 암호만 지정할 수 있기 때문에 형식 업데이트만 수행 할 수 있으며 암호 변경은

대화식으로만 가능합니다.

참고 : 계정 업데이트에는 계정 순서가 변경 될 수 있다는 부작용이 있습니다. 업데이트

가 성공적으로 완료되면 동일한 키의 이전 형식/ 버전이 모두 제거됩니다.

1.3.6 백업 그리고 리스토어 계정

매뉴얼 백업/리스토어

계정에서 거래를 보내려면 계정의 키 파일이 있어야 합니다. 키 파일은 이더리움 노드의

데이터 디렉토리의 키스토어 서브 디렉토리에 있습니다. 기본 데이터 디렉토리 위치는 플

랫폼에 따라 다릅니다.

키 파일(계정)을 백업하려면 키 저장소 하위 디렉토리 내의 개별 키 파일을 복사하거나

전체 키 저장소 폴더를 복사하십시오.

키 파일 (계정)을 복원하려면 키 파일을 원래 있었던 키 저장소 하위 디렉토리로 복사하

십시오.

암호화되지 않은 개인 키 가져 오기

76

암호화되지 않은 개인 키 가져 오기는 geth에서 지원합니다.

이 명령은 암호화되지 않은 개인 키를 일반 텍스트 파일 <keyfile>에서 가져 와서 새 계

정을 만들고 주소를 인쇄합니다. 키 파일은 16진수로 인코딩 된 표준 EC원시 바이트로

암호화되지 않은 개인 키를 포함한다고 가정합니다. 계정이 암호화 된 형식으로 저장되면

암호 문구를 입력하라는 메시지가 나타납니다. 나중에 이 암호를 기억해야 계정을 잠금

해제 할 수 있습니다. 데이터 디렉토리가 지정된 예. –-datadir옵션을 사용하지 않으면 새

계정이 기본 데이터 디렉토리에 생성됩니다. 즉, 키 파일은 데이터 디렉토리의 키 파일

하위 디렉토리에 있습니다.

비 대화식 사용의 경우 암호문은 –password 플래그로 지정할 수 있습니다.

참고 : 암호화 된 계정을 다른 이더리움 인스턴스로 직접 복사 할 수 있기 때문에 노드

간에 계정을 전송할 때 가져 오기/ 내보내기 메커니즘이 필요하지 않습니다.

경고 : 키를 기존 노드의 키 스토어에 복사하면 사용 된 계정 순서가 변경 될 수 있습니

다. 따라서 계정 주문에 의존하거나 스크립트에 사용 된 색인을 다시 확인하거나 업데이

트 하지 마십시오.

1.4 Ether

이더는 이더리움에서 사용되는 통화의 이름입니다. EVM 내에서 계산 비용을 지불하는 데

사용됩니다. 이것은 가스에서 설명한 것처럼 이더용 가스를 구매함으로써 간접적으로 수

행됩니다.

도미네이션

이더리움에는 이더의 단위로 사용되는 교단의 미터법이 있습니다. 각 종파마다 고유 한

이름이 잇습니다. (일부는 컴퓨터 과학 및 암호 경제학의 진화에서 중요한 역할을 하는

성격의 이름을 가집니다). 가장 작은 명칭인 일명 이더의 기본 단위는 Wei입니다. 아래는

77

Wei에서의 교단과 그 가치. 공통적인 (다소 모호하지만) 패턴 다음에, 이더는 또한 통화

의 단위 (1e18 또는 1quintillion Wei)를 지정합니다. 많은 사람들이 실수로 생각하기 때

문에 통화는 이더리움이라고 부르지 않으며, 이더리움도 단위가 아닙니다.

1.4.2 Ether supply

1.4.3 ether 얻기

이더를 얻기 위해서는 다음 중 하나가 필요합니다.

이더리움 채굴자가 된다 또는

중앙 집중화 된 서비스 또는 신뢰 없는 서비스를 사용하는 이더의 다른 통화 거

사용자 친화적인 미스트 이더리움 GUI Wallet을 사용하여 베타 6에서

http://shapeshift.io/ API를 사용하여 이더를 구입할 수 있는 기능을 도입했습니

다.

믿을 수 없는 서비스

이더리움 플랫폼은 스마트 게약이 트러스트 된 제 3자에 대한 환금 거래의 필요성을 제

거하는 트러스트 없는 서비스를 가능케 한다는 점에서 특별합니다. 중개 환전 사업.

이러한 프로젝트 (작성 당신의 알파 / 사전 실행 상태)는 다음과 같습니다.

78

중앙 교환 시장 목록

집중 고정 이자율 교환

거래 및 가격 분석

ETH는 코인마켓캡에 양에 의하여 철저한 명부 작성을 시장에 내놓습니다.

주요 ETH 시장의 실시간 통계 집계 :

1.4.4 온라인 지갑, 종이 지갑 및 냉장 보관

해야 할 것

이것은 링크 및 메모의 덤핑 장소입니다. 생태계로 목록 형식으로 이동하십시오. 여기에

예제를 보관하십시오. 편집증 관련 사례를 설명하고 위험을 나열하십시오.

79

1.4.5 이더 보내기

이더리움 지갑은 그래픽 인터페이스를 통해 이더 전송을 지원합니다. 이더는 geth 콘솔

을 사용하여 전송할 수도 있습니다.

80

이더 이체 거래에 대한 자세한 내용은 게정 유형, 가스 및 거래를 참조하십시오.

이더리움은 이더가 일반적으로 ‘가스’라고 하는 암호문 (cryptofuel)으로서의 효용 가치를

갖는 다는 점에서 크립토 크로프트 (cryptocurrencies) 영역에서 유일하다. 거래 비용

외에도, 가스는 모든 네트워크 요청의 핵심 부분이며 보낸 사람은 소비된 컴퓨팅 리소스

에 대해 비용을 지불해야 합니다. 가스 비용은 요청의 양과 복잡성을 기준으로 현재의 가

스 가격을 곱하여 동적으로 계산됩니다. cryptofuel로서의 그 가치는 이더와 이더리움에

대한 안정성과 장기적인 수요를 증가시키는 효과가 있습니다. 자세한 내용은 계정 유형,

가스 및 거래를 참조 하십시오.

1.4.6 가스와 이더

가스는 네트워크 자원/이용의 일정한 비용으로 간주됩니다. 당신은 거래가 항상 같아 지

도록 실제 비용을 원한다. 그래서 가스가 발행되기를 정말로 기대할 수는 없다. 일반적으

로 통화는 휘발성이다.

그래서 대신 값이 변하는 이더를 발행하지만, 이더의 관점에서 가스 가격도 구현합니다.

이더의 가격이 올라간다면, 이더의 관점에서 가스 가격은 가스의 실제 비용을 동일하게

유지하기 위해 내려야 합니다.

가스에는 가스 가격, 가스 비용, 가스 한도 및 가스 요금과 같은 여러 관련 조건이 있습

니다. 가스의 기본 원리는 이더리움 네트워크에서 트랜잭션이나 계산 비용이 어느 정도인

지에 대한 안정적인 가치를 갖는 것입니다.

가스 비용은 가스에 대한 게산 비용이 얼마인지에 대한 고정 값이며, 가스의 실

제 가치는 변하지 않으므로 이 비용은 항상 시간이 지남에 따라 안정해야 합니

다.

가스 가격은 이더와 같은 다른 통화나 토큰과 관련하여 가스 비용이 얼마나 되는

지를 나타냅니다. 가스 가격을 안정화시키기 위해, 가스 가격은 토큰 또는 통화의

비용이 변동될 경우 가스 가격이 동일한 실제 가치를 유지하도록 변경되는 처분

81

값입니다. 가스 가격은 사용자가 기꺼이 지출 할 수 있는 금액과 처리 노드가 수

용 할 의사가 있는 금액의 균형 가격에 의해 설정됩니다.

가스 한도는 블록 당 사용할 수 있는 가스의 최대량이며 블록의 최대 계산로드,

거래량 또는 블록 크기로 간주되며 시간이 지남에 따라 채굴자가 천천히 이 값을

변경할 수 있습니다.

가스 요금은 특정 거래나 프로그램 (계약이라고 함)을 실행하기 위해 지불해야

하는 가스의 양입니다. 블록의 가스 요금은 블록의 계산량, 거래량 또는 크기를

암시하는 데 사용될 수 있습니다. 가스 요금은 채굴자 (또는 PoS의 보청 계약자)

에게 지불됩니다.

1.5 이더리움 네트워크

네트워크 정보

1.5.1 네트워크 연결 하기

이번 섹션

이더리움 네트워크

분산된 합의를 위한 기반은 블록체인을 유지하고 보호하는 참여 노드의 개인 간 개

인 네트워크 입니다. 채굴자를 참조하십시오.

이더리움 네트워크 상태

EthStats.net는 전자 메일 네트워크에서 중요한 정보를 제공합니다. 이 대시 보드는

현재 블록, 해시, 가스 가격 및 가스 지출과 같은 중요한 정보를 표시합니다. 페이지

에 표시된 노드는 네트워크상의 실제 노드를 선택하는 것입니다. 누구나 노드를

EthStats 대시보드에 추가 할 수 있습니다. Github의 Eth-Netstats README에 연

결하는 방법이 설명되어 있습니다.

EtherNodes.com은 Ethereum mainnet 과 Morden testnet에 대한 노드 수 및 기

타 정보에 대한 현재 및 과거 데이터를 표시합니다.

현재 라이브 네트워크에서 클라이언트 구현 배포 – EtherChai의 실시간 통계

공개, 비공개 및 컨소시엄 블록체인

82

현재 이더리움 프로젝트는 이더리움을 공용 블록 체인으로 사용하고 있으마, 더 많은

사용자, 네트워크 노드, 통화 및 시장에 대한 액세스 권한을 부여합니다. 그러나 적절

한 신뢰를 얻지 못하는 블록 체인이나 컨소시엄 블록 체인 (신뢰할 수 있는 참가자

그룹 사이)을 일시적으로 중지해야 합니다. 예를 들어 은행업과 같은 업종의 많은 회

사가 자체 사설 블록 체인을 위한 플랫폼으로 이더리움을 찾고 있습니다.

다음은 권한 부여를 기반으로 하는 세 가지 유형의 블록 체인 간으 ㅣ차이점을 설명

하는 공개 및 비공개 블록 링크의 블로그 게시물에서 발췌 한 것입니다.

공개 블록 체인 : 공개 블록 체인은 전 세계 누구나 읽을 수 있는 블록 체인

으르서 전 세계 어느 누구와도 거래를 전송할 수 있으며 유효하다고 판단되

면 전 세계 누구나 합의 프로세스에 참여할 수 있습니다. 어떤 블록이 체인에

추가되고 현재 상태가 무엇인지 결정합니다. 중앙 집중식 또는 준 중앙 집중

식 신뢰의 대용품으로 공공 블록 체인은 암호 경제학 – 경제적 인센티브와

작업 증명이나 스테이크 증명과 같은 메커니즘을 사용하는 암호 검증의 결함

– 누군가가 가질 수 있는 정도 합의 과정에서의 영향은 경제 재원의 양에 비

례한다. 이러한 블록 체인은 일반적으로 “완전히 분권화된”것으로 간주됩니다.

컨소시엄 블록체인 : 컨소시엄 블록체인은 컨센서스 프로세스가 미리 선택된

노드 집합에 의해 제어되는 블록 체인입니다. 예를 들어 15개 금융 기관의

컨소시엄을 상상할 수 있습니다. 각 금융 기관은 노드를 운영하며 블록은 유

효하도록 모든 블록에 서명해야 합니다. 블록 체인을 읽을 수 있는 권한은 공

개되거나 참여자에게만 제한 될 수 있으며 공개된 블록의 루트 해시와 일반

사용자가 제한된 수의 쿼리를 작성할 수 있는 API와 하이브리드 경로가 있습

니다. 블록 체인 상태의 일부 부분에 대한 암호화 증명을 되 찾을 수 있습니

다. 이러한 블록체인은 “부분적으로 분산된” 것으로 간주 될 수 있습니다.

개인 블록 체인 : 숙제를 중앙 집중식으로 조직화 한 곳의 비공식 블록체인.

읽기 권한은 공개되거나 임의의 범위로 제한 될 수 있습니다. 가능성이 있는

응용 프로그램에는 단일 회사 내부의 데이터 베이스 관리 및 감사 등이 포함

되므로 대부분의 경우 공개 가독성이 필요하지 않을 수도 있지만 다른 경우

에는 공개 감사 기능이 필요합니다.

이러한 사설/ 컨소시엄 블록 체인은 공용 블록 체인에 연결되어 있지 않지만, 여

전히 이더리움 소프트웨어 개발에 투자함으로써 전체적인 이더리움 생태계에 기

여합니다. 시간이 지남에 따라 소프트웨어 개선, 지식 공유 및 직업 기회로 전환

됩니다.

83

연결 하는 법

Geth는 피어가 있을 때까지 네트워크의 다른 노드에 계속 연결을 시도합니다. 라

우터에서 UPnP를 사용하도록 설정하거나 인터넷 연결 서버에서 이더리움을 실

행하는 경우 다른 노드에서 연결을 허용합니다.

Geth는 발견 프로토콜이라는 것을 통해 동료를 찾습니다. 발견 프로토콜에서, 노

드는 서로 네트워크를 통해 네트워크의 다른 노드에 대해 조사하고 있습니다. 처

음에는 geth는 엔드 포인트가 소스 코드에 기록된 일련의 부트 스트랩 노드를

사용합니다.

연결 및 ENODE ID확인

대화형 콘솔에서 클라이언트가 연결된 피어 수를 확인하려면 넷 모듈에 피어 수

및 수신 대기 노드인지 여부에 대한 정보를 제공하는 두 가지 특성이 있습니다.

아이피 주소 및 포트 번호, 지원되는 프로토콜 등 연결된 피어에 대한 자세한 정

보를 얻으려면 admin 객체의 peers () 함수를 사용하십시오.

Admin.peers ()는 현재 연결된 피어 목록을 반환 합니다.

84

Geth 가 사용하는 포트를 확인하고 enode URI를 찾는 방법은 다음과 같습니다.

더 빠르게 블록 체인 다운로드 하기

이더리움 클라이언트를 시작하면 이더리움 블록 체인이 자동으로 다운로드됩니

다.

이더리움 블록 체인을 다운로드 하는 데 걸리는 시간은 클라이언트, 클라이언트 설정,

연결 속도 및 사용 가능한 피어 수에 따라 달라질 수 있습니다. 아래는 이더리움 블록체

인을 보다 빨리 얻을수 있는 몇 가지 옵션입니다.

Geth 사용하기

Geth 클라이언트를 사용하고 있다면 이더리움 블록 체인을 다운로드 하는데 걸리는 시

간을 단축하기 위해 할 수 있는 일이 있습니다. 과거의 트랜잭션 데이터를 유지할 필요가

85

없는 경우에는 신속한 동기화가 필요합니다.

참고 : 일반 동기화 작업의 전부 도는 일부를 수행 한 후에는 이 플래그를 사용할 수 없

습니다. 즉, 이 명령을 사용하기 전에 이더리움 블록 체인의 일부분을 다운로드 해서는

안됩니다. 자세한 내용은 Ethereum Stack.Exchange를 참조하십시오.

다음은 클라이언트를 더 빨리 동기화하려는 경우 사용할 수 있는 몇 가지 플래그입니다.

--fast

이 플래그를 사용하면 전체 블록 데이터를 다운로드하는 대신 상태 다운로드를 통해 빠

르게 동기화 할 수 있습니다. 이렇게 하면 블록 체인의 크기가 크게 줄어 듭니다. 참고 :

--fast는 처음부터 블록 체인을 동기화하는 경우에만 보안상의 이유로 블록 체인을 다운

로드 하는 경우에만 실행 할 수 있습니다. 자세한 내용은 이 Reddit 게시물을 참조하십

시오.

--cache = 1024

내부 캐싱에 할당 된 메가 바이트의 메가 바이트(최소 16MB / 데이터베이스). 컴퓨터의

RAM 용량에 따라 356,512,1024(1GB) 또는 2048(2GB)로 늘리면 Defaultis 16MB가

달라집니다.

--jitvm

이 플래그는 JIT VM을 가능하게 합니다.

콘솔을 사용한 전체 예제 명령 :

빠른 동기화 및 블록 체인 다운로드 시간에 대한 자세한 내용은 이 Reddit 게시물을 참

조하십시오.

블록 체인 내보내기 / 가져 오기

전체 이더리움 노드를 이미 동기화 한 경우 완전히 동기화 된 노드에서 블록 체인 데이

터를 내보내고 새 노드로 가져올 수 있습니다. Geth export filename 명령을 사용하여

전체 노드를 내보내고 Geth export filename을 사용하여 블록 체인을 노드로 가져 와서

geth에서 이를 수행 할 수 있습니다. 이 링크보기

정적 노드, 신뢰할 수 있는 노드 및 부팅 노드

게스는 항상 연결하려는 동료가 있는 경우 정적 노드라는 기능을 지원합니다. 정적 노드

86

는 연결 해제 시 다시 연결됩니다. <datadir>/static-nodes.json에 다음과 같이 입력하

여 영구적인 정적 노드를 구성 할 수 있습니다. (chaindata 및 keystore 폴더와 동일한

폴더여야 함)

Admin.addPeer ()를 사용하여 Javascript 콘솔을 통해 런타임에 정적 노드를 추가 할

수도 있습니다.

연결과 관련된 일반적인 문제

때로는 연결이 되지 않을 수도 있습니다. 가장 일반적인 이유는 다음과 같습니다.

현지 시간이 정확하지 않을 수 있습니다. 이더리움 네트워크에 참여하려

면 정확한 시계가 필요합니다. 너무 빨리 12초라도 0피어가 발생할 수

있으므로 OS재시작 방법 (examplesudo ntpdate -s time.nist.gov)을 확

인하십시오.

일부 방화벽 구성은 UDP 트래픽이 흐트러지지 않게 할 수 있습니다. 콘

솔에서 정적 노드 기능 또는 admin.addPeer()를 사용하여 직접 연결을

구성 할 수 있습니다.

발견 프로토콜 없이 geth를 시작하려면 –nodiscover 매개 변수를 사용할 수 있습니다.

정적 노드가 있는 테스트 노드 또는 실험적 테스트 네트워크를 실행하는 경우에만 이 옵

션이 필요합니다.

1.5.2 네트워크 테스트

Morden testnet

모던은 공용 이더리움 대체 testnet입니다. 프론티어 및 홈스테드의 이정표를 통해 계속

될 것으로 예상됩니다.

용법

87

eth(C++client)이것은 0.9.93 이상에서 기본적으로 지원됩니다. 클라이언트를 시작할 때

–morden 인수를 전달하십시오. 예 :

PyEthApp(Pythonclient) PyEthApp는 v1.0.5부터 morden 네트워크를 지원합니다.

Geth (Go client)

세부

모든 매개 변수는 다음을 제외하고는 기본 이더리움 네트워크와 같습니다.

Morden’s genesis.json

Morden testnet이더 얻기

Morden testnet이더를 얻는 두가지 방법

내 CPU/GPU 를 사용하여 채굴(채굴 참조)를 하십시오.

Ethereum wei faucet 을 사용하십시오.

1.5.3 로컬 전용 testnet 설정

eth (C++ client)

-genesis 및 –confg를 사용하여 새 네트워크에 연결하거나 새 네트워크를 만들 수 있습

니다.

-genesis 와 –confg를 모두 사용 할 수 있습니다.

이 경우 –confg 가 제공하는 genesis 블록 설명은 – genesis 옵션으로 덮어 씁니다.

88

참고 : <파일 이름>에는 네트워크에 대한 json설명이 들어 있습니다.

sealEngine (엔진 블록 사용)

“Ethash”는 이더리움의 작업 증명 (실제 네트워크에서 사용됨)입니다.

“NoProof”블록을 채취하기 위해 작업 증명이 필요하지 않습니다.

params (minGasLimit, minimumDifficulty, blockReward, networkID와 같은 일

반적인 네트워크 정보)

genesis (genesis block description)

accounts (계정 / 계약이 포함 된 원래 상태 설정)

다음은 올림픽 네트워크에서 사용되는 정관 샘플입니다.

참고 : <file name>에는 창 블록에 대한 json 설명이 들어 있습니다.

그 내용은 ‘ 결정’ 매개 변수에 의해 제공되는 창세기와 같습니다.

Geth (Go client)

사설 테스트 네트워크에서 자신의 이더를 미리 생성하거나 채굴합니다. 이더리움을 시험

해 보는 것이 비용면에서 훨씬 효과적이며, Morden테스트 이더를 발견하거나 발견하는

것을 피할 수 있습니다.

사설 체인에서 지정해야 하는 사항은 다음과 같습니다.

Genesis 파일

Genesis블록은 블록 체인의 첫 번째 블록인 block()과 선행 블록을 가리키지 않는 유일

한 블록입니다.이 프로토콜은 다른 노드가 동일한 Genesis블록을 가지고 있지 않으면 블

록 체인의 버전과 일치 하지 않으므로 원하는 만큼 많은 사설 테스트 넷 블록 체인을 만

들 수 있습니다.

89

CustomGenesis.json이라는 파일을 저장하십시오. 다음 플래그를 사용하여 geth노드를

시작할 때 이것을 참조 할 것입니다.

--genesis /path/to/CustomGenesis.json

개인 네트워크 용 명령 줄 매개 변수

네트워크가 비공개인지 확인하기 위해 필요한 일부 명령 행 옵션 (“flag”이라고도 함)이

있습니다. 우리는 이미 genesis를 다루었지만 몇 가지 더 필요합니다. 아래의 모든명령

은 이더리움 클라이언트에서 사용됩니다.

--nodiscover

이를 사용하면 수동으로 추가하지 않은 사용자가 노드를 검색 할 수 없도록 할 수 있습

니다. 그렇지 않으면 우연히 이름을 붙일 수 있고, 이름이나 네트워크 ID와 함께 실수로

스트링거의 블록에 추가 될 수 있습니다.

--maxpeers 0

다른 사람이 당신의 테스트 체인에 연결하기를 원하지 않는 다면 maxpeers()를 사용하

십시오. 또는 노드에 연결하려는 피어의 수를 정확하게 알고 있는 경우 이 수를 조정할

수 있습니다.

--rpc

그러면 노드에서 RPC 인터페이스가 활성화 됩니다. 이것은 일반적으로 Geth에서 기본적

으로 활성화됩니다.

--rpcapi "db,eth,net,web3"

RPC를 통해 액세스 할 수 있는 API를 지정합니다. 기본적으로 Geth는 RPC를 통해

web3 인터페이스를 활성화 합니다.

중요 : RPC/ IPC인터페이스를 통해 API를 제공하면 누구나 이 인터페이스에 액세스 할

90

수 있는 API(예 : dapp)에 액세스 할 수 있습니다. 어떤 API를 사용할 수 있는지 확인

하십시오. 기본적으로 geth는 IPC인터페이스를 통해 모든 API를 활성화 하고 RPC 인

터페이스를 통해 db, eth, net 및 web3 API만 지원합니다.

--rpcport "8080"

8000을 네트워크에서 열려있는 포트로 변경하십시오. Geth의 기본값은 8080입니다.

--rpccorsdomain http://chriseth.github.io/browser-solidity/

이것은 RPC 클라이언트 작업을 수행하기 위해 URL이 노드에 연결할 수 있는 대상을 지

정합니다. 매우 신중해야 하며 모든 URL이 RPC 인스턴스에 연결할 수 있도록 하는 와

일드 카드(*)대신 특정 URL을 입력하십시오.

--datadir "/home/TestChain1"

이것은 개인 체인 데이터가 저장 될 데이터 디렉토리 입니다. (nubits 아래에 있음). 공개

이더리움 체인 폴더와 별개의 위치를 선택하십시오.

--port "30303"

이 포트는 다른 피어와 수동으로 연결하는 데 사용됩니다.

--identity "TestnetMainNode

그러면 노드 목록이 동료 목록에서 보다 쉽게 식별 될 수 있도록 노드의 아이디가 설정

됩니다. 다음은 이러한 아이디가 네트워크에 표시되는 예입니다.

Launching geth

사용자 정의 창 블록 json파일을 작성하고 블록 체인 데이터에 대한 디렉토리를 작성한

후 geth에 액세스 할 수 있는 다음 명령을 콘솔에 입력하십시오.

참고 : 사용자 설정에 맞게 필터를 변경하십시오.

사용자 정의 체인에 액세스 하려고 할 때마다 사용자 정의 체인 명령으로 geth 인스턴스

를 시작해야 합니다. 콘솔에 “geth”라고 입력하면 설정된 모든 파일을 기억하지 못합

니다.

귀하의 계정에 이더 사전 할당

“0x400”의 어려움은 사설 테스트 네트워크에서 이더를 매우 빨리 채굴할 수 있게 합니

91

다. 사슬을 만들고 채굴을 시작한다면 몇 분 안에 수백 개의 이더가 있어야 하는데, 이

것은 얼마나 많은 총체적인 토폴로지를 가지고 있는지를 보여주는 것입니다. 귀하의 계

정에 이더를 미리 할당하고 싶다면 다음을 해야 합니다.

1. 사설망을 만든 후에 새로운 이더리움 계정을 만드십시오.

2. 새 계정 주소 복사

3. Custom_Genesis.json file 파일에 다음 명령을 추가 하십시오.

참고 : 0x1fb891f92eb557f4d688463d0d7c560552263b5a 를 계정 주소로 바꾸십

시오.

생성 파일을 저장하고 개인 체인 명령을 다시 실행하십시오. Geth가 완전히 로드 되면

닫습니다. 변수 primary 에 주소를 할당하고 전액을 확인하려고 합니다.

터미널에 명령 geth account list를 실행하여 새 주소가 할당 된 계정 #을 확인 하십시

오.

어느 계정이 이더를 미리 할당 했는지 기록하십시오. 또는 geth 콘솔을 사용하여 콘솔을

시작할 수도 있습니다. (처음 시작했을 때와 동일한 매개 변수를 유지하십시오). 프롬프

트가 나타나면 다음을 입력하십시오.

소유하고 있는 계정 주소 배열을 반환합니다.

참고 : 0을 계정의 색인으로 바꾸십시오. 이 콘솔 명령은 기본 이더리움 주소를 반환해야

합니다.

다음 명령을 입력하십시오.

92

이것은 당신의 계정에 이더가 많이 있음을 나타내는 7.5를 반환합니다. 우리가 당신의

제네시스 파일의 할당 부분에 이렇게 큰 숫자를 넣어야 하는 이유는 “균형” 필드가 이

더리움 통화 이더의 가장 작은 종파인 wei에서 숫자를 취하기 때문입니다.

1.6 채굴

1.6.1 소개

단어 마이닝은 암호 통화에 대한 황금 유추의 맥락에서 비롯됩니다. 금이나 귀금속은 거

의 없기 때문에 디지털 토큰이 있으며 전체 볼륨을 높이는 유일한 방법은 광산을 이용

하는 것입니다. 이는 이더리움에서도 발급 사후 발급의 유일한 방식은 광업을 통한 것

임이 적절하다는 것입니다. 그러나 이러한 예제와 달리 채굴은 블록 체인에서 블록을

생성, 확인 및 게시하여 네트워크를 보호하는 방법이기도 합니다.

이더 채굴 = 네트워크 보안 = 계산 확인

채굴이란?

이더리움은 모든 블록 체인 기술과 마찬가지로 인센티브 기반 보안 모델을 사용합니다.

합의는 가장 큰 차별성을 가진 블록을 선택하는 것에 기반합니다. 채굴자들은 타인이 유

효성을 검사하는 블록을 생산합니다. 다른 잘 형성된 기준들 중에서 블록은 주어진 어려

움의 작업증명 (PoW)을 포함하는 경우에만 유효합니다. 이더리움 세레니티 이정표에서

이것은 마아도 (스테이크 모델의 증명을 보십시오)로 대체 될 것입니다.

이더리움 블록 체인은 비트코인 블록 체인과 여러면에서 유사하지만 약간의 차이점이 있

습니다. 이더리움과 비트코인의 가장 큰 차이점은 비트코인과 달리 블록 체인 아키텍처와

관련이 잇습니다. 이더리움 블록은 트랜잭션 목록과 최신 상태의 복사본을 포함합니다.

(보다 정확한 상태를 인코딩 하는 merkle patricia trie의 루트 해시). 그 외에도 두 개의

다른 값이 블록 번호와 난이도 블록에 저장됩니다.

사용 된 작업 증명 알고리즘은 이더해시(Dagger-Hashimoto 알고리즘의 수정 된 버전)

라고 하며 알고리즘에 대한 nonce 입력을 찾아서 결과가 특정 임계 값 이하가 되도록

합니다. 포우 알고리즘의 요점은 그러한 논스를 발견하는 것보다 가능성을 열거하는 것보

다 더 나은 전략이 아니라는 점입니다. 출력은 (해시 함수의 적용 결과이므로) 균일 한

93

분포를 가지므로, 평균적으로 그러한 난수를 찾는 데 필요한 시간은 차이 임계 값에 따라

달라질 수 있습니다. 이렇게 하면 어려움을 조작하여 새 블록을 찾는 시간을 제어 할 수

있습니다.

프로토콜에 의해 지시 된 바와 같이 난이도는 15초 마다 전체 네트워크에 평균 한 블록

이 생성 되도록 동적으로 조정합니다. 우리는 네트워크가 15초 블록 시간으로 블록 체인

을 생성한다고 말합니다. 이 “하트 비트”는 기본적으로 시스템 상태의 동기화를 강조하며

공격자가 네트워크 마이닝 전원의 절반 이상을 보유하지 않는 한 포크 유지(이중 지출

허용) 또는 악성 행위자의 기록 다시 쓰기가 불가능하다는 것을 보장합니다. (이른바

51% 공격).

네트워크에 참여하는 모든 노드는 채굴자가 될 수 있으며 채굴에서 기대되는 수익은 (상

대) 광량 또는 해시 비율, 즉 네트워크의 전체 해시 비율로 표준화 된 초당 시도 된 비시

횟수에 정비례합니다.

이더해시 포우는 메모리가 없어 ASIC에 강합니다. 메모리 경도는 nonce 및 블록 헤더에

따라 고정된 리소스의 하위 집합을 선택해야 하는 작업 증명 알고리즘을 통해 이루어집

니다. 이 리소스 (수 기가 바이트 크기의 데이터)를 DAG이라고 합니다. DAG는 완전히

30000블록마다 달라지며, 125시간의 창 (획기적으로 약 5.2일)이 생성되며 생성하는 데

시간이 걸립니다. DAG는 블록 높이에만 의존하므로 블록 높이를 조정할 필요가 없으므로

클라이언트는 이 블록의 높이를 블록 높이와 같게 설정합니다. 클라이언트가 사전에

DAG을 미리 생성하고 캐시하지 않으면 네트워크가 각 시대 전환에 막대한 블록 지연을

경험할 수 있습니다. 포우를 검증하기 위해 DAG을 생성 할 필요가 없으므로 기본적으로

CPU와 메모리가 적은 검증이 가능합니다.

특수한 경우로 처음부터 노드를 시작할 때 마이닝은 DAG가 현재 이포크에 대해 빌드 된

후에 시작됩니다.

채굴 보상

성공적인 블록의 포우 채굴은 다음을 받습니다.

‘winning’블록에 대한 정적 블록 보상으로 정확히 5.0 이더

블록 내에서 소비 된 가스의 비용 – 현재 가스 가격에 따라 달라지는 이더의 양

삼촌 당 여분 1/32의 모양으로 블록의 한 부분으로 삼촌을 포함하기를 위한 추

가 사례금

승리 한 채굴자가 제출한 블록에서 모든 거래를 실행함으로써 소비되는 모든 가스는 각

94

거래의 발송자가 지불합니다. 저지 된 가스 비용은 합의안의 일부로 채굴자의 계정에 적

립됩니다. 시간이 지남에 따라 정적 블록 보상을 줄여나갈 것으로 예상됩니다.

Uncle은 오래된 블록이며, 포함하는 블록의 조산인 부모 (최대 6블록 뒤)입니다. 유효한

삼촌은 광업 보상의 분산에 대한 네트워크 지연의 효과를 중립화하기 위해 보상을 받음

으로써 보안을 향상시킵니다. (GHOST 프로토콜이라고도 함). 성공적인 포우 광부에 의해

형성된 블록에 포함된 삼촌은 정ㅈ거 블록 보상(=4.375 이더)의 7/8을 받습니다. 블록

당 최대 2개의 삼촌이 허용됩니다.

채굴 성공은 설정된 블록의 난이도에 달려 있습니다. 블록 장애는 네트워크 해시 전력을

조절하여 12초 블록 타임을 생성하기 위해 각 블록을 동적으로 조정합니다. 따라서 블록

을 찾는 확률은 해시에 따라 다릅니다.

Ethash DAG

Ethash는 작업 증명 알고리즘에 DAG을 사용하며, 이는 각 제네시스, 즉 30000블록마

다 생성됩니다. (125시간, 약 5.2일) DAG은 생성하는 데 오랜 시간이 걸립니다. 클라이언

트가 필요에 따라 생성하는 경우에만 새 에포크의 첫 번째 블록이 발견되기 전에 각 에

포크 전환에서 오래 기다릴 수 있습니다. 그러나 DAG은 블록 번호에 따라 다르므로 각

에포크 전환에서 긴 대기 시간을 피하려면 미리 계산할 수 있고 계산해야 합니다. GETH

와 이더채굴자는 모두 자동 DAG생성을 구현하고 한 번에 두 DAG을 유지하여 원활한 신

기원 전환을 보장합니다. 자동 DAG생성은 콘솔에서 채굴을 제어 할 때 켜고 끌 수 있습

니다. 또한 geth가 –mine 옵션과 함께 시간되면 기본적으로 활성화됩니다. 클라이언트는

DAG리소스를 공유하므로 클라이언트의 여러 인스턴스를 실행하는 경우 자동 DAG 생성

이 한 인스턴스를 제외하고 모두 해제되어 있는지 확인 하십시오.

임의의 신기원에 대한 DAG을 생성하려면 다음과 같이 하십시오.

예를 들어 360000~/. Ethash. Ethash는 ~/.ethash (Mac / Linux) 또는 ~/ AppData /

Ethash (Windows)를 DAG에 사용하여 여러 클라이언트 인스턴스와 여러 실행 인스턴스

간에 공유 할 수 있습니다.

1.6.2 알고리즘

우리의 알고리즘 인 Ethash (이전에 Dagger – Hashimoto로 알려짐)는 DAG (대거 파트)

95

를 형성하고 특정 제약 조건을 풀려고 시도하면서 부분적으로 결정된 대규모의 일시적

무작위 생성 데이터 세트를 기반으로 합니다. 블록의 헤더 해시를 통해.

느린 CPU 전용 환경에서 빠른 검증 시간을 해싱 할 수 있도록 설계되었지만 고 대역폭

의 대용량 메모리가 제공 될 때 광업에 대한 속도가 매우 빨라졌습니다. 대용량 메모리

요구 사항은 더 큰 스케일 단위의 선형 비교를 의미합니다. 높은 대역폭 너비 요구 사항

은 동일한 메모리를 공유하는 많은 초고속 프로세싱 장치에서 파일링 속도를 높이면 단

일 유닛에 대한 이점이 거의 없음을 의미합니다. 이것을 풀 마이닝이 검증을 수행하는 노

드에 이 점이 없으므로 중앙 집중화를 방해한다는 점에서 중요합니다.

작업 마이닝 애플리케이션과 이더리움 데몬 간의 통신은 JSON –RPC API를 통해 이루어

집니다. 두 가지 RPC 기능이 제공됩니다. eth_getWork and eth_submitWork.

이들은 공식적으로 광부 아래의 JSON-RPC API 위키 문서에 문서화되어 있습니다.

채굴을 위해 최소한 하나의 이더리움 계정을 사용할 수 있게 완전히 동기화 된 이더리움

클라이언트가 필요합니다. 이 계정은 채굴 보상을 보내는데 사용되며 코인베이스 또는 이

더베이스라고도 합니다. 게정을 만드는 방법을 배우려면 이 가이드의 “계정 만들기”섹션

을 방문하삽시오.

경고 : 채굴을 시작하기 전에 블록 체인이 주 체인과 완전히 동기화되었는지 확인하십시

오. 그렇지 않으면 주 체인에서 채굴되지 않습니다.

1.6.3 CPU 마이닝

컴퓨터의 중앙 처리 장치 (CPU)를 사용하여 mineether를 사용할 수 있습니다. 이것은 GPU 광부

가 대략 2 배 더 효율적이기 때문에 더 이상 적합하지 않습니다. 그러나 Morden testnet 또는 사

설 체인에서 CPU 마이닝을 사용하여 실제 이더넷을 실제 네트워크에 사용하지 않고 계약 및 트

랜잭션을 테스트해야하는 ether를 생성 할 수 있습니다.

참고 : testnet 에테르는 테스트 용도로 사용하는 것 외에 다른 값을 가지고 있지 않습니다 (테스

트 네트워크 참조).

geth 사용

geth로 ethereum 노드를 시작할 때 기본적으로 채광하지 않습니다. CPU 마이닝 모드에서 시작하

96

려면 --mine 명령 행 옵션을 사용하십시오. -minerthreads 매개 변수를 사용하여 병렬 마이닝 스레

드 수 (기본값은 총 프로세서 코어 수)를 설정할 수 있습니다.

geth - 광산 - minerthreads = 4

콘솔을 사용하여 런타임에 CPU 마이닝을 시작하고 중지 할 수도 있습니다. miner.start는 광역

스레드 수에 대한 선택적 매개 변수를 취합니다.

실제 ether에 대한 마이닝은 네트워크와 동기화되어있는 경우에만 의미가 있습니다 (컨센서스 블

록 상단에 있기 때문에). 따라서 eth 블록 체인 다운 로커 / 동기화 기는 동기화가 완료 될 때까

지 마이닝을 지연하고 miner.stop ()을 사용하여 의도를 취소하지 않으면 마이닝이 자동으로 시작

됩니다.

ether를 얻으려면 etherbase (또는 coinbase) 주소를 설정해야합니다. 이 이더넷베이스는 기본 계

정으로 기본 설정되어 있습니다. etherbase 주소가 없다면 geth - mine이 시작되지 않습니다.

명령 줄에서 etherbase를 설정할 수 있습니다.

콘솔에서 etherbase를 재설정 할 수도 있습니다.

etherbase는 기존 계정의 주소 일 필요는 없습니다.

마이닝 된 블록에 추가 데이터 (32 바이트 만)를 추가하는 옵션이 있습니다. 규칙에 따라 이것은

유니 코드 문자열로 해석되므로 짧은 무의미한 태그를 설정할 수 있습니다.

97

miner.hashrate로 해쉬 레이트를 확인할 수 있습니다. 결과는 H / s (초당 해시 연산)입니다.

블록을 성공적으로 채운 후에는 etherbase 계정의 에테르 잔고를 확인할 수 있습니다. 이제 귀하

의 etherbase가 로컬 계정이라고 가정하십시오.

가스에 대한 수입을 거래에 소비하려면 이 계좌를 잠금이 해제되어야 합니다.

콘솔에서 다음 코드 스 니펫을 사용하여 특정 광부 (주소)가 채굴 한 블록을 확인할 수 있습니다.

블록을 찾았지만 정식 체인에 도달하지 못하는 경우가 종종 발생합니다. 즉, 채광 된 블록을 로컬

에 포함 시키면 현재 상태에 계정에 기록 된 채광 보상이 표시되지만, 잠시 후에 더 좋은 체인이

발견되고 블록이 포함되지 않은 체인으로 전환되므로 보상이 적립되어 마이닝이 필요 없습니다.

따라서 광부가 코인베이스 잔액을 모니터링 할 때 광막 기가 상당히 움직일 수 있음을 발견 할

98

가능성이 높습니다.

1.6.4 GPU 마이닝

하드웨어

이 알고리즘은 메모리가 많이 필요하기 때문에 DAG를 메모리에 저장하려면 각 GPU에 1 ~ 2GB

RAM이 있어야합니다. 오류 GPU 마이닝을 얻는 경우. GPU 메모리 조각화를 한다면? 당신은 충

분한 메모리가 없을 것 입니다. GPU 광부는 OpenCL에서 구현되므로 AMD GPU는 동일한 카테고

리의 NVIDIA GPU보다 '빠릅니다'. ASIC 및 FPGA는 상대적으로 불충분하기 때문에 권장하지 않습

니다. 귀사의 칩셋 및 플랫폼에 맞게 openCL을 사용하려면 다음을 시도하십시오.

• AMD SDK openCL

• NVIDIA CUDA openCL

우분투 리눅스 설정

이 빠른 가이드를 보려면 Ubuntu 14.04 또는 15.04와 fglrx 그래픽 드라이버가 필요합니다.

NVidiadrivers와 다른 플랫폼도 사용할 수 있지만 Genoil의 ethminer fork와 같이 작동하는

OpenCL을 설치하는 방법을 찾아야합니다.

15.04에 있다면 "소프트웨어 및 업데이트> 추가 드라이버"로 이동하여 "fglrx에서 AMD 그래픽 가

속기 용 비디오 드라이버 사용"으로 설정하십시오.

14.04에있는 경우 "소프트웨어 및 업데이트> 추가 드라이버"로 이동하여 "fglrx에서 AMD 그래픽

가속기 용 비디오 드라이버 사용"으로 설정하십시오. 불행히도 일부 사용자에게는 우분투

14.04.02의 알려진 버그로 인해 GPU 광산에 필요한 독점 그래픽 드라이버로 전환하지 못하기 때

문에 작동하지 않습니다.

따라서이 버그가 발생하고 다른 작업을 수행하기 전에 "소프트웨어 및 업데이트> 업데이트"로 이

동하여 "제안 된 신뢰할만한 제안 된 업데이트"를 선택하십시오. 그런 다음 "소프트웨어 및 업데

이트> 추가 드라이버"로 돌아가서 "fglrx에서 AMD 그래픽 가속기 용 비디오 드라이버 사용"으로

설정하십시오. 다시 부팅 한 후에는 드라이버가 실제로 올바르게 설치되었는지 확인해야합니다

(예 : "추가 드라이버"로 다시 이동).

어떤 일을하든, 14.04.02에 있다면 드라이버 또는 드라이버 구성을 변경하지 마십시오. 예를 들어,

99

aticon - initial의 사용법 (특히 -f, -force 옵션과 함께)은 설정을 '중단'시킬 수 있습니다. 실수로 구

성을 변경 한 경우 드라이버를 제거하고 재부팅하고 드라이버를 다시 설치 한 다음 재부팅해야합

니다.

Mac 설정

냉각 상태를 확인하십시오.

Windows 설정

최신 Eth ++ 설치를 다운로드하고 설치 화면의 "Choose Components"화면에서 ethminer를 선택하

십시오.

100

geth와 함께 ethminer 사용하기

ethminer는 포트 8545 (geth의 기본 RPC 포트)에서 geth와 통신합니다. geth에 --rpcport 옵션을

주어 이것을 변경할 수 있습니다. Ethminer는 모든 포트를 확인합니다. --rpccorsdomain localhost를

사용하여 CORS 헤더를 설정해야합니다. -F http://127.0.0.1:3301을 사용하여 ethminer의 포트를 설

정할 수도 있습니다. 동일한 컴퓨터에서 여러 인스턴스 마이닝을 원한다면 포트를 설정해야합니

다. 사설망에서 테스트하는 경우 대신 CPU 마이닝을 사용하는 것이 좋습니다.

참고 : GPU 마이닝의 TOP에서 CPU 마이닝을 수행하지 않으려면 geth에 --mine 옵션을 제공하거

나 콘솔에서 광부를 시작할 필요가 없습니다.

ethminer의 기본값이 작동하지 않으면 OpenCL 장치를 다음과 같이 지정하십시오. --opencl-device

X 여기서 X는 {0, 1, 2, ...}입니다. ethminer를 -M (벤치 마크)과 함께 실행하면 다음과 같은 내용이

표시됩니다.

게스를 디버그하려면 :

광부 디버그 방법:

참고 : GPU 마이닝에서는 geth에서 해시 레이트 정보를 사용할 수 없습니다.

ethminer로 해시 레이트를 확인하십시오. miner.hashrate는 항상 0을보고합니다.

101

Ethminer와 eth 사용하기

단일 GPU에서 마이닝

하나의 GPU에서 광산을 채우기 위해서는 다음과 같은 인수를 사용하여 eth를 실행해야합니다.

• -v 1 자세한 정보 표시를 1로 설정합니다. 메시지로 스팸 메일을 보내지 않습니다.

• -a YOURWALLETADDRESS 광산 보상이 들어갈 코인베이스를 설정하십시오. 위의 주소는 예제

일뿐입니다. 이 인수는 정말 중요합니다, 당신의 지갑 주소에 실수를하지 않도록하거나 에테르 지

불금을받지 않습니다.

• --client-name "OPTIONAL"선택적 클라이언트 이름을 설정하여 네트워크에서 사용자를 식별합니

다.

• -x 50 많은 양의 동료를 요청하십시오. 처음에는 동료를 찾는 데 도움이됩니다.

• -m on 실제로 광업을 시작합니다.

• -G GPU 마이닝을 설정합니다.

클라이언트가 실행되는 동안 geth attach '또는 [ethconsole] (https://github.com/ethereum/ethereum-

console)을 사용하여 클라이언트와 상호 작용할 수 있습니다.

다중 GPU에서 마이닝

여러 GPU와 eth를 사용하는 마이닝은 geth 및 여러 GPU를 사용한 마이닝과 매우 유사합니다.

coinbase 주소가 올바르게 설정된 eth 노드가 실행 중인지 확인하십시오.

클라이언트가 ethminer 인스턴스와 통신 할 수있는 JSON-RPC 서버를 가질 수 있도록 -j 인수도

추가했습니다. 또한 우리는 ethminer가 이제 우리를 위해 광업을 수행 할 것이기 때문에 광산 관

련 주장을 삭제했습니다. 각 GPU에 대해 다른 ethminer 인스턴스를 실행하십시오.

여기서 X는 ethminer가 {0, 1, 2, ...}을 사용하게하려는 openCL 장치에 해당하는 색인 번호입니다.

OpenCL 장치 목록을 쉽게 얻으려면 OpenCL이 감지 할 수있는 모든 장치 목록과 장치 별 추가

정보를 제공하는 ethminer --list-devices를 실행할 수 있습니다.

102

다음은 샘플 출력입니다.

마지막으로 --no-precompute 인수는 ethminers가 다음 에포크의 DAG를 미리 생성하지 않도록 요

청합니다. 에포크 전환이 발생할 때마다 마이닝 중단이 발생하므로 권장하지 않습니다.

벤치마킹

광력은 메모리 대역폭에 따라 조정되는 경향이 있습니다. 우리의 구현은 일반적으로 NVidia를 통

해 AMD GPU에서 더 잘 지원되는 OpenCL로 작성되었습니다. 경험적 증거에 따르면 AMD GPU

는 NVidia 제품보다 가격 측면에서 더 나은 광업 성능을 제공합니다.

단일 장치 설정을 벤치마킹하려면 -M 옵션을 통해 벤치마킹 모드에서 ethminer를 사용할 수 있습

니다.

많은 장치가 있고 각 장치를 개별적으로 벤치마킹하려는 경우 앞 절과 비슷하게 -opencl-device

옵션을 사용할 수 있습니다.

ethminer --list-devices를 사용하여 가능한 수를 나열하여 X {0, 1, 2, ...} 대신 사용할 수 있습니다.

Windows에서 마이닝을 시작하려면 먼저 geth windows 바이너리를 다운로드하십시오.

• Geth의 압축을 풀고 (마우스 오른쪽 단추를 클릭하고 압축을 해제 선택) 명령 프롬프트를 실

행하십시오. cd를 사용하여 Geth 데이터 폴더의 위치로 이동하십시오. (예 : cd /를 사용하여 C :

드라이브로 이동)

• geth --rpc를 입력하여 geth를 시작하십시오.

이것을 입력하자마자 Ethereum 블록 체인이 다운로드되기 시작합니다. 경우에 따라 방화벽이 동

기화 프로세스를 차단할 수 있습니다 (이렇게하면 사용자에게 메시지가 표시됩니다). 이 경우 '액

세스 허용'을 클릭하십시오.

• C ++ 마이닝 소프트웨어 인 ethminer를 먼저 다운로드하여 설치하십시오 (방화벽 또는

103

Windows 자체가 작동하여 액세스 허용)

• 다른 명령 프롬프트를 열고 (첫 번째 명령 프롬프트는 그대로 두십시오!) cd / Program Files /

Ethereum (++) / release를 입력하여 디렉토리를 변경하십시오

• 이제 geth가 블록 체인을 동기화했는지 확인하십시오. 더 이상 동기화되지 않으면 명령 프롬

프트에서 ethminer -G를 입력하여 마이닝 프로세스를 시작할 수 있습니다

이 시점에서 몇 가지 문제가 나타날 수 있습니다. 오류가 발생하면 Ctrl + C를 눌러 광부를 중단

할 수 있습니다. 오류가 "InsufIfficiency Memory"라고 표시되면 GPU에 ether 메모리를 확보 할 수

있는 메모리가 부족합니다.

1.6.5 풀 마이닝

광업 웅덩이는 참여 광부의 광업력을 모아서 예상 수익을 완만하게하는 것을 목표로하는 협동 조

합입니다. 그 대가로 보통 광업 보상의 0-5 %를 청구합니다. 마이닝 풀은 중앙 계정에서 작업 증

명을 통해 블록을 제출하고 기여한 광력에 비례하여 참가자에게 보상금을 재분배합니다.

경고 : 대부분의 광업 단지에는 제 3 자의 중앙 구성 요소가 포함되어 있습니다. 즉, 신뢰가 없는

것은 아닙니다. 즉, 풀 운영자는 수입을 다할 수 있습니다. 조심해서 행동하십시오. 오픈 소스 코

드베이스를 가진 많은 신뢰할 수 없고 분산 된 풀이 있습니다.

경고 : 마이닝 풀은 작업 증명 계산을 아웃소싱하기 만하며 트랜잭션을 실행하여 발생한 상태 전

환을 확인하기 위해 블록을 확인하거나 VM을 실행하지 않습니다. 이로 인해 풀이 보안 측면에서

단일 노드처럼 작동하므로 해당 풀의 성장이 중앙 집중화되어 51 %의 공격을 받을 위험이 있습

니다. 네트워크 용량 배포를 따르고 풀이 너무 커지 않도록하십시오.

마이닝 풀

• coinotron

• nanopool

• ethpool - 예측 가능한 솔로 채굴, etherchain.org와의 비 전통적인 지불 계획.

• supernova

104

• coinmine.pl

• eth.pp.ua

• talkether - 비 전통적인 지불 구조, 부분적으로 분산 된

• weipool

• ethereumpool

• pooleum

• alphapool

• cryptopool

• unitedminers

• dwarfpool - 이것을 피하십시오 (현재 네트워크의 50 % 이상).

• laintimes – 단종

1.6.6 채굴 자원

• etherchain에서 지난 24 시간 동안 최고의 광부

• 2015 년 8 월 풀 해시 료 배포

• 포럼에서 관리되지 않는 풀 목록

• cryptocompare에 대한 광업 수익성 계산기

• cryptowizzard에 대한 광업 수익성 계산기

• 에테르 스캐닝에 대한 광업 이익 계산기

• In The Ether의 마이닝 수익률 계산기

• 에테르 스캐닝에 대한 광도 차이 차트

POS vs POW

• https://www.reddit.com/r/ethereum/comments/38db1z/eli5_the_difference_between_pos_and_pow/

• https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/

https://www.reddit.com/r/ethereum/comments/42o8oy/can_someone_explain_the_switch_to_pos_ho

w_and_when/

105

1.7 계약 및 거래

1.7.1 계정 유형, 가스 및 거래

EOA 대 계약 계정

Ethereum에는 두 가지 유형의 계정이 있습니다.

• 외부 소유 계정

• 계약 계정

이 구분은 Serenity에서 제거 될 수 있습니다.

외부 소유 계정 (EOAs)

외부에서 관리되는 계정

• 이더 밸런스가 있습니다.

• 트랜잭션 (이더넷 전송 또는 트리거 계약 코드)을 보낼 수 있습니다.

• 개인 키로 제어됩니다.

• 관련 코드가 없습니다.

계약 계정

계약

• 이더 밸런스가 있습니다.

• 관련 코드,

• 코드 실행은 다른 계약에서받은 트랜잭션 또는 메시지 (호출)에 의해 트리거됩니다.

• 실행될 때 - 임의의 복잡성 (Turing completeness)의 연산 수행 - 자신의 영구 저장 장치를 조작,

즉 자신의 영구적 인 상태를 가질 수 있음 - 다른 계약을 호출 할 수 있음

Ethereum 블록 체인의 모든 작업은 외부 소유 계정과의 트랜잭션에 의해 동작하도록 설정됩니다.

계약 계정이 트랜잭션을 수신 할 때마다 트랜잭션의 일부로 전송 된 입력 매개 변수가 지시 한대

로 해당 코드가 실행됩니다. 계약 코드는 새로운 블록을 검증하는 과정에서 네트워크에 참여하는

각 노드에서 Ethereum 가상 머신에 의해 실행됩니다.

이 실행은 완전히 결정 론적이어야하며, 유일한 컨텍스트는 블록 체인에있는 블록의 위치와 사용

106

가능한 모든 데이터입니다. 블록 체인의 블록은 시간 단위를 나타내고 블록 체인 자체는 시간 차

원이며 체인의 블록으로 지정된 이산 시간 점에서 상태의 전체 기록을 나타냅니다.

모든 에테르 균형과 값은 wei 단위로 표시됩니다 : 1 Ether은 1e18 wei입니다.

참고 : Ethereum의 "Contracts"는 "충족 시키거나"준수해야하는 것으로 보여서는 안됩니다. 오히려

그것들은 Ethereum 실행 환경에 살며 메시지 나 트랜잭션에 의해 "찌를 (poked)"때 항상 특정 코

드를 실행하는 "자율적 에이전트 (autonomous agents)"와 같으며 자신의 에테르 밸런스와 자체 키

/ 영구 저장소를 저장할 수 있습니다.

트랜잭션이란 무엇인가?

Ethereum에서 "트랜잭션"이라는 용어는 외부 소유 계정에서 블록 체인의 다른 계정으로 보낼 메

시지를 저장하는 서명 된 데이터 패키지를 나타내기 위해 사용됩니다.

트랜잭션에는 다음이 포함됩니다.

• 메시지 수신자.

• 발신자를 식별하고 수신자에게 블록 체인을 통해 메시지를 보낼 의도가 있음을 증명하는 서명,

• 필드 값 - 발신자에서 수신자로 전송할 통화량,

• 선택적 데이터 필드 - 계약서로 전송 된 메시지를 포함 할 수 있습니다.

• 트랜잭션 실행이 수행 할 수있는 최대 계산 단계 수를 나타내는 STARTGAS 값

• GASPRICE 값. 발신자가 가스비로 지불 할 의사가있는 요금을 나타냅니다. 가스의 하나의 단

위는 하나의 원자 적 명령, 즉 계산 단계의 실행에 대응한다.

메시지란 무엇인가?

계약서에는 다른 계약서에 "메시지"를 보낼 수있는 기능이 있습니다. 메시지는 직렬화되지 않고

Ethereum 실행 환경에서만 존재하는 가상 객체입니다. 그들은 함수 호출로 생각할 수 있습니다.

메시지 내용 :

• 메시지의 발신자 (암시 적).

• 메시지 수신자

107

• 필드 값 - 계약 주소로 메시지와 함께 전송할 통화량.

• 선택적인 데이터 필드, 즉 계약서의 실제 입력 데이터

• STARTGAS 값 - 메시지로 인해 코드 실행이 발생할 수있는 최대 가스량을 제한합니다.

본질적으로 메시지는 계약과는 달리 외부 행위자가 생성한다는 점을 제외하면 트랜잭션과 같습

니다. 현재 실행중인 코드가 CALL 또는 DELEGATECALL opcode를 실행하면 메시지가 생성되어

실행됩니다. 트랜잭션과 마찬가지로 메시지는 해당 코드를 실행하는받는 사람 계정으로 연결됩니

다. 따라서 계약은 외부 행위자가 할 수있는 것과 동일한 방식으로 다른 계약과 관계를 가질 수

있습니다.

가스란 무엇인가?

Ethereum은 Ethereum Virtual Machine (EVM)이라고하는 블록 체인에서 실행 환경을 구현합니다.

네트워크에 참여하는 모든 노드는 블록 검증 프로토콜의 일부로 EVM을 실행합니다. 그들은 확인

중인 블록에 나열된 트랜잭션을 거쳐 EVM 내의 트랜잭션에 의해 트리거 된 코드를 실행합니다.

네트워크의 모든 노드는 동일한 계산을 수행하고 동일한 값을 저장합니다. 분명히 Ethereum은 계

산의 효율성을 최적화하는 것이 아닙니다. 병렬 처리는 중복 적으로 병렬 처리됩니다. 이는 신뢰

할 수있는 제 3 자, 신탁 또는 폭력 독점을 필요로하지 않고 시스템 상태에 대한 합의에 도달 할

수있는 효율적인 방법을 제공하는 것입니다. 그러나 중요한 것은 최적의 계산을 위해 존재하지

않는다는 것입니다. 계약 집행은 노드를 거쳐 중복 적으로 복제되므로 자연히 비용이 많이 들며

일반적으로 오프 체인 (offchain)으로 처리 할 수있는 계산을 위해 블록 체인을 사용하지 않도록

유도합니다.

분산 응용 프로그램 (dapp)을 실행하는 경우 블록 체인과 상호 작용하여 상태를 읽고 수정할

수 있지만 일반적으로 dapps는 블록 체인에 대한 합의에 결정적인 비즈니스 논리와 상태 만 넣

습니다.

메시지 또는 트랜잭션에 의해 트리거되어 계약이 실행되면 모든 명령이 네트워크의 모든 노드에

서 실행됩니다. 여기에는 비용이 있습니다 : 실행되는 모든 운영에 대해 가스 단위 수로 표현 된

지정된 비용이 있습니다.

Gas는 Ethereum 블록 체인에서 이루어지는 모든 작업에 대해 거래를 보내는 사람이 지불해야

하는 집행 수수료의 이름입니다. 유명한 가스는이 요금이 현명한 계약의 움직임을 주도하는 암호

문 역할을한다는 견해에서 영감을 얻었습니다. 코드를 실행하는 광부로부터 에테르 용으로 가스

108

를 구입합니다. 가스와 에테르는 가스 단위가 자연 비용을 갖는 계산 단위와 정렬되기 때문에 의

도적으로 분리되며, 에테르의 가격은 시장 세력의 결과로 인해 변동됩니다. 두 개는 자유 시장에

의해 매개된다 : 가스의 가격은 광산업자에 의해 실제로 결정된다. 광산업자는 최소 한도보다 낮

은 가스 가격으로 거래를 거부 할 수있다. 가스를 얻으려면 계정에 ether를 추가하기 만하면됩니

다. Ethereum 고객은 거래에 대한 최대 지출로 지정한 금액으로 Ether 용 가스를 자동으로 구매

합니다.

Ethereum 프로토콜은 Ethereum 네트워크에서 고의적 인 공격과 남용을 방지하기 위해 계약이

나 거래에서 실행되는 계산 단계마다 요금을 부과합니다. 모든 거래에는 가스 한도와 가스 당 지

불 할 의사가있는 수수료가 포함되어 있어야합니다. 광부들은 거래를 포함시키고 수수료를 징수

할 것인지 여부를 선택할 수 있습니다. 원래 메시지와 트리거 될 수있는 모든 하위 메시지를 포

함하여 트랜잭션에 의해 생성 된 계산 단계에 사용 된 총 가스량이 가스 한도보다 작거나 같으면

트랜잭션이 처리됩니다. 총 가스가 가스 한도를 초과하면 거래가 유효하고 광부가 요금을 계속

징수 할 수 있다는 것을 제외하고는 모든 변경 사항을 되돌립니다. 거래 실행에 사용되지 않은

모든 초과 가스는 발신자에게 Ether로 환급됩니다. 과잉 지출에 대해 걱정할 필요가 없습니다. 소

비하는 가스에 대해서만 청구되기 때문입니다. 이는 추정치보다 훨씬 높은 가스 한도로 거래를

보내는 것은 유용 할뿐만 아니라 안전하다는 것을 의미합니다.

거래 비용 견적

거래의 총 에테르 비용은 다음 2 가지 요소를 기반으로합니다.

gasUsed는 거래에서 소비되는 총 가스입니다

가스 거래에 지정된 가스 1 단위의 가격 (에테르 단위)

총액 = 가스 사용량 * 가스 가격

가스 사용

EVM의 각 작업에는 소비되는 가스의 양이 지정되었습니다. gasUsed는 실행 된 모든 작업에 대한

모든 가스의 합계입니다. 이 배후에 있는 분석의 일부를 엿볼 수 있는 스프레드 시트가 있습니다.

gasUsed를 추정하기 위해 사용할 수 있지만 몇 가지주의 사항이있는 estimateGas API가 있습니

다.

109

가스 가격

사용자는 트랜잭션을 구성하고 서명하며 각 사용자는 자신이 원하는 gasPrice를 지정할 수 있

습니다.이 값은 0 일 수 있습니다. 그러나 Frontier에서 출시 된 Ethereum 클라이언트의 기본 가

스 가격은 0.05e12이었습니다. 광부들이 수익을 위해 최적화 할 때, 대부분의 거래가 0.05e12의

가스 가격으로 제출된다면, 광부에게 가스 프린스가 더 낮거나 0 인 거래를 받아들이도록 설득하

는 것이 어려울 수 있습니다.

트랜잭션 비용의 예

2 개의 숫자를 더하는 계약을 맺습니다. EVM OPCODE ADD는 3 개의 가스를 소비합니다.

기본 가스 가격 (2016 년 1 월 기준)을 사용하는 대략적인 비용은 다음과 같습니다.

3 * 0.05e12 = 1.5e11 wei

1 Ether은 1e18 wei이므로 총 비용은 0.00000015 Ether입니다.

이는 추가하기 전에 2 개의 숫자를 계약에 전달하는 비용과 같은 일부 비용을 무시하기 때문에

단순화됩니다.

• 문제

• 가스 요금

• 가스 비용 계산기

• Ethereum 가스 가격

작업 이름 가스 가격 코멘트

단계 1 실행 사이클 당 기본 금액

정지 0 무료

자살 0 무료

sha3 20

sload 20 영구 보관소에서 가져오다

sstore 100 영구 보관소에 넣다

잔액 20

생성 100 계약 생성

호출 20 읽기 전용 호출 시작

메모리 1 메모리를 확장 할 때마다 모든 추가 단어

txdata 5 트랜잭션을위한 데이터 또는 코드의 모든 바이트

트랜잭션 500 기본 수수료 거래

110

계약 생성 53000 21000 년부터 농가에서 바뀌었다.

계정 상호 작용의 예 - 도박 계약

앞서 언급 한 것처럼 두 가지 유형의 계정이 있습니다.

• 외부 소유 계정 (EOAs) : 개인 키로 제어되는 계정이며, EOA와 연결된 개인 키를 소유하고

있다면이 계정으로부터 메시지와 메시지를 보낼 수 있습니다.

• 계약 : 자체 코드가 있고 코드로 제어되는 계정입니다.

기본적으로 Ethereum 실행 환경은 생명이 없습니다. 아무 일도 일어나지 않으며 모든 계좌의

상태는 동일하게 유지됩니다. 그러나 어떤 사용자라도 Ethereum의 바퀴를 움직여서 외부 소유

계정에서 거래를 보내서 행동을 유발할 수 있습니다. 트랜잭션의 대상이 다른 EOA 인 경우 트

랜잭션은 일부 ether를 전송할 수 있지만 그렇지 않은 경우에는 수행하지 않습니다. 그러나 대

상이 계약 인 경우 차례로 계약이 활성화되고 코드가 자동으로 실행됩니다.

이 코드에는 자체 내부 저장소 (32 바이트 키를 32 바이트 값으로 매핑하는 데이터베이스)를

읽고 쓸 수 있으며받은 메시지의 저장소를 읽고 다른 계약에 메시지를 보내어 차례대로 실행을

트리거 할 수 있습니다. 실행이 중지되고 계약에 의해 전송 된 메시지에 의해 트리거 된 모든

하위 실행 (이 모든 것이 결정적이며 동기적인 순서로 발생합니다. 즉, 하위 호출이 상위 호출

이 더 진행되기 전에 완전히 완료되면) 다시 한 번, 다음 거래에서 깨울 때까지 실행 환경이 중

지됩니다.

계약서는 일반적으로 네 가지 목적을 수행합니다.

• 다른 계약이나 외부 세계에 유용한 것을 나타내는 데이터 저장소를 유지합니다. 이 중 하나

는 통화를 시뮬레이트하는 계약이고, 다른 하나는 특정 조직의 멤버십을 기록하는 계약입니다.

•보다 복잡한 액세스 정책을 사용하는 일종의 외부 소유 계정 역할을하십시오. 이를 "전달 계약

"이라고하며 일반적으로 특정 조건이 충족되는 경우에만 수신 대상 메시지를 원하는 대상으로

다시 보내는 작업이 포함됩니다. 예를 들어 주어진 3 개의 개인 키 중 2 개가 특정 메시지를

재전송하기 전에 확인 (예 : multisig) 할 때까지 대기하는 전달 계약을 가질 수 있습니다. 보다

복잡한 전달 계약은 전송 된 메시지의 성격에 따라 조건이 다릅니다. 이 기능의 가장 간단한

사용 사례는 좀 더 복잡한 액세스 절차를 통해 무시할 수있는 철수 제한입니다. 지갑 계약이

좋은 예입니다.

• 여러 사용자 간의 지속적인 계약 또는 관계를 관리합니다. 예를 들면 금융 계약, 특정 중재자

세트에 대한 에스크로우 또는 어떤 종류의 보험이 있습니다. 또한 한 당사자가 다른 당사자가

111

언제든지 참여할 수 있도록 공개 계약을 맺을 수 있습니다. 이것의 한 예는 수학적 문제에 대

한 유효한 해결책을 제출하거나 계산 자료를 제공하는 사람에게 자동으로 현상금을 지불하는

계약입니다.

• 기본적으로 소프트웨어 라이브러리 역할을 하는 다른 계약에 기능을 제공합니다.

계약은 "호출"또는 "메시지 전송"중 하나로 불리는 활동을 통해 서로 상호 작용합니다. "메시

지"는 일정량의 에테르, anysize의 데이터 바이트 배열, 보낸 사람과받는 사람의 주소를 포함하

는 개체입니다. 계약서에서 메시지를 받으면 메시지의 원래 보낸 사람이 즉시 사용할 수있는

일부 데이터를 반환 할 수있는 옵션이 있습니다. 이런 식으로 메시지를 보내는 것은 함수 호출

과 똑같습니다.

계약은 이러한 다양한 역할을 할 수 있기 때문에 계약이 서로 상호 작용할 것으로 기대합니

다. 예를 들어 Alice와 Bob이 100 GavCoin에 내기를 걸어서 샌프란시스코의 온도가 내년의 어

느 시점에서 35도를 초과하지 않을 것이라고 생각해보십시오. 그러나 Alice는 보안을 매우 중요

시하며 기본 계정은 3 개의 개인 키 중 2 개를 승인하는 메시지 만 보내는 전달 계약을 사용합

니다. Bob은 양자 암호화에 대해 편집증 적입니다. 그래서 전통적인 ECDSA와 함께 Lamport

서명으로 서명 된 메시지 만 전달하는 전달 계약을 사용합니다 (그러나 그는 구식이기 때문에

SHA256을 기반으로 한 Lamport sig의 버전을 사용하는 것을 선호합니다. Ethereum에서 직접

지원되지 않음).

도박 계약 자체는 일부 계약에서 샌프란시스코 날씨에 대한 데이터를 가져와야 하며 실제로

GavCoin을 Alice 또는 Bob (또는 보다 정확하게 Alice 또는 Bob의 포워딩 중 하나로 보내려고

할 때 GavCoin 계약과 대화해야 합니다.). 따라서 계정 간의 관계를 다음과 같이 나타낼 수 있

습니다.

112

Bob이 내기를 정하기를 원할 때 다음 단계가 발생합니다 :

1. Bob의 EOA에서 전달 계약으로 메시지를 트리거하는 트랜잭션이 전송됩니다.

2. Bob의 포워딩 계약은 메시지의 해시와 Lamport 서명을 Lamport 서명 검증 라이브러리로 기

능하는 계약에 보냅니다.

3. Lamport 서명 검증 라이브러리는 Bob이 HA256 기반 Lamport sig를 필요로하므로 SHA256

라이브러리를 필요한만큼 여러 번 호출하여 서명을 확인합니다.

4. Lamport 서명 검증 라이브러리가 1을 반환하면 서명이 검증되었음을 나타내며, 베팅을 나타

내는 계약서에 메시지를 전송합니다. 5. 내기 계약은 샌프란시스코 온도를 알려주는 계약서를

확인하여 온도가 무엇인지 확인합니다.

6. 베팅 계약은 메시지에 대한 응답으로 온도가 35ºC 이상임을 보여주기 때문에 GavCoin 계약

서에 GavCoin을 계좌에서 Bob의 포워딩 계약으로 이동하라는 메시지를 보냅니다.

GavCoin은 모두 GavCoin 계약의 데이터베이스에 항목으로 "저장"되어 있습니다. 단계 6의 맥

113

락에서 "계좌"라는 단어는 단순히 GavCoin 계약 저장소에 베팅 계약 주소의 키와 밸런스 값이

있는 데이터 항목이 있음을 의미합니다. 이 메시지를받은 후 GavCoin 계약은이 금액을 일정

금액만큼 줄이고 Bob의 전달 계약 주소에 해당하는 값을 증가시킵니다. 다음 다이어그램에서

이러한 단계를 볼 수 있습니다.

오프라인 거래 서명

[FAQ에 이것을 추가하고 turboethereum 가이드의 ethkey 섹션을 가리 키시겠습니까? ]

• 탄력성 원시 트랜잭션 브로드 캐스터

1.7.2 계약

계약이란?

계약은 Ethereum 블록 체인의 특정 주소에있는 코드 (그 기능)와 데이터 (해당 상태)의 수집입니

다. 계약 계좌는 실제 계산을 수행하는 것 외에도 자체간에 메시지를 전달할 수 있습니다. 계약은

114

Ethereum 가상 머신 (EVM) 바이트 코드라고하는 Ethereum 특정 바이너리 형식으로 블록 체인에

서 살아 간다.

계약은 일반적으로 Solinity와 같은 고수준 언어로 작성된 다음 바이트 코드로 컴파일되어 블록

체인에 업로드됩니다.

참조 :

다른 언어들, 특히 Serpent와 LLL이 존재하는데,이 문서의 Ethereum 고수준 언어 섹션에 더 자세

히 설명되어 있습니다.

Dapp 개발 리소스에는 통합 개발 환경, 이러한 언어로 개발하는 데 도움이되는 개발자 도구, 테

스트 기능 및 다른 기능 간의 배포 지원이 나열되어 있습니다.

Ethereum 고수준 언어

계약은 Ethereum 가상 머신 (EVM)에 의해 실행되는 Ethereum 특정 바이너리 포맷 (EVM 바이트

코드)의 블록 체인에서 살아 간다. 그러나 계약은 일반적으로 상위 수준 언어로 작성된 다음 블록

코드에 배포 할 EVM 컴파일러를 사용하여 바이트 코드로 컴파일 됩니다.

아래는 개발자들이 Ethereum을위한 현명한 계약서를 작성하는 데 사용할 수 있는 다양한 고급

언어입니다.

Solidity

Solidity는 JavaScript와 비슷한 언어로 계약을 개발하고 EVM 바이트 코드로 컴파일 할 수 있습니

다. 현재 Ethereum의 가장 인기있는 언어입니다.

• Solidity Documentation - Solidity는 계약을 작성하는 데 사용되는 Ethereum 고수준 언어입니다.

• 고밀도 온라인 실시간 컴파일러

• 표준화 된 계약 API

• 유용한 Ðapp 패턴 - Ðapp 개발에 유용한 코드 단편.

Serpent

Serpent는 계약을 개발하고 EVM 바이트 코드로 컴파일하는 데 사용할 수있는 Python과 유사한

115

언어입니다. 저수준 언어의 많은 이점을 프로그래밍 스타일에서의 사용 용이성과 결합하고 동시

에 계약 프로그래밍을위한 특수 도메인 특화 기능을 추가함으로써 최대한 깨끗하고 단순하게하기

위한 것입니다. Serpent은 LLL을 사용하여 컴파일됩니다.

• 에테리언 위키에 대한 Serpent

• Serpent EVM 컴파일러

LLL

Lisp Like Language (LLL)는 어셈블리와 비슷한 저수준 언어입니다. 이것은 매우 간단하고 최소한

의 것을 의미합니다. 본질적으로 EVM에서 직접 코딩하는 것보다는 작은 포장입니다.

• GitHub의 LIBLLL

• 평생 학습의 예

Mutan (더 이상 사용되지 않음)

Mutan은 제프리 윌케 (Jeffrey Wilcke)가 설계하고 개발 한 정적 인 형식의 C 언어입니다. 더 이상

유지되지 않습니다.

계약서 작성

Hello World 프로그램이 없으면 어떤 언어도 완성되지 않습니다. Ethereum 환경에서 작동하는

Solidity는 문자열을 "출력"하는 확실한 방법이 없습니다. 우리가 할 수있는 가장 가까운 방법은

로그 이벤트를 사용하여 문자열을 블록 체인에 배치하는 것입니다.

이 계약은 실행될 때마다 매개 변수 "Hello, World!"로 Print 유형의 블록 체인에 로그 항목을 만듭

니다.

참조 :

Solidity 문서에는 Solinity 코드 작성에 대한 예제와 지침이 더 있습니다.

116

계약서 컴파일링

견고성 계약의 편집은 여러 메커니즘을 통해 수행 할 수 있습니다.

• 명령줄을 통해 solc 컴파일러 사용.

• geth 또는 eth가 제공하는 javascript 콘솔에서 web3.eth.compile.solidity를 사용합니다 (여전히

solc 컴파일러가 설치되어 있어야 함).

• 온라인 Solidity 실시간 컴파일러.

• 강성 계약서 작성을 위한 Meteor dapp Cosmo.

• 혼합 IDE.

• 이더리움 지갑.

참고 : 솔리드 계약서 코드 solc 및 컴파일에 대한 자세한 내용은 여기를 참조하십시오.

geth에 솔리드 빌더 설정하기

geth 노드를 시작하면 어떤 컴파일러가 사용 가능한지 확인할 수 있습니다.

이 명령은 현재 사용할 수있는 컴파일러를 나타내는 문자열 배열을 반환합니다.

참고 : solc 컴파일러는 cpp-ethereum과 함께 설치됩니다. 또는 직접 제작할 수도 있습니다.

solc 실행 파일이 비표준 위치에있는 경우 thsolsol을 사용하여 solc 실행 파일에 대한 사용자

정의 경로를 지정할 수 있습니다.

또는 런타임에 콘솔을 통해 이 옵션을 설정할 수 있습니다.

117

간단한 계약서 작성

간단한 계약 소스를 컴파일하자.

이 계약은 양의 정수 a로 호출되고 * 7을 반환하는 단일 메서드 곱하기를 제공합니다.

eth0pile.solidity ()를 사용하여 geth JS 콘솔에서 견고성 코드를 컴파일 할 준비가 되었습니다.

참고 : 컴파일러는 RPC를 통해 사용할 수도 있습니다. 따라서 web3.js를 통해 RPC / IPC를 통해

geth에 연결되는 브라우저 내 Ðapp에 연결할 수 있습니다.

다음 예제는 JSON-RPC를 통해 geth와 인터페이스하여 컴파일러를 사용하는 방법을 보여줍니다.

하나의 소스에 대한 컴파일러 출력은 각각 하나의 계약을 나타내는 계약 오브젝트를 제공합니다.

eth.compile.solidity의 실제 반환 값은 계약 오브젝트 쌍에 대한 계약 이름의 맵입니다. 계약 이름

은 test이므로 eth.compile.solidity (source) .test는 다음 필드가 포함 된 테스트 계약의 계약 오브젝

118

트를 제공합니다.

code 컴파일 된 EVM 바이트 코드

info 컴파일러의 추가 메타 데이터 출력

source 소스 코드

language 계약 언어 (Solidity, Serpent, LLL)

languageVersion 계약 언어 버전

compilerVersion이 계약을 컴파일하는 데 사용 된 solidity 컴파일러 버전입니다.

abiDefinition 애플리케이션 바이너리 인터페이스 정의

userDoc 사용자를위한 NatSpec Doc입니다.

developerDoc 개발자 용 NatSpec 문서입니다.

컴파일러 출력을 코드 및 정보로 즉시 구조화하면 두 가지 다른 배포 경로가 다시 나타납니다.

컴파일 된 EVM 코드는 계약 생성 트랜잭션을 통해 블록 체인으로 보내지 만 나머지 (정보)는 블

록 클라우드의 코드를 보완하는 공개적으로 검증 가능한 메타 데이터로 분산 된 클라우드에 이상

적으로 존재합니다.

원본에 여러 계약이 포함되어있는 경우 출력에는 각 연락처에 대한 항목이 포함되며 계약 이름을

특성 이름으로 사용하여 해당 계약 정보 개체를 검색 할 수 있습니다. 가장 최근의

GlobalRegistrar 코드를 검사하여이를 시도 할 수 있습니다.

계약서 작성 및 배포

이 섹션을 시작하기 전에 잠금 해제 된 계정과 일부 금액이 모두 있어야합니다. 이제 이전 섹션

의 EVM 코드를 데이터로 사용하여 트랜잭션을 빈 주소로 보내 블록 체인에 대한 계약을 생성합

니다.

참고 : 온라인 Solidity 실시간 컴파일러 또는 MixIDE 프로그램을 사용하면 훨씬 쉽게 수행 할 수

있습니다.

119

모든 2 진 데이터는 16 진수 형식으로 일련화 됩니다. 16 진수 문자열은 항상 16 진수 0x를 갖습

니다.

참고 : arg1, arg2, ...는 계약 생성자에 대한 인수 (any 인수가있는 경우)입니다. 계약에 생성자 인

수가 필요하지 않은 경우이 인수는 생략 할 수 있습니다.

이 단계에서는 귀하가 집행 비용을 지불해야한다는 점을 지적 할 가치가 있습니다. 거래처를 한

블록으로 만들면 EVM의 가스 규칙에 따라 계정의 잔액 (필드에서 보낸 사람으로 지정)을 줄일

수 있습니다. 얼마 후, 귀하의 거래가 컨소시엄 상태라는 사실을 알리는 블록에 거래가 포함되어

야합니다. 이제 귀하의 계약은 블록 체인에서 계속됩니다.

같은 일을 하는 비동기 방식은 다음과 같습니다.

계약과 상호 작용

계약과의 상호 작용은 일반적으로 eth.contract () 함수와 같은 추상화 계층을 사용하여 수행됩니다.

이 추상화 계층은 javascript에서 호출 가능한 함수로 사용할 수있는 모든 계약 함수가있는

javascript 객체를 반환합니다.

계약에서 사용 가능한 기능을 설명하는 표준 방법은 ABI 정의입니다. 이 객체는 사용 가능한 각

계약 함수에 대한 호출 서명 및 반환 값을 설명하는 배열입니다.

이제 ABI에 명시된 모든 함수 호출이 계약 인스턴스에서 사용 가능하게됩니다. 다음 두 가지 방

법 중 하나로 계약 인스턴스의 메소드를 호출 할 수 있습니다.

120

sendTransaction을 사용하여 호출하면 함수 호출은 트랜잭션을 전송하여 실행됩니다. 이것은 전

송하기 위해 에테르를 소비 할 것이고 호출은 블록 체인에 영원히 기록 될 것입니다. 이런 식으

로 작성된 호출의 리턴 값은 stransaction의 해시입니다.

호출을 사용하여 호출하면 함수가 EVM에서 로컬로 실행되고 함수의 반환 값이 함수와 함께 반

환됩니다. 이러한 방식으로 이루어진 통화는 블록 체인에 기록되지 않으므로 계약의 내부 상태를

수정할 수 없습니다. 이 호출 방식은 상수 함수 호출 이라고 합니다. 이 방법으로 만들어진 전화

는 어떤 에테르도 들지 않습니다.

반환 값에만 관심이 있다면 call을 사용해야하고 계약 상태에 대한 부작용 만 신경 쓰면

sendTransaction을 사용해야합니다.

위의 예제에서 부작용이 없으므로 sendTransaction은 가스를 태우고 우주의 엔트로피를 증가시킵

니다.

계약 메타 데이터

이전 섹션에서는 블록 체인에 대한 계약을 작성하는 방법에 대해 설명했습니다. 이제 나머지 컴

파일러 출력, 계약 메타 데이터 또는 계약 정보를 다룰 것입니다.

계약을 맺지 않은 상태에서 계약을 작성하면 문서를 원하거나 소스 코드를 볼 수 있습니다. 계

약 작성자는 블록 체인에 등록하거나 EtherChain과 같은 타사 서비스를 통해 그러한 정보를 제공

할 것을 권장합니다. admin API는 등록하기로 선택한 계약에 대해 이 번들을 가져 오는 편리한 메

소드를 제공합니다.

이 작업을 수행하는 기본 메커니즘은 다음과 같습니다.

• 계약 정보는 공개적으로 액세스 할 수있는 URI로 식별 할 수있는 어딘가에 업로드됩니다

• 누구나 URI가 계약서 주소만을 알고 있는지 알 수 있습니다.

이러한 요구 사항은 2 단계 블록 체인 레지스트리를 사용하여 얻을 수 있습니다. 첫 번째 단계에

서는 계약 코드 (해시)를 HashReg라는 계약에 콘텐츠 해시로 등록합니다. 두 번째 단계는 URL을

UrlHintcontract에 콘텐츠 해시와 함께 등록합니다. 이 레지스트리 계약은 프론티어 릴리스의 일부

였으며 홈스테드로 이어졌습니다.

121

이 스키마를 사용하면 url을 조회하고 실제 계약 메타 데이터 정보 묶음을 가져 오는 계약의 주소

를 아는 것이 충분합니다.

따라서 양심적 인 계약 작성자 인 경우 다음 단계를 따르십시오.

1. 계약 자체를 블록 체인에 배포하십시오.

2. 계약 정보 json 파일을 가져옵니다.

3. 계약 정보 json 파일을 원하는 URL에 배포하십시오.

4. 코드 해시 등록 -> 콘텐츠 해시 -> URL

JS API는 도우미를 제공하여이 프로세스를 매우 쉽게 만듭니다. admin.register를 호출하여 계약에

서 정보를 추출하고, 주어진 파일에서 json 직렬화를 작성하고, 파일의 컨텐츠 해시를 계산하고,

최종적으로이 컨텐츠 해시를 계약의 코드 해시에 등록하십시오. 해당 파일을 임의의 URL에 배포

하면 admin.registerUrl을 사용하여 URL을 블록 체인의 콘텐츠 해시로 등록 할 수 있습니다. (고정

된 콘텐츠 주소 지정 모델이 문서 저장소로 사용되는 경우 url-hint는 더 이상 필요하지 않습니다.)

계약서 및 거래 테스트

종종 계약 및 트랜잭션을 테스트하고 디버깅하는 저수준 전략에 의존해야합니다. 이 절에서는 사

용할 수있는 디버그 도구 및 방법에 대해 소개합니다. 실제 결과없이 계약 및 거래를 테스트하려

면 개인 블록 체인에서 테스트하십시오. 이는 대체 네트워크 ID (고유 한 정수 선택) 및 / 또는 피

어 비활성화를 구성하여 수행 할 수 있습니다. 테스트를 위해서는 대체 데이터 디렉토리와 포트

를 사용하여 실제 실행중인 노드와 우연히 충돌하지 않도록하는 것이 좋습니다 (기본값을 사용한

다고 가정 할 경우). 프로빙 및 가장 높은 수준의 로깅 상세 표시 수준으로 VM 디버그 모드에서

122

geth 시작 권장 사항 :

트랜잭션을 제출하기 전에 개인 테스트 체인을 설정해야합니다. 테스트 네트워크를 참조하십시오.

트랜잭션을 생성 한 후에는 다음 행을 사용하여 트랜잭션을 강제로 처리 할 수 있습니다.

다음을 통해 보류중인 거래를 확인할 수 있습니다.

계약 생성 트랜잭션을 제출 한 경우 원하는 코드가 실제로 현재 블록 체인에 삽입되었는지 확인

할 수 있습니다.

123

1.7.3 계약 및 트랜잭션 액세스

RPC

이전 섹션에서는 계약서를 작성하고 배포하고 상호 작용하는 방법을 살펴 보았습니다. 이제는

Ethereum 네트워크 및 스마트 계약과의 의사 소통에 대해 자세히 알아보십시오.

Ethereum 노드는 RPC 인터페이스를 제공합니다. 이 인터페이스는 Ethereum 블록 체인에 대한

Ðapp의 액세스와 스마트 계약 코드 컴파일과 같이 노드가 제공하는 기능을 제공합니다. 직렬화

프로토콜로 JSON-RPC 2.0 스펙 (통지 또는 명명 된 매개 변수에 대한 지원이 없음)의 서브 세트

를 사용하며 HTTP 및 IPC (Linux / OSX의 유닉스 도메인 소켓 및 Windows의 명명 된 파이프)를

통해 사용할 수 있습니다.

세부 사항에 관심이 없지만 사용하기 쉬운 자바 스크립트 라이브러리를 찾고 있다면 다음 섹션

을 건너 뛰고 Web3 사용을 계속하십시오.

협약

RPC 인터페이스는 JSON-RPC 2.0 사양의 일부가 아닌 두 가지 규칙을 사용합니다.

• 숫자는 16 진수로 인코딩됩니다. 이 결정은 극단적으로 큰 숫자에 대한 작업에 대한 지원이

없거나 제한되어 있기 때문에 이루어졌습니다. 이러한 유형의 오류를 방지하기 위해 숫자는 16

진수로 인코딩되며 이러한 숫자를 구문 분석하고 적절하게 처리하는 것은 deverloper의 몫입니다.

예제는 wiki의 16 진수 인코딩 섹션을 참조하십시오.

• 기본 블록 번호. 여러 RPC 메소드가 블록 번호를 허용합니다. 어떤 경우에는 매우 편리하고

편리합니다. 이러한 경우 기본 블록 번호는 이러한 문자열 [ "가장 초기", "최신", "보류 중"] 중 하

나 일 수 있습니다. 기본 블록 매개 변수를 사용하는 RPC 메소드 목록은 wiki 페이지를 참조하십

시오.

계약 전개

우리는 RPC 인터페이스만을 사용하여 다음 계약을 전개하기위한 여러 단계를 수행 할 것입니다.

124

가장 먼저 할 일은 HTTP RPC 인터페이스가 활성화되어 있는지 확인하는 것입니다. 이것은 geth

가 시작시에 --rpc flag를 제공하고 eth-j 플래그가 제공됨을 의미합니다. 이 예제에서는 geth 노드

를 개인 개발 체인에 사용합니다. 이 방법을 사용하면 실제 네트워크에서 ether가 필요하지 않습

니다.

그러면 http : // localhost : 8545에서 HTTP RPC 인터페이스가 시작됩니다.

참고 : geth는 CORS를 지원합니다. 자세한 내용은 --rpccorsdomain flag를 참조하십시오.

curin을 사용하여 코인베이스 주소와 균형을 검색하여 인터페이스가 실행 중인지 확인할 수 있습

니다. 이 예제의 데이터는 로컬 노드에서 다를 수 있습니다. 이 명령을 사용하려면 요청 매개 변

수를 적절하게 바꿉니다.

우리는 숫자가 16 진수로 인코딩되었다고 말할 때를 기억합니까? 이 경우 잔액은 Wei에서 16 진

수 문자열로 반환됩니다. 우리가 Ether에서 균형을 숫자로 원한다면 geth 콘솔에서 web3을 사용

할 수 있습니다.

이제 민간 개발 체인에 에테르가 생겨서 계약을 전개 할 수 있습니다. 첫 번째 단계는 고형물 콤

팩트를 사용할 수 있는지 확인하는 것입니다. eth_getCompilers RPC 메소드를 사용하여 사용 가

능한 컴파일러를 검색 할 수 있습니다.

solidity 컴파일러가 사용 가능하다는 것을 알 수 있습니다. 사용할 수 없는 경우 다음 지침을 따

125

르십시오.

다음 단계는 Multiply7 계약을 EVM으로 보낼 수 있는 바이트 코드로 컴파일하는 것입니다.

이제 우리는 컴파일 된 코드를 가지고 얼마나 많은 가스를 배치해야 하는지 결정할 필요가 있습

니다. RPC 인터페이스에는 추정치를 제공하는 eth_estimateGas 메소드가 있습니다.

그리고 결국 계약을 전개합니다.

트랜잭션은 노드에 의해 승인되고 트랜잭션 해시가 리턴됩니다. 이 해시를 사용하여 트랜잭션을

추적 할 수 있습니다.

다음 단계는 계약서가 배치 된 주소를 결정하는 것입니다. 실행 된 각 트랜잭션은 영수증을 생성

합니다. 이 영수증에는 트랜잭션이 포함 된 블록과 EVM에서 사용 된 가스의 양과 같은 트랜잭션

에 대한 다양한 정보가 들어 있습니다. 트랜잭션이 장기 구매 계약을 작성할 경우 장기 구매 계

약 주소도 포함됩니다. eth_getTransactionReceipt RPC 메소드를 사용하여 영수증을 검색 할 수

있습니다.

우리의 계약은 0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d에 생성 된 것을 볼 수 있습니다.

영수증 대신에 눌 (null)이 있으면 트랜잭션이 아직 블록에 포함되지 않은 것입니다. 잠시 기다렸

다가 광부가 작동하는지 확인한 다음 다시 시도하십시오.

현명한 계약과 상호 작용

우리 계약이 전개되면 우리는 그 계약과 상호 작용할 수 있습니다. 앞에서 설명한 것처럼 트랜잭

션을 보내거나 호출을 사용하는 두 가지 방법이 있습니다. 이 예제에서 우리는 트랜잭션을 계약

의 곱하기 메소드에 보냅니다.

eth_sendTransaction에 대한 문서를 보면 몇 가지 인수를 제공해야 함을 알 수 있습니다. 이 경우

에는 from, to 및 data 인수를 지정해야합니다. From은 우리 계정의 공개 주소이며 계약 주소입니

다. 데이터 인수는 조금 더 어렵습니다. 여기에는 어떤 메소드가 호출되어야 하는지를 정의하는

126

페이로드와 어떤 인수가 포함되어 있습니다. ABI가 시작되었습니다. ABI는 EVM의 데이터를 정의

하고 인코딩하는 방법을 정의합니다. 여기 ABI에 관한 모든 세부 사항을 읽을 수 있습니다.

페이로드의 바이트는 함수 선택기이며 어떤 메소드가 호출되는지 정의합니다. 이것은 Keccak 해

시에서 함수 이름과 인수 유형에 대한 첫 번째 4 바이트를 가져 와서 16 진수로 인코딩함으로써

수행됩니다. 곱하기 기능은 uint256의 별칭 인 uint를 허용합니다. 이것은 우리에게 다음을 남긴다.

자세한 내용은 이 페이지를 참조하십시오.

다음 단계는 인수를 인코딩하는 것입니다. 우리는 하나의 uint256만을 가지며, 값 6을 공급한다고

가정합니다. ABI는 uint256 유형을 인코딩하는 방법을 지정하는 섹션을 가지고 있습니다.

int <M> : enc (X)는 big-endian의 2의 보완 인코딩으로 X의 음수는 0xff로, 양수 X의 경우 0 바이트

로 채워져 길이가 32 바이트.

이 코드는 0000000000000000000000000000000000000000000000000000000000000006입니다.

함수 선택기와 인코딩 된 인수를 결합하면 데이터는

0xc6888fa10000000000000000000000000000000000000000000000000000000000000006이됩니다.

이것을 해 봅시다. :

우리는 트랜잭션을 보냈으므로 반환 된 트랜잭션 해시를 가져 왔습니다. 영수증을 검색하면 새로

운 것을 볼 수 있습니다.

127

영수증에는 로그가 들어 있습니다. 이 로그는 트랜잭션 실행시 EVM에서 생성되어 영수증에 포함

되었습니다. multipy 함수를 살펴보면 Print 이벤트가 입력 시간으로 발생했음을 알 수 있습니다.

Print 이벤트에 대한 인수가 uint256 이었기 때문에 우리는 ABI 규칙에 따라이를 디코딩 할 수 있

습니다. 데이터와 별도로 항목을 사용하여 로그를 만든 이벤트를 결정할 수 있습니다.

Solidity 튜토리얼에서 이벤트, 주제 및 색인 생성에 대해 자세히 읽을 수 있습니다.

이것은 가장 일반적인 작업 중 일부에 대한 간략한 소개였습니다. RPC 위키 페이지의

availableRPC 메소드에 대해서는 전체를 참조하십시오.

Web3.js

이전 예제에서 보았 듯이 JSON-RPC 인터페이스를 사용하면 상당히 지루하고 오류가 발생하기

쉽습니다. 특히 ABI를 처리해야하는 경우 특히 그렇습니다. Web3.js는 Ethereum RPC 인터페이스

상단에서 작동하는 자바 스크립트 라이브러리입니다. 그 목표는보다 사용자 친화적 인 인터페이

스를 제공하고 오류 가능성을 줄이는 것입니다.

web3을 사용하여 Multiply7 계약을 전개하면 다음과 같습니다.

배포 된 계약을 로드하고 트랜잭션을 보냅니다.

128

프린트 이벤트가 로그를 만들 때 호출되는 콜백을 등록합니다.

자세한 내용은 b3. . wiki페이지를 참조하십시오.

콘솔

geth 콘솔은 자바 스크립트 런타임과 함께 명령 행 인터페이스를 제공합니다. 로컬 또는 원격

geth 또는 eth 노드에 연결할 수 있습니다. 사용자가 사용할 수있는 web3.js 라이브러리를로드합

니다. 이를 통해 사용자는 web3.js를 사용하여 콘솔에서 스마트 계약을 배포하고 상호 작용할 수

있습니다. 사실 Web3.js 섹션의 예제는 콘솔에 복사 할 수 있습니다.

계약 및 거래 보기

Ethereum 블록 체인을 검사 할 수있는 온라인 블록 체인 탐색기가 몇 가지 있습니다.

목록보기 : 블록 체인 탐색기.

호스팅 된 블록 체인 탐색기

• EtherChain

• EtherCamp

• EtherScan (및 Testnet 용)

기타 리소스

• EtherNodes - 노드의 지리적 분포와 클라이언트 별 분할

• EtherListen - 실시간 Ethereum 트랜잭션 시각화 및 청취자

1.7.4 믹스

IDE Mix는 계약자와 계약서 (백엔드와 프론트 엔드 계약 모두)를 만들고, 디버그하고, 배포하는

개발자를 돕기위한 것입니다.

경고 - Mix on OSX에 대한 부팅시 충돌 문제에 대한 수많은 보고서가 있습니다. 문제는

129

Heisenbug로 우리가 한 두 달 동안 쫓고 있습니다. 지금 당장 가장 좋은 방법은 Debug 설정을

사용하는 것 입니다 :

경고 - Remix라는 Mix 대체품이 개발 중이므로 Mix에 문제가있는 경우 Remix가 더 성숙해질 때

까지 대안을 찾는 것이 좋습니다.

다음으로 구성되는 새 프로젝트를 만듭니다.

• 계약

• html 파일

• 자바 스크립트 파일

• 스타일 파일

• 이미지 파일

프로젝트 편집기

프로젝트를 사용하여 dapp의 생성 및 테스트를 관리 할 수 있습니다. 이 프로젝트에는 디버깅 및

테스트를위한 시나리오 (블록 체인 상호 작용)와 관련된 데이터는 물론 백엔드 및 프론트 엔드와

관련된 데이터가 포함됩니다. 관련 파일이 생성되어 프로젝트 디렉토리에 자동으로 저장됩니다.

새 프로젝트 만들기

dapp의 개발은 새로운 프로젝트를 만드는 것으로 시작됩니다. "편집"메뉴에서 새 프로젝트를 만듭

니다. 프로젝트 이름을 입력하십시오. 예를 들어, "등급"을 선택하고 프로젝트 파일의 경로를 선택

하십시오.

백엔드 계약 파일 편집

기본적으로 새 프로젝트에는 Solinity 언어를 사용하는 블록 체인에서 백엔드 개발을위한 계약 "계

약"과 프론트 엔드에 대한 "index.html"이 포함되어 있습니다. 참조를 위해 Solidity 자습서를 확인

하십시오.

빈 기본 계약 '계약'을 수정하십시오.

130

견고성 프로그래밍 언어를 시작하는 데 도움이되는 Solidity 자습서를 확인하십시오.

변경 사항을 저장하세요.

프론트 엔드 HTML 파일 편집하기 기본 index.html 파일을 선택하고 다음 코드를 입력하십시오.

그런 다음 많은 계약 파일 뿐만 아니라 많은 HTML, JavaScript, CSS 파일을 추가 할 수 있습니다.

시나리오 편집기

시나리오를 사용하여 계약을 테스트하고 디버그 할 수 있습니다.

시나리오는 효과적으로 PoW없이 블록을 채울 수있는 로컬 블록 체인입니다. 그렇지 않으면 테스

트가 매우 느립니다.

131

시나리오는 일련의 트랜잭션으로 구성됩니다. 일반적으로 시나리오는 dapp의 계약 작성 시나리오

부터 시작합니다. 또한 dapp을 테스트하고 디버그하기 위해 추가 트랜잭션을 추가 할 수 있습니

다. 시나리오를 수정할 수 있습니다. 즉, 트랜잭션을 제거 할 수 있습니다. 시나리오가 효과를 발

휘하려면 재구성해야합니다. JS API를 통한 로컬 JS 호출을 사용하여 추가 테스트를 수행 할 수

있습니다.

열려 있지 않은 경우 F7 키 또는 Windows> 오른쪽 표시 또는 기본 창의 오른쪽 위 모서리에있

는 디버그 단추를 눌러 시나리오 및 디버거 창에 액세스하십시오.

새 시나리오 만들기 및 설정

처음으로 Mix를 실행하면 빈 시나리오, 즉 트랜잭션이 포함되지 않은 시나리오가 생성됩니다.

"MyAccount"라는 계정을 추가하고 초기 잔액을 1 ether로 설정하십시오. 확인을 클릭하십시오. 시

나리오 이름을 "Deploy"로 변경하십시오.

계정의 초기 에테르 잔량 수정

사실, 우리는 많은 테스트를 원합니다. Genesis 블록 매개 변수를 편집하고 초기 계정 잔액을

1000 ether로 설정하십시오. 변경 사항이 적용되도록 시나리오를 다시 작성하십시오.

시나리오 재구축

트랜잭션이 수정되거나 계정이 추가 될 때마다 변경 사항을 적용하기 위해 시나리오를 재구성해

야합니다. 시나리오가 재구성 된 경우 웹 프론트 엔드 (로컬 저장소)를 재설정해야 할 수도 있습

니다 (믹스가 자동으로 수행되지는 않음).

트랜잭션 생성

Bob에게 보내진 에테르를 얻자. 에테르 균형이없는 "Bob"이라는 다른 계정을 만듭니다. 시나리오

창에서 새 트랜잭션을 만듭니다. "Add Tx ..."를 클릭하고 300 ether를 Bob에게 보냅니다. 블록을 추

가하십시오.

시나리오 변경 및 재사용

새 시나리오를 만들거나 처음에 복제 한 여러 트랜잭션이있는 시나리오에서 시작하십시오.

시나리오 이름 바꾸기

제거 될 트랜잭션을 지정하여 시나리오 수정

132

시나리오 재구성

전화 표시

계약 호출은 함수 호출입니다. 계약 통화로 상태를 변경할 수 없으므로 이것은 트랜잭션이 아닙

니다. 계약 통화는 블록 체인의 일부가 아니지만 실용적이고 ux 설계상의 이유로 거래와 동일한

기능 수준에서 통화를 표시하는 것이 편리합니다. JS 아이콘은 트랜잭션이 아니라 호출임을 경고

합니다. 전화를 표시하거나 숨기려면 시나리오 -> 전화 표시 메뉴를 클릭하십시오.

상태 뷰어

이 패널은 시나리오보기에서 블록 체인 패널 아래에 있습니다. 블록 체인이 실행 되면 이 패널

에 블록 체인의 상태가 표시됩니다.

국가 별로는 모든 계좌의 잔액 (계약 및 정상 계좌 포함) 및 저장 (모든 배치 된 계약의 글로벌

변수)을 의미합니다. 이 패널의 내용은 정적이 아니며 블록 체인 패널에서 선택한 트랜잭션에 따

라 다릅니다. 여기에 표시된 상태는 선택한 트랜잭션이 실행 된 상태입니다.

133

이 경우, 2 개의 계약이 전개되고, 선택된 트랜잭션 (testCtr의 전개)이 마지막 것입니다. 상태 뷰

는 TestCtr과 BasicContract의 저장 공간을 보여줍니다.

트랜잭션 탐색기

트랜잭션 창 사용

거래 창을 사용하면 다음을 포함하여 거래 영수증을 탐색 할 수 있습니다.

• 입력 매개 변수

• 매개 변수 반환

• 이벤트 로그

트랜잭션 탐색기를 표시하려면 각 트랜잭션의 오른쪽에 있는 아래 삼각형 아이콘을 클릭하면 트

랜잭션 세부 정보가 확장됩니다.

그런 다음이 트랜잭션의 내용을 클립 보드에 복사하거나, 현재 트랜잭션 편집 (블록 체인을 재실

행해야 함) 또는 트랜잭션을 디버그 할 수 있습니다.

자바 스크립트 콘솔

Mix는 다음 객체를 전역 윈도우 컨텍스트에 노출합니다.

134

web3 - Ethereum JavaScript API

계약 : 계약 오브젝트의 모음. 키는 계약 이름을 나타냅니다. 값은 다음 속성을 포함하는 개체입

니다.

• contract : 계약 객체 인스턴스 (web3.eth.contract와 같이 생성됨)

• 주소 : 마지막 배포 된 상태의 계약 주소 (아래 참조)

• 인터페이스 : 계약 ABI

자세한 내용은 JavaScript API 참조를 확인하십시오.

JS 콘솔을 사용하여 트랜잭션 및 로컬 호출 추가

계약의 이름이 "set"이라는 함수와 함께 "Sample"인 경우 다음과 같이 작성하여 "set"을 호출하는

트랜잭션을 만들 수 있습니다.

전화를 할 수 있으면 다음과 같이 작성합니다.

web3 객체의 모든 속성과 함수를 사용할 수도 있습니다.

https://github.com/ethereum/wiki/wiki/JavaScript-API

트랜잭션 디버거

Mix는 Solidity 및 어셈블리 수준 계약 코드 디버깅을 모두 지원합니다. 두 가지 모드 사이를 전환

하여 필요한 관련 정보를 검색 할 수 있습니다.

모든 실행 지점에서 다음 정보를 사용할 수 있습니다.

VM 스택 - VM 명령어 설명은 Yellow Paper를 참조하십시오.

통화 스택 - 계약서가 다른 계약서를 호출 할 때 증가합니다. 스택 프레임을 두 번 클릭하여 해당

프레임의 시스템 상태를 봅니다.

저장소 - 계약과 관련된 저장소 데이터

메모리 -이 실행 지점까지 할당 된 시스템 메모리

통화 데이터 - 거래 또는 통화 매개 변수

135

디버그 모드 액세스

트랜잭션 세부 사항이 확장되면 "디버그 트랜잭션"버튼을 클릭하여 디버거보기로 전환 할 수 있

습니다

디버그 모드 간 전환 및 트랜잭션을 통한 스테핑

Solidity 디버깅 모드가 열립니다. 메뉴 버튼을 사용하여 Solidity 및 EVM 디버깅 모드 간을 전환

합니다 (Debug -> Show VM code)

• 견고한 디버깅 모드에서 트랜잭션을 수행합니다.

• EVM 디버깅 모드에서 트랜잭션을 단계별 실행

Dapps 배치

이 기능을 통해 사용자는 현재 프로젝트를 메인 블록 체인에 Dapp로 배포 할 수 있습니다.

이것은 계약을 전개하고 프론트 엔드 자원을 등록합니다.

배포 프로세스에는 다음 세 단계가 포함됩니다.

• 배포 계약 :

이 단계는 메인 블록 체인에 계약을 전개합니다.

• 패키지 앱 :

이 단계는 프론트 엔드 자원을 패키지하고 업로드하는 데 사용됩니다.

• 등록 :

Dapp를 렌더링하려면 Ethereum 브라우저 (Mist 또는 AlethZero)가이 패키지에 액세스해야합니다.

이 단계는 리소스가 저장된 URL을 등록합니다.

Dapp를 배포하려면 다음 지시 사항을 따르십시오.

Deploy, Deploy to Network를 클릭하십시오.

이 모달 대화 상자는 세 부분을 표시합니다 (위 참조).

• 계약 전개

• 시나리오 선택

136

트랜잭션 디버거

Mix는 Solidity 및 어셈블리 수준의 계약 코드 디버깅을 지원합니다. 2 가지 모드를 전환하고 필요한 관련 정보를 얻을 수

있습니다.

어떤 실행 포인트에서 다음 정보를 사용할 수 있습니다.

VM 스택 - VM 명령에 대한 설명은 Yellow Paper를 참조하십시오.

콜 스택 - 계약이 다른 계약을 호출 할 때 증가합니다. 스택 프레임을 두 번 클릭하여 해당 프레임 시스템 상태를 표시합

니다.

스토리지 - 계약에 연결된 스토리지 데이터

메모리 -이 실행 포인트까지 할당 된 시스템 메모리

호출 데이터 - 트랜잭션 또는 호출 매개 변수

디버그 모드에 액세스

거래 내역이 전개되면 디버그 트랜잭션 버튼을 클릭하여 디버거 보기로 전환 할 수 있습니다.

디버그 모드 전환 및 트랜잭션 단계 실행

Solidity 디버깅 모드가 열립니다. 메뉴 버튼을 사용하여 Solidity 및 EVM 디버깅 모드 간을 전환합니다. (Debug -> Show

VM code)

• 견고한 디버깅 모드에서 트랜잭션을 수행합니다.

• EVM 디버깅 모드에서 트랜잭션을 단계별 실행합니다.

Dapps 배치

이 기능을 통해 사용자는 현재 프로젝트를 메인 블록 체인에 Dapp로 배포 할 수 있습니다. 이것은 계약을 전개하고 프론

트 엔드 자원을 등록합니다.

배포 프로세스에는 다음 세 단계가 포함됩니다.

• 배포 :

이 단계에서는 주 블록 체인에 계약을 배포합니다.

• Packagedapp :

이 단계는 프론트 엔드 리소스를 패키지하고 업로드하는 데 사용됩니다.

• 등록 :

Dapp를 렌더링하려면 Ethereum 브라우저 (Mist 또는 AlethZero)가이 패키지에 액세스해야합니다. 이 단계는 리소스가

저장된 URL을 등록합니다.

Dapp를 배포하려면 다음 단계를 따르십시오 :

Deploy, Deploy to Network를 클릭하십시오.

이 모달 대화 상자는 세 부분을 표시합니다 (위 참조).

• 계약 전개

• 시나리오 선택

"Ethereum 노드 URL"은 노드가 실행되는 위치이며 배포를 시작하려면 노드가 실행되어야합니다.

"배치 할 시나리오 선택"은 필수 단계입니다. Mix는 선택한 시나리오에있는 트랜잭션 (계약 생성 또는 계약 요청과 관련이

137

없는 트랜잭션을 제외한 모든 트랜잭션)을 실행합니다. Mix는 아래의 패널에있는 모든 트랜잭션을 관련된 모든 입력 매개

변수와 함께 표시합니다.

"가스 사용량": 선택한 시나리오에 따라 사용 된 총 가스량이 표시됩니다.

• 배포 시나리오

"배포 계정"을 사용하면 Mix가 트랜잭션을 실행하는 데 사용할 계정을 선택할 수 있습니다.

"가스 가격"은 네트워크의 기본 가스 가격을 보여줍니다. 다른 값을 지정할 수도 있습니다.

"배포 비용": 사용하려는 가스 가격의 값과 선택한 시나리오에 따라 다릅니다. 배포에 필요한 양을 표시합니다.

"DeployedContract": 배포 전부터 배포되지 않습니다. 이것은 배포 된 모든 계약 주소로 완성됩니다.

"확인". 이것은 검증의 수 (마지막으로 배치 된 트랜잭션을 포함하는 마지막 블록의 상단에 생성 된 블록의 수)를 보여줍

니다. 모든 거래를 계속 추적하십시오. 누락 된 경우 (유효성이 검증되지 않음)이 패널에 표시됩니다.

• 패키지 dapp

"패키지 생성"작업은 'www'라는 새 폴더를 만들고이 폴더에는 모든 리소스가 포함되며 스크립트는 현재 배포 된 계약에

매핑됩니다. dapp을 게시하려면 webserver에서 www 폴더를 호스트해야합니다 (곧 IPFS 및 SWARM으로 바뀜). 기본적

으로 web3.js 라이브러리는 포함되어 있지 않습니다. 표준 웹 브라우저에서 dapp을 사용하려면이 라이브러리를 포함해

야합니다.

코드 편집기

이 편집기는 코드 편집기의 기본 기능을 제공합니다.

• 고밀도 또는 JavaScript 모드에서 자동 완성 플러그인을 사용할 수 있습니다 (Ctrl + 스페이스 바).

• 글꼴 크기 확대 / 축소 (Ctrl +, Ctrl -)

• 축소 모드에서는 예상 결과를 표시하고 표시합니다 (도구 -> DisplayGasEstimation). 이것은 최소량의 가스가 필요한

모든 진술을 강조합니다. 필요한 가스가 중요 해지면 색상이 빨간색으로 변합니다. 또한 (각 기능에 대한) 트랜잭션의

최대 실행 비용을 표시합니다.

1.7.5 Dapps

덤프는 최종 사용자와 공급자 (예 : 일부 시장의 구매자와 판매자, 파일 저장 업체의 소유자와 저장 업체)를 직접 연결할

수있는 서비스입니다. Ethereum dapps는 일반적으로 Javascript API를 사용하여 HTML / Javascript 웹 응용 프로그램을 통

해 사용자에게 인터페이스하여 블록 체인과 통신합니다. Dapps는 일반적으로 비즈니스 로직을 인코딩하고 컨센서스가 중

요한 상태의 영구 저장을 허용하는 블록 체인에 관련된 일련의 계약을 보유합니다. Ethereum 네트워크에서 계산의 중복

성질 때문에, 실행의 가스 비용은 항상 개인 실행 오프 체인보다 높을 것임을 기억하십시오. 이는 덤프 개발자가 실행하

는 코드의 양과 블록 체인에 저장하는 데이터의 양을 제한하도록 유도합니다.

Dapp 디렉토리

Ethereum을 사용하는 Dapps는 다음 목록으로 컴파일됩니다. 그들은 개발의 여러 단계 (개념, 작동 프로토 타입, 라이브 /

배포)에 나열됩니다. dapp을 개발하는 경우 다음 목록에 항목을 추가하는 것이 좋습니다. • Ethercasts Ðapps의 상태

• Dappslist

• Dappcentral - 지침, 코드 유효성 검사 및 네트워크 통계가 포함 된 Dapp의 정렬 가능한 페이지입니다.

• Dapps 메일 링리스트 - Ethereum상의 개발자 용 메일 링리스트 (단종).

제공되는 중앙 집중식 서비스는 금융, 보험, 예측 마켓, 소셜 네트워크, 분산 된 컴퓨팅 및 저장, 도박, 시장, 인터넷 거래,

거버넌스, 협업, 개발 및 게임을 포함하는 영역을 포괄합니다.

• Whatappscan은 예기치 않게 기대합니까?

https://www.reddit.com/r/ethereum/comments/2mnl7f/the_top_10_ether_dapps_of_2015/cm63nsf

138

미래에 dapp는 dapp 브라우저에 통합 된 dappstore에 나열되고 배포 될 것입니다.

Dapp 브라우저

• Mist - 기초, 알파 단계에 의해 개발 된 Mist-offic GUI dapp 브라우저. Mapp as Wallet dapp가 베타 버전입니다.

• Syng - Jarrad Hope의 모바일 Ethereum 브라우저 (알파) - DEVgrants가 지원합니다.

• MetaMask - Aaron Kumavis Davis의 브라우저 내 GUI. Epicenter Bitcoin은 github에서 인터뷰 - DEVgrants에 의해 지

원됨

• AlethZero - C ++ 클라이언트 클라이언트 GUI, (중단됨).

• 초신성 - (단종).

1.7.6 개발자 도구

Dapp 개발을 위해서는 Web3 Javascript API, JSON RPC API 및 Solidity 프로그래밍 언어에 대한 지식이 필요합니다.

참고 : 아래에 나열된 리소스를 자동으로 사용하여 응용 프로그램을 개발, 테스트 및 배포 할 수있는 도구 모음이 있어

야합니다.

• Web3JavaScriptAPI- ThisisthemainJavaScriptSDK는 모든 노드와 상호 작용합니다.

• JSON RPC API - 노드와 인터페이스하기위한 저수준 JSON RPC 2.0 인터페이스입니다. 이 API는 Web3 JavaScript API

에서 사용됩니다.

• Solidity Docs - Solidity는 EVhere (Ethereum Virtual Machine) opcode로 컴파일되는 Smart Contract 언어를 개발했습니

다.

• 테스트 네트워크 - 테스트 네트워크는 개발자가 주요 네트워크에서 자신의 Ether을 소비하지 않고도 Ethereum 코드

및 네트워크 상호 작용을 개발하고 테스트하는 데 도움이됩니다. 테스트 네트워크 옵션은 다음과 같습니다.

• Dapp 개발 리소스. 이를 통해 Ethereum 응용 프로그램을 개발, 디버깅 및 배포 할 수 있습니다.

Dapp 개발 리소스

• 스마트 계약 ELI5

• https://blog.slock.it/a-primer-to-the-decentralized-autonomous-organization-dao-69fb125bd3cd

• 스마트 계약 프로그래밍에 대한 101 개의 놈 소개

• 표준화 된 계약 API 목록

예제들

• pricefeed 사용 예 - 모든 계정 잔액을 인쇄하는 web3 스크립트

• 예제 Ethereum 계약 https://dappsforbeginners.wordpress.com/tutorials/your-first-dapp/

https://github.com/ethereum/wiki/wiki/Dapp- 개발자 리소스

자습서

• ethereum.org의 Dapp 자습서

• 초보자 용 자습서 시리즈 용 Dapps

• Eris 'Solinity Tutorial 시리즈

• 고급 고강도에 대한 자습서

• http://ethereumj.io/blog/2015/09/09/friendly-ether-bot/

• https : //github.com/ConsenSys/ether-pudding

혼합 IDE

139

Mix는 개발자가 계약 및 분산 애플리케이션을 구축하고 Ethereum 블록 체인 위에 배치 할 수있게 해주는 완벽한

Ethereum IDE입니다. Solidity 소스 코드 디버거가 포함되어 있습니다. 혼합

IDE / 프레임 워크

아래는 개발자 프레임 워크와 IDE로 Ethereum 그림을 작성하는 데 사용됩니다.

• Truffl e - Truf Fl e는 Ethereum을위한 개발 환경, 테스팅 프레임 워크 및 자산 파이프 라인입니다. • Dapple-Dapple은

Solidity 개발자들이 Ethereum과 같은 블록 체인에서 복잡한 계약 시스템을 구축하고 관리하는 데 도움이되는 도구입니

다.

• Populus - Populus는 Python으로 작성된 스마트 계약 개발 프레임 워크입니다.

• Eris-PM-TheErisPackageManager를 사용하여 패키지 및 시스템을 테스트하고 테스트하십시오.

• Embark - Embark은 JavaScript로 작성된 Ðapp 개발 프레임 워크입니다.

• EtherScripter (구식, 단종)

• 탄력성 원시 트랜잭션 브로드 캐스터

이더리움 - 콘솔

Ethereum 노드를위한 명령 행 콘솔.

Ethconsole은 IPC를 통해 백그라운드에서 실행되는 Ethereum 노드 (eth 및 geth로 테스트 됨)에 연결하고 web3 오브젝트

를 포함하는 대화식 javascript 콘솔에 관리자 추가 기능을 제공합니다. 여기서 ethereum 노드 제어 명령을 사용할 수있는

명령 목록을 찾을 수 있습니다.

이 콘솔을 사용하려면 ipc 통신 소켓이 활성화 된 로컬 ethereum 노드를 시작해야합니다 (데이터 디렉토리의 파일 이름

은 geth.ipc 임). 기본적으로 ipc 소켓은 노드를 시작한 후에 .ethereum에있는 로컬 홈 디렉토리에 위치해야합니다. 특정

노드 테스트 명령을 사용하려면 --test 옵션을 설정할 수도 있습니다. 그러면 콘솔에 다음과 같이 입력 할 수 있습니다 : -

테스트 모드 노드 명령의 defenition :

노드 구성 파일에 대한 추가 정보.

기본 레이어 서비스

속삭임

• Whisper 란 무엇이며 What is it for stackexchange Q & A? Gavin Wood : Shh! Whisper - DEVCON-1 talk youtube

video

• 위스퍼 개요 및 꿈의 API 사용법

• ELI5

무리

전체 웹 사이트 스택의 대표적인 마스터 서비스 인 배포 플랫폼 및 컨텐츠 배포 서비스를 배포해야합니다. Swarm의 주요

목표는 특히 Ethereum의 공공 기록의 분산 된 중복 저장소를 제공하는 것입니다. 특히 덤프 코드와 데이터는 물론 블록

체인 데이터를 저장하고 배포하는 것이 좋습니다. 뷰의 관점에서 볼 때, 참가자는 모든 참가자에게 앞서 언급 한 서비스

를 제공하기 위해 저장소 및 대역폭 정보를 효과적으로 저장해야합니다. 최종 사용자의 관점에서, Swarm은 업로드가 특정

서버가 아닌 것을 제외하면 WWW와 다르지 않습니다.

피어 투 피어 (peer to peer) 계정을 사용하고 지불금을 지불 할 수있는 내장 된 인센티브 시스템으로 인해 DDOS에 저항

력이 있으며, 제로 다운 타임 (zero-downtime), 오류가 없으며 검열에 저항 할뿐만 아니라 자급 자족 할 수있는 객관적인

140

피어 투 피어 스토리지 및 서빙 솔루션입니다. 도메인 이름 결정, 서비스 지불 및 콘텐츠 가용성 보험을 위해 Ethereum

블록 체인과 함께 Ethereum의 다중 프로토콜 네트워크 계층과 통합 할 수 있습니다.

ÐΞVcontalksonswarm

• Viktor Trón, Daniel A. Nagy : 유령 - Ethereum уΞVcon-1 토크 youtube

• Daniel A. Nagy : 공공 기록을 안전하고 접근하기 쉬운 유지하기 - Ethereum ØVcon-0 talk on youtube

코드 및 상태

• [출처] (https://github.com/ethereum/go-ethereum/tree/swarm)

• [github 관련 문제] (https://github.com/ethereum/go-ethereum/labels/swarm)

• [개발 로드맵] ()

• 트위터에서 에테르 스퓌 어와

• 떼 짓기 방

• 웜 서브 레딧

스토리지 온 / 오프 체인

• https://www.reddit.com/r/ethereum/comments/3hkv2f/eli5_storage_in_the_ethereum_blockchain/

• https : //www.reddit .com / r / ethereum / comments / 3npsoz / ethereum_ipfs_and_ fi lecoin /

• 떼는 무엇이며 그 용도는 무엇입니까? - stackexchange Q & A

Ethereum 알람 시계

• 저자 : Piper Merriam

• 웹 사이트 : alarm_main_website.

• 설명서 : alarm_documentation.

트랜잭션이 나중에 발생하도록 스케줄링하는 것을 용이하게하는 시장. 유닉스에서는 crontab, 자바 스크립트에서는

setTimeout과 비슷한 역할을합니다.

• Ethereum 제안서의 분권화 된 cron 서비스 - Peter Szilagyi의

이더리움 계산 시장

• 저자 : Piper Merriam

• 웹 사이트 : comput_market_main_website.

• 문서 : computational_market_documentation.

계산에서 벗어난 실행을 검증 할 수있는 시장. 체인에서 실행하는 데 높은 가스 비용을 실제로 지불하지 않고도 EVM 내

에서 매우 실험적인 계산을 사용할 수 있습니다.

BTCRelay

BTCrelay

• 추가 정보 (비트 코인 코드를 수정하지 않고 ETH / BTC 2-way 페그에 관한 정보).

141

• BTCrelay 감사

RANDAO

임의 번호 * https : //www.reddit.com/r/ethereum/comments/49yld7/eli5_how_does_a_service_like_szabodice_grab_a/

EVM

Ethereum Virtual Machine (EVM)은 Ethereum의 현명한 계약을위한 런타임 환경입니다. 샌드 박스 일뿐만 아니라 실제로

완전히 격리되어 있기 때문에 EVM 내부에서 실행되는 코드는 네트워크, 파일 시스템 또는 기타 프로세스에 액세스 할 수

없습니다. 현명한 계약은 다른 현명한 계약에 대한 액세스를 제한합니다. 계약은 Ethereum-specific 이진 형식 (EVM 바이

트 코드)으로 블록 체인에 있습니다. 그러나 계약은 대개 EHL 컴파일러를 사용하여 컴파일되고 Effereum 클라이언트를 사

용하여 블록 체인에 업로드됩니다.

1.7.7 Ethereum 시험

테스트 할 모든 클라이언트에 대한 공통 테스트 git repo는 regulary를 새로운 테스트로 업데이트했습니다. 이 절에서는

cpp-client가 작성한 기본 테스트 개념과 템플리트에 대해 설명합니다.

Testeth 사용하기

ethereum cpp-client testeth 도구를 사용하여 ethereum 테스트를 작성하고 실행합니다.

테스트를 실행하려면 폴더를 열어야합니다 (설치 및 빌드 참조)

/build/libethereum/test

./testeth 명령을 실행하면 모든 테스트 케이스가 자동으로 실행됩니다. 특정 테스트 케이스를 실행하려면 명령 행 옵션에

서 -t 매개 변수를 사용할 수 있습니다.

./testeth -t <TEST_SUITE>/<TEST_CASE>

아니면 그냥 테스트 스위트 :

./testeth -t <TEST_SUITE>

--filltests 옵션을 사용하여 ../cpp-ethereum/test/<TEST_FILLER>.json에있는 .json 파일에서 테스트 생성을 다시 실행

할 수도 있습니다.

./testeth -t <TEST_SUITE>/<TEST_CASE> --filltests

기본적으로 --filltests 옵션을 사용하여 testeth를 ETHEREUM_TEST_PATH 폴더에 다시 작성합니다. 이 변수를 시스템에 전

역 적으로 설정할 수 있습니다.

nano /etc/environment ETHEREUM_TEST_PATH="/home/user/ethereum/tests"

필러 파일은 테스트 템플릿 Ethereum 테스트에서 정의 된 초기 매개 변수를 채운 다음 완전한 테스트 .json 파일을 만드

는 데 사용되는 테스트 템플릿입니다. 자신의 테스트를 만들 때 매우 유용한 파일을 찾을 수 있습니다.

--checkstate 옵션은 채워진 테스트의 게시 상태가 예상 된 섹션과 다른 경우 BOOST 오류를 추가합니다.

채우기 / 실행 프로 시저에 대한 TEST_CASE 파일의 구체적인 테스트를 지정하려면 --singletest 옵션을 사용하십시오.

./testeth -t <TEST_SUITE>/<TEST_CASE> --singletest <TEST_NAME>

결과 테스트 .json 파일 내에서 단일 테스트를 디버그하려면 (참고 : testeth은 VMTRACE = 1로 빌드해야 함) 다음 명령을

사용할 수 있습니다.

./testeth --log_level=test_suite --run_test=<TEST_SUITE>/<TEST_CASE>

142

--singletest <TEST_FILE>.json

<TEST_NAME> --vmtrace --verbosity 12

또는

./testeth -t <TEST_SUITE>/<TEST_CASE> --singletest <TEST_NAME> --vmtrace --verbosity 12

일부 테스트는 실행 중 과도한 리소스를 사용할 수 있으므로 기본적으로 비활성화됩니다. 그러한 시험은 특정 집단에 대

한 특정 집단을 수행하도록 요구한다. 비슷한 성능, - inputLimits, - memory, - quadratic. --all fl ag를 설정하여 모든 테스

트를 활성화 할 수도 있습니다. 조심해. 사용 가능한 메모리 테스트는 시스템에 4GB RAM 이상을 사용할 수 있습니다.

테스트 실행 용입니다. 명령 행 옵션에 대해 더 자세히 읽으려면 --help 옵션을 사용하여 testeth를 실행할 수 있습니다.

이제 사용 가능한 테스트 사례를 살펴 보겠습니다.

테스트 케이스

거의 모든 테스트 케이스는 / webthree-umbrella / libethereum / test에있는 파일을 가지고있다.

TEST_SUITE = BlockTests TEST_CASES = blValidBlockTest blInvalidTransactionRLP blTransactionTest blInvalidHeaderTest

userDefinedFile

TEST_SUITE = TransactionTests TEST_CASES = ttTransactionTest ttWrongRLPTransaction tt10mbDataField userDefinedFile

TEST_SUITE = StateTests TEST_CASES = stExample stSystemOperationsTest stPreCompiledContracts stLogTests

stRecursiveCreate stTransactionTest stInitCodeTest stSpecialTest stRefundTest stBlockHashTest stQuadraticComplexityTest

stSolidityTest stMemoryTest stCreateTest userDefinedFileState

TEST_SUITE = VMTests TEST_CASES = vm_tests vmArithmeticTest vmBitwiseLogicOperationTest vmSha3Test

vmEnvironmentalInfoTest vmBlockInfoTest vmIOandFlowOperationsTest vmPushDupSwapTest vmLogTest

vmSystemOperationsTest vmPerformanceTest vmInputLimitsTest1 vmInputLimitsTest2 vmRandom userDefinedFile

블록 체인 테스트

/ BlockTests에있는 블록 체인 테스트의 목표는 블록 체인의 기본 검증을 테스트하는 것입니다.

/ BlockTests - 일반적인 블록 체인 테스트. 모든 블록은 네트워크에 구축됩니다 : Frontier / BlockTests / Homestead - 농가

블록 체인 테스트. 모든 블록은 네트워크에 구축됩니다 : Homestead / BlockTests / TestNetwork - 전환 블록 체인 테스트.

5 일 이전의 모든 블록은 네트워크에 구축됩니다 : Frontier, 각 블록은 Homestead 규칙과 일치해야합니다.

가장 가까운 블록 부분에 의해 기술 된, 단일 블록의 실행을 계속한다. 첫 번째 블록은 테스트의 genesisBlockHeader 부

분에서 설명한대로 수정 된 생성 블록입니다. 기존 계정 집합이 사전 부분에서 상세화되고 창세기 블록의 세계 상태를 형

성합니다.

일반적으로 테스트 구현자가 genesisBlockHeader를 읽고 클라이언트에서 해당 블록 체인을 작성하고 빌드 할 것으로 예

상됩니다. 그런 다음 블록의 rlp 객체 (블록 헤더가 아닌 전체 블록의 RLP)에서 발견 된 RLP로 설명되는 새 블록을 읽습니

다. 클라이언트가 블록이 유효하다고 결론을 내면 블록을 실행하고 blockHeader (새 블록의 블록 헤더), 트랜잭션 (트랜잭

션 목록) 및 uncleHeaders (삼촌 헤더 목록)에 제공된 매개 변수를 확인해야합니다. 클라이언트가 블록이 유효하지 않다고

판단하면 blockHeader, transactions 또는 uncleHeaders 객체가 테스트에 존재하지 않는지 확인해야합니다. 클라이언트는

블록 목록을 반복하고 유효하지 않은 블록을 무시합니다.

기본 구조

143

101

섹션

• genesisBlockHeader 섹션

144

coinbase : COINBASE 명령에 의해 반환 된대로이 블록의 성공적인 광업에서 수집 된 모든 수수료가 이전 된 160 비트 주

소입니다.

난이도 :이 블록의 난이도에 해당하는 스칼라 값. 이는 DIFFICULTY 명령어에 의해 반환 된 이전 블록의 난이도와 타임 스

탬프에서 계산할 수 있습니다.

gasLimit : Ascalarvalue는 현재 GASLIMIT 명령에 의해 반환 된 현재 양의 값을 초과합니다.

타임 스탬프 (timestamp) : TIMESTAMP 명령에 의해 반환 된,이 블록의 초기에 유닉스의 타임 스탬프 (time)의 적당한 출

력과 같은 스칼라 값.

블룸 (Bloom) : 트랜잭션 목록의 각 트랜잭션 수신으로부터 각 로그 항목에 포함 된 색인 가능 정보 (loggeraddress 및

logtopics)에서 제외 된 블룸 필터.

extraData :이 블록과 관련된 데이터가 포함 된 임의의 바이트 배열입니다. 1024 바이트 이하 여야합니다.

gasUsed :이 블록의 트랜잭션에서 사용 된 총 가스와 동일한 스칼라 값입니다.

nonce :이 블록에서 충분한 양의 계산이 수행되었음을 증명하는 256 비트 해시.

receiptTrie : 블록의 트랜잭션 목록 부분에있는 각 트랜잭션의 확인으로 채워진 trie 구조의 루트 노드에 대한 Keccak 256

비트 해시입니다

stateRoot : 모든 트랜잭션이 실행되고 완료된 후 state trie의 루트 노드에 대한 Keccak 256 비트 해시입니다

.tansactionsTrie : 블록의 트랜잭션 목록 부분에있는 각 트랜잭션으로 채워진 트리 구조의 루트 노드에 대한 Keccak 256

비트 해시입니다.

uncleHash :이 블록의 삼촌 목록 부분의 Keccak 256 비트 해시

• 사전 섹션 : 상태 테스트에 설명 된대로.

• postState 섹션 : State Tests (섹션 - 게시물)에 설명되어 있습니다.

• blocks 섹션은 다음과 같은 형식의 블록 개체 목록입니다.

• rlp 섹션은 4.3.3 절의 노란색 용지에 설명 된대로 새 블록의 전체 rlp를 포함합니다.

• blockHeader 섹션은 genesisBlockHeader에서 설명한 것과 동일한 형식으로 새 블록의 블록 헤더를 설명합니다.

• transactions 섹션은 트랜잭션 테스트와 동일한 형식을 갖는 트랜잭션 목록입니다.

• uncleHeaders 섹션은 genesisBlockHeader에서 설명한 것과 같은 형식을 갖는 블록 헤더의 목록입니다.

선택적 BlockHeader 섹션 (정보 필드)

"blocknumber"= "int"는이 블록의 순서가 무엇인지 정의하는 섹션입니다. 이미 가져온 블록이 3 개일 때 상황을 정의하는

데 사용되지만 블록 2와 3의 새 버전이 나오므로 이전에 대신 블록 1 2 '3'을 사용하여 새로운 최상의 블록 체인을 만들

수 있습니다. blocknumber가 정의되지 않은 경우 블록을 한 번만 가져온 것으로 가정합니다. 검사를 실시 할 때이 정보는

정보 제공의 목적으로 만 사용되었습니다.

"chainname"= "string"이것은 동일한 테스트에서 포크를 정의하는 데 사용됩니다. 블록 "A"를 1, 2, 3으로 묶고 "B"를 1, 2,

3, 4 (체인 B는 기본이됩니다)로 채 웁니다. 그런 다음 다시 "A"를 연결합니다 : 4, 5, 6 (chainA는 primary가됩니다).

145

chainname은 삼촌 헤더 섹션에서도 정의 할 수 있습니다. 삼촌 머리글에 정의 된 경우 삼촌의 머리글이 채워지는 삼촌의

머리글을 알려줍니다. 테스트를 실행할 때,이 필드는 정보 목적으로 만 사용될 수 있습니다.

"chainnetwork"= "string"이 블록이 마이닝 된 네트워크 규칙을 정의합니다. (차이점

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.mediawiki 참조). 테스트를 실시 할 때이 필드는 정보 용으로 만

사용되었습니다.

상태 테스트

/ StateTest에서 발견 된 주 테스트 목적은 국가의 기본 작동을 독립적으로 테스트하는 것입니다.

이 테스트는 트랜잭션의 트랜잭션 부분에서 설명한 단일 트랜잭션 실행 개념을 기반으로합니다. 실행되는 전반적인 환경

은 테스트의 env 부분으로 설명되며 현재 및 이전 블록의 속성을 포함합니다. 기존 계정 집합은 사전 부분에서 상세화되

어 실행되기 전에 세계 상태를 형성합니다. 마찬가지로, 최종 계정 상태를 지정하기 위해 게시물 부분에 계정 집합이 자

세히 설명됩니다. 블록 체인의 데이터가 주어지지 않았기 때문에, opcode BLOCKHASH는 해당 블록의 해쉬를 반환 할 수

없었다. 따라서 블록 번호 n의 해시를 SHA256 ( "n")으로 정의합니다.

로그 항목 (로그)뿐만 아니라 코드 (출력)에서 리턴 된 출력도 자세히 설명됩니다.

일반적으로 구현 담당자가 트랜잭션 환경을 처리하고 로그, 아웃 및 포스트에 대한 결과를 미리 예상합니다.

기본 구조

섹션

• env 섹션 :

currentCoinbase

COINBASE 명령에 의해 반환 될 현재 블록의 코인베이스 주소입니다.

currentDifficulty

DIFFICULTY 명령에 의해 반환 될 현재 블록의 어려움.

146

currentGasLimit

현재 블록의 가스 한도.

currentNumber

현재 블록 번호. 또한 거래에 대한 네트워크 규칙을 나타냅니다. blocknumber = 1000000Homestead 규칙은 트랜잭션에

적용되므로 (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.mediawiki 참조)

currentTimestamp

현재 블록의 타임 스탬프.

previousHash

이전 블록의 해시입니다.

• 거래 섹션 :

데이터

CALLDATA ... 명령에 사용되는대로 입력 데이터가 실행으로 전달됩니다. 바이트 값의 배열로 주어집니다.

$ DATA_ARRAY를 참조하십시오.

gasLimit

GAS 명령에 의해 반환되는 것처럼 실행에 사용할 수있는 가스의 총량이 먼저 실행되었다.

가스 가격

GASPRICE 지침에서 사용되는 거래에 대한 가스 가격.

목하

보낸 사람이 보낸 트랜잭션 수와 동일한 스칼라 값입니다.

주소

ADDRESS 명령에 의해 반환 될 코드가 실행되는 계정의 주소입니다.

비밀 열쇠

비밀 키는 v, r, s 값에 의해 파생 될 수 있습니다.

TO

ORIGIN 명령에 의해 리턴 될 트랜잭션 수신인의 주소.

CALLVALUE '명령에 의해 반환되는 트랜잭션 (또는 생성 엔 다우먼트)의 값 (CALL 전에 먼저 실행 된 경우).

• 사전 및 사후 섹션에는 주소와 계정 간의 매핑 형식이 동일합니다. 각 계정의 형식은 다음과 같습니다.

밸런스

계정 잔액.

목하

계정의 넌센스.

암호

계정의 본문 코드이며, 바이트 값의 배열로 제공됩니다. $ DATA_ARRAY를 참조하십시오.

저장

키의 값에 대한 매핑으로 지정된 계정의 저장소입니다. 예 : "1200"또는 "0x04B0"값의 경우 $ DATA_ARRAY를 사용합

147

니다.

로그 섹션은 블룸과 해당 로그 항목 간의 매핑입니다.

각 logentry 형식은 다음과 같습니다.

address logentry의 주소.

data logentry의 데이터. topics logentry의 주제로서, 값의 배열로 제공됩니다.

마지막으로 간단한 키 출력이 하나 있습니다.

산출

바이트 배열로 주어지는 데이터는 실행에서 반환됩니다 (RETURN 명령어 사용). $ DATA_ARRAY를 참조하십시오. 큰 데이터

파일을 피하기 위해 한 가지 예외가 있습니다. 출력 데이터에 #가 미리 정의되어 있으면 다음 숫자는 출력의 크기를 나타

내며 출력은 직접 나타내지 않습니다.

$ DATA_ARRAY - 형식을 자동으로 지정하고 사용자의 편의를 위해 세 가지 유형의 숫자가 채워지므로 모든 것은 VM 실

행을 위해 바이트 배열로 변환되고 연결되어야 합니다.

유형은 다음과 같습니다.

1. number - (부호없는 64 비트)

2. "longnumber"- (긴 숫자)

3. "0xhex_num"- (16 진수 형식)

e.g: ‘‘‘‘[1, 2, 10000, "0xabc345dFF",

"199999999999999999999999999999999999999"]‘‘‘‘

RLP 테스트

.json 파일을 사용하는 RLP (https://github.com/ethereum/wiki/wiki/RLP) 인코딩에 대해 설명합니다. 클라이언트는 rlp 바이

트 스트림을 읽고 decode하고 내용이 json 표현과 일치하는지 확인해야합니다. 그런 다음 json rlp 표현을 rlp 바이트 스

트림으로 역 인코딩하고 주어진 rlp 바이트 스트림과 일치하는지 확인해야합니다.

테스트에서 유효하지 않은 RLP 바이트 스트림이면 'in'필드에 'INVALID'문자열이 포함됩니다. 일부 RLP 바이트 스트림은

퍼즈 테스트 스위트에서 생성 될 것으로 예상됩니다. 예를 들어 'in'필드의 경우 'VALID'문자열이 포함될 것입니다. 이는

rlp가 쉽게 해독되어야 함을 의미합니다.

RLP 테스트는 in / RLPTests에 있습니다

RLP 테스트는 단일 RLP 객체 인코딩을 테스트하고있다. 하나의 배열에있는 RLP 객체의 스트림이 아닙니다.

Basic structure

148

섹션

• rlp 바이트 스트림 (* 'VALID'및 'INVALID'값 제외)의 in-json 객체 (배열, int, 문자열) 표현

• out - rlp 바이트의 문자열 stream

차별성 테스트

/ Basic Tests /도 * .json 파일에서 찾을 수 있습니다. 이 테스트는 블록의 난 수식을 확인하기위한 것입니다.

(EIP2) (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.mediawiki) point4withhomestead가 변경되면

어려움 = DIFFICULTY (currentBlockNumber, currentTimestamp, parentTimestamp, parentDif 파일).

그래서 기본적으로이 .json 테스트는이 함수가 극값의 다른 함수 매개 변수 (parentDif fi culty, currentNumber)에서 어떻게

계산되는지 확인하는 것입니다.

몇 가지 테스트 파일이 있습니다 :

어려움 .json 수동으로 정의 된 정상적인 프론티어 / 홈스테드 체인 디피 케이션 테스트

difficultFrontier.json 위와 같지만 자동 생성 테스트

difficultMorden.json 테스트 네트워크의 어려움을 테스트합니다. (홈 스테이 전환 블록이 다릅니다)

difficultyOlimpic.json. 올림픽 네트워크(농가 없음)

difficultHomestead.json 농가의 어려움에 대한 테스트 (블록 번호와 관계 없음)

difficultCustomHomestead.json 농가의 어려움에 대한 테스트 (블록 번호와 관계 없음)

기본구조

149

섹션

• parentTimestamp - 이전 블록의 타임 스탬프를 나타냅니다.

• parentDifficulty - 이전 블록의 차이를 나타냅니다.

• currentTimestamp - 현재 블록의 타임 스탬프를 나타냅니다.

• currentBlockNumber - 현재 블록 번호를 나타냅니다 (이전 블록 번호 = currentBlockNumber - 1).

• currentDifficulty - 현재 블록의 어려움을 나타냅니다

트랜잭션 테스트

설명은 .json 파일을 사용하여 프레젠테이션을 작성하고 RL로 표현합니다. 클라이언트는 해당 트랜잭션이 유효한지 확인하

고 올바른 발신자를 가지며 트랜잭션 매개 변수에 해당하는지 확인해야합니다. 유효하지 않은 트랜잭션 인 경우 트랜잭션

과 보낸 사람 개체가 누락됩니다.

기본구조

150

섹션

• rlp -이 트랜잭션의 RLP 인코딩 된 데이터

• 트랜잭션 - 필드로 설명 된 트랜잭션

• nonce - 보낸 사람이 보낸 트랜잭션 수와 동일한 스칼라 값입니다.

• gasPrice - 가스 단위당 지불해야하는 Wei 수와 동일한 스칼라 값.

• gasLimit -이 트랜잭션을 실행하는 데 사용해야하는 최대 가스 양과 동일한 스칼라 값입니다.

• to - 메시지 호출 수신자의 160 비트 주소이거나 계약 생성 트랜잭션을 위해 비어 있습니다.

• 값 - 메시지 호출 수신자에게 전송되거나 계약 생성의 경우 새로 생성 된 계정에 대한 기부로 전송되는 웨이 수와 동일

한 스칼라 값입니다. • v, r, s - 거래에 대한 가치를 나타내는 값.

• sender - v, r, s 값에서 파생 된 보낸 사람의 주소입니다.

• blocknumber - 트랜잭션의 네트워크 규칙을 나타냅니다. 이후 blocknumber = 1000000 Homestead 규칙은 거래에 적용

됩니다. (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.mediawiki 참조)

VM 테스트

/ VMTest에있는 VM 테스트의 목표는 격리 된 VM의 기본 작동을 테스트하는 것입니다. 이것은 특히 트랜잭션, 생성 또는

호 처리 또는 주 트라이 관리를 다루는 것이 아닙니다. 사실 적어도 하나의 구현은 Trie 코드를 전혀 호출하지 않고 VM을

테스트합니다.

이 코드는 트랜잭션의 일부로 단일 코드를 실행하는 개념을 기반으로합니다. 실행 된 환경은 환경에 의해 기술되고 현재

블록과 이전 블록의 속성을 포함한다. 기존 계정 집합은 사전 부분에서 상세화되어 실행되기 전에 세계 상태를 형성합니

다. 마찬가지로, 최종 계정 상태를 지정하기 위해 게시물 부분에 계정 집합이 자세히 설명됩니다.

가스 잔량 (가스), 로그 항목 (로그) 및 코드 (출력)에서 반환 된 모든 출력도 자세히 표시됩니다

블록 체인의 데이터가 주어지지 않았기 때문에, opcode BLOCKHASH는 해당 블록의 해시를 반환 할 수 없었습니다. 따라

서 블록 번호 n의 해시를 SHA3-256 ( "n")으로 정의합니다.

이러한 테스트는 VM 조작의 기본 테스트로만 사용되므로 CALL 및 CREATE 명령어는 실제로 실행되지 않습니다. 실제로

테스트가 실행되도록 보장하기 위해 별도의 부분에서 각 CALL 또는 CREATE 조작을 실행 된 순서로 호출합니다. 또한, 필

요한 가스는 단순히 VM 실행의 가스입니다. 트랜잭션 처리를위한 가스 비용은 제외됩니다.

일반적으로 테스트 구현자가 env, exec 및 pre를 읽고 가스, 로그, 아웃, 포스트 및 callcreates에 대한 결과를 확인합니다.

예외가 예상되면 후자의 섹션은 테스트에 없습니다. 상태의 되 돌리는 것이 VM 테스트의 일부가 아니기 때문에

Basic structure

151

섹션

env 섹션 :

• currentCoinbase : 현재 블록의 coinbaseaddress는 COINBASE 명령에 의해 반환됩니다.

• currentDifficulty : DIFFICULTY 명령어에 의해 반환 될 현재 블록의 어려움.

• currentGasLimit : 현재 블록의 가스 한도.

• currentNumber : 현재 블록의 번호입니다.

• currentTimestamp : 현재 블록의 타임 스탬프.

• previousHash : 이전 블록의 해시.

임원 섹션:

• address : ADDRESS 명령어가 반환 할 코드가 실행되는 계정의 주소입니다.

• origin : ORIGIN 명령에 의해 반환 될 실행 원점의 주소입니다.

• caller : CALLER 명령어가 반환 할 실행 호출자의 주소입니다.

• value : CALLVALUE 명령에 의해 반환 될 호출 (또는 생성 엔 다우먼트)의 값.

• data : CALLDATA ... 명령에서 사용하는 실행에 전달 된 입력 데이터입니다. 바이트 값의 배열로 주어집니다.

$ DATA_ARRAY를 참조하십시오. • 코드 : VM에서 실행해야하는 실제 코드 (상태 (주소)에 저장된 코드가 아님).

$ DATA_ARRAY를 참조하십시오. • gasPrice : GASPRICE 지침에서 사용되는 거래에 대한 가스 가격.

• 가스 : GAS 명령에 의해 반환 될 수 있는 실행 가능한 총 가스량은 먼저 실행해야 합니다

사전 및 게시 섹션에는 주소와 계정 간의 매핑 형식이 동일합니다. 각 계정의 형식은 다음과 같습니다.

• balance : 계정의 잔액.

152

• nonce : 계정의 nonce.

• code : 바이트의 배열로 주어지는 계정의 본문 코드. $ DATA_ARRAY를 참조하십시오.

• 저장소 : 계정의 저장소로 키와 값의 매핑으로 제공됩니다. 예 : "1200"또는 "0x04B0"값의 경우 $ DATA_ARRAY를 사

용합니다.

call은 각 CALL 또는 CREATE 명령이 실행 된 섹션에 대한 세부 정보를 생성합니다. 다음은 키가있는 맵의 배열입니다.

• data : CALL 또는 CREATE 연산이 수행 된 데이터를 지정하는 바이트 배열. CREATE의 경우, 이것은 (초기화) 코드가됩니

다. $ DATA_ARRAY를 참조하십시오.

• 대상 : CALL이 수행 된 수신 주소 또는 해당 작업이 CREATE 인 경우 null 주소 ( "0000 ...").

• gasLimit : 조작 된 가스의 양.

• 값 : 조작 된 값 또는 엔 다우먼트.

로그 섹션은 블룸과 해당 로그 항목 간의 매핑입니다. 각 logentry 에는

체재:

• 주소 : logentry 의 주소.

• data : logentry 의 데이터.

• topics : 값의 배열로 주어지는 logentry 의 토픽.

마지막으로 가스와 출력의 두 가지 간단한 키가 있습니다.

• 가스 : 실행 후 남은 가스의 양.

• output : 바이트 배열로 지정된 데이터를 실행에서 반환합니다 (RETURN 명령어 사용).

$ DATA_ARRAY 를 참조하십시오.

$ DATA_ARRAY - 원시 바이트 데이터를 포함하고 사용자의 편의를 위해 작성된 유형입니다.

세 가지 유형의 숫자로 채워지며, 모두 변환되어 하나의 숫자로 연결되어야합니다.

VM 실행을위한 바이트 배열.

• 유형은 다음과 같습니다. 1. number - (부호없는 64 비트) 2. "longnumber"- (긴 숫자) 3. "0xhex_num"- (hex

형식 번호)

e.g: ‘‘‘‘[1, 2, 10000, "0xabc345dFF", "199999999999999999999999999999999999999"]‘‘‘‘

1.7.8 Web3 기본 계층 서비스

Ethereum 블록 체인 외에도 다른 중요한 요소를 분산시키는 더 많은 구성 요소가 개발되고 있습니다

웹 애플리케이션의 측면

153

군단 - 분산 된 데이터 저장 및 배포

스웜 (Swarm)은 P2P 데이터 공유 네트워크로, 파일 내용이 해시에 의해 처리됩니다. Bittorrent와 마찬가지로 한 번에 많은

노드에서 데이터를 가져올 수 있으며 단일 노드가 데이터를 호스트하는 한 어디서나 액세스 할 수 있습니다. 이러한 접근

방식을 통해 어떤 종류의 서버도 호스트하지 않고도 데이터를 배포 할 수 있습니다. 데이터 액세스 가능성은 위치 독립적

입니다.

네트워크의 다른 노드는 원래 노드가 네트워크에 연결되어 있지 않을 때 호스팅 서비스의 필요성을 없애고 데이터 자체

를 복제하고 저장하도록 유도 할 수 있습니다.

속삭임 - 분산 메시징

노드 간 개인, 보안 통신을위한 프로토콜.

또한 분산 응용 프로그램의 개발과 사용을보다 쉽게하기 위해 표준 계약이 만들어지고 있습니다.

이름 레지스트리

dapps는 Swarm 네트워크를 포함하여 어디에서나 저장할 수 있기 때문에 이름 레지스트리는 이름을

내용 또는 위치. 이것은 DNS (Domain Name System)에 대한 분산 된 대안입니다.

https://github.com/ethereum/EIPs/issues/26을 참조 하십시오.

계약 레지스트리

특정 계약서의 소스 코드를 게시하려면 주소를 해당 계약서에 매핑해야합니다. 계약 레지스트리 상점

이 매핑. 그런 다음 사용자는이 매핑을 검색하여 계약 바이트 코드를 확인할 수 있습니다.

* 글로벌 등록 기관 코드 * namereg API를 참조하십시오.

154

1.8 자주 묻는 질문

• 질문

- 에테 리엄이란 무엇입니까? - Ethereum에 대해 들어 봤지만, Geth, Mist, Ethminer, Mix는 무엇입니까?

- 큰 파일을 블록 체인에 저장하려면 어떻게해야합니까? - 에테 리움은 비트 코인을 기반으로?

- 에테 리엄의 미래가 뭐야? - 계좌와 "지갑 계약"의 차이점은 무엇입니까?

- 클라이언트를 다운로드 한 컴퓨터에서만 키 파일에 액세스 할 수 있습니까?

- 블록 체인을 다운로드하는 데 시간이 얼마나 걸리나요? - 주소로 / 밖으로 거래 목록을 어떻게 얻을 수 있습니까?

- 계약 집행 비용을 낼 수 있습니까? - 계약서에 다른 계약서를 부를 수 있습니까?

- 거래가 오프라인으로 서명 된 후 다른 온라인 장치에서 제출 될 수 있습니까?

- testnet Ether을 얻는 방법?

- 제 3자가 거래를 보낼 수 있습니까? 즉 트랜잭션 브로드 캐스팅이 아웃소싱 될 수 있는가?

- Ethereum은 제 3 자 API를 사용하여 데이터를 가져올 수 있습니까?

- Ethereum 네트워크를 통해 전송 된 데이터 및 계약의 내용이 암호화되어 있습니까?

- Ethereum 네트워크에 비밀 또는 암호를 저장할 수 있습니까?

- Ethereum은 어떻게 채광 웅덩이의 중앙 집중화와 싸울 것입니까?

- Ethereum은 블록 체인 크기가 어떻게 증가 할 것인가?

- Ethereum은 네트워크가 초당 10,000 개 이상의 트랜잭션을 처리 할 수있는 방법을 어떻게 보장합니까?

- 계약은 어디에 있습니까? - 귀하의 질문에 여전히 답변이 없습니까?

1.8.1 질문

Ethereum이란 무엇입니까?

Ethereum은 Ether이라는 cryptocurrency에 의해 구동되는 분산 된 스마트 계약 플랫폼입니다. 좋은

그것에 대해 더 자세히 배우기위한 출발점은 " Ethereum이란 무엇입니까? "페이지.

나는 Ethereum에 대해 들어 왔지만, Geth, Mist, Ethminer, Mix는 무엇인가?

• Geth : Ethereum 노드의 Go 구현이며,이 노드와의 상호 작용을위한 기초입니다.

에테 리움 블록 체인. 로컬에서 실행하면 Ethereum 블록 체인과 쉽게 상호 작용할 수 있습니다.

go-ethereum 설치 지침 읽기 .

• 안개 : 이것은 웹 브라우저와 동일하지만 Ethereum 플랫폼에 해당합니다. GUI를 표시하는 역할을합니다.

계정 및 계약서와 상호 작용할 수 있습니다. 또한 계약서를 작성하고 상호 작용할 수 있습니다.

명령 줄을 만지지 않고 그래픽 사용자 인터페이스를 제공합니다. 개발자가 아니며

Ether을 저장하고 Ethereum 계약과 상호 작용하면 Mist는 사용할 프로그램입니다. 다운로드를 찾을 수 있음

온 미스트 출시 페이지

• 에미 머 (Ethminer) : 독립 실행 형 광부. 이것은 채광 설정을 조사하거나 벤치마킹하는 데 사용할 수 있습니다.호환

가능합니다.

eth, geth, 및 pyethereum으로. 자세한 정보는 : ref : 마이닝 페이지를 확인하십시오.

• 혼합 : DApp 제작을위한 통합 개발 환경. 신속하게 프로토 타입 작성 및 디버그

Ethereum 플랫폼에서 tralised 응용 프로그램. 더 자세한 정보는 Mix GitHub 페이지 에서 찾을 수 있습니다.

블럭 체인에 큰 파일을 저장하려면 어떻게해야합니까?

155

일반적으로 높은 비용 때문에 Ethereum 블록 체인에 대용량 파일이나 데이터를 저장하고 싶지는 않습니다

저장 공간. Swarm 또는 IPFS 와 같은 타사 스토리지 솔루션을 사용해야합니다. 군중은 Ethereum-

분산 파일 저장을위한 특정 프로젝트 IPFS 는 Ethereum 과 긴밀한 관계가있는 비 Ethereum 프로젝트입니다. 그것은

독립적으로 사용되며 향후 Swarm 의 기본 계층으로 사용될 수 있습니다. 이 에리트레옹 보기

자세한 내용 은 항목에 대한 StackExchange 게시물 을 참조하십시오.

Ethereum은 Bitcoin을 기반으로합니까?

Bitcoin이 개척 한 블록 체인을 사용한다는 의미에서만 그렇습니다. Ethereum에는 별도의 블록 체인이 있습니다.

Bitcoin의 블록 체인과의 몇 가지 중요한 기술적 차이. 이 Ethereum StackExchange에 대한 답변 보기 자세한 설명.

Ethereum의 미래는 무엇입니까?

Ethereum 개발자는 Proof-of-Work 합의 모델에서 스테이크 증명 합의로 전환 할 계획입니다.

미래의 모델. 또한 확장 성 솔루션과 블록 체인에 비밀을 저장하는 방법을 조사하고 있습니다.

계정과 "지갑 계약"의 차이점은 무엇입니까?

계정은 공개 키 / 개인 키 쌍 파일로서 블록 체인에서 신원 정보를 제공합니다. 에있는 "계정"참조 용어집. "지갑 계약"은

귀하의 에테르와 신원을 다음과 같은 기능으로 보호하는 Ethereum 계약입니다. 다중 서명 서명 및 프로그램 된 입 / 출

금 한도. 지갑 계약은에서 쉽게 생성 할 수 있습니다. 안개 Ethereum Wallet GUI 클라이언트.

키 파일은 클라이언트를 다운로드 한 컴퓨터에서만 액세스 할 수 있습니까?

아니요, 키 파일을 내보내거나 이동하는 것은 환영하지만 항상 키 파일을 백업하고 알고 있어야합니다.

어떤 컴퓨터에 키 파일을 저장할 지 알려줍니다.

블럭 체인을 다운로드하는 데 시간이 얼마나 걸리나요?

Ethereum 블록 체인은 끊임없이 성장하고 있으며 2016 년 3 월 현재 10GB에 근접합니다.

다운로드가 가능한지 여부는 접속할 수있는 동료의 수, 인터넷 연결 속도, 및 기타 요인. 블럭 체인 동기화에 대한 팁은 :

ref : download-the-blockchain-faster 섹션을 참조하십시오. 빨리.

주소로 / 밖으로 거래 목록을 얻으려면 어떻게해야합니까?

이 작업을 수행하려면 블록 체인에서 트랜잭션을 수동으로 가져와야합니다. 또는, 당신은 Etherchain 과 같은 제 3 자 탐색

기 API . 그러나 계약 실행 트랜잭션의 경우 이를 달성하기위한 계약 로그.

계약 체결은 그 비용을 지불 할 수 있습니까?

이것은 불가능합니다. 집행을위한 가스는 집행을 제출 한 주소로 제공되어야한다. 의뢰.

계약서에서 다른 계약서를 호출 할 수 있습니까?

예, 가능합니다 . 계약 간의 상호 작용에 대해 읽어보십시오 .

트랜잭션을 오프라인으로 서명 한 후 다른 온라인 장치에서 제출할 수 있습니까?

예, Icebox 의 솔루션을 참조 할 수 있습니다.

testnet Ether 을 얻는 방법?

156

참조 : ref : test-networks.

제 3자가 거래를 보낼 수 있습니까? 즉 트랜잭션 브로드 캐스팅이 아웃소싱 될 수 있는가?

기술적으로 그렇습니다.하지만 비트 코인 서명 된 트랜잭션과는 달리 중요한 제한이 있습니다. ethereum에서 거래에는 넌

스 (nonce)가 있습니다 (정확하게 말하자면 각 계정은 얼마나 많은 거래가 총 송금되었는지. 계정에서 3 건의 거래가 발생

한 경우 해당 계정 nonce는 3 일 것입니다.

Ethereum은 써드 파티 API를 사용하여 데이터를 가져올 수 있습니까?

아니요, Ethereum 계약은 이러한 방식으로 외부 정보 소스에서 데이터를 가져올 수 없습니다. 그러나 거래를 통해

Ethereum 계약에 외부 사이트 (예 : 날씨 사이트, 주가)의 데이터를 푸시합니다. 그곳에 Ethereum 네트워크와 호환되는

Ethereum으로 데이터를 가져 오거나 푸시하는 "oracle"서비스입니다. 네트워크에 유료로 제공됩니다.

Ethereum 네트워크를 통해 전송 된 데이터 및 계약의 내용이 암호화되어 있습니까?

Ethereum 네트워크의 데이터 및 계약은 암호화되지만 암호화되지는 않습니다. 누구나의 행동을 감사 할 수 있습니다.

계약서 및 데이터를 보내주십시오. 그러나 방송 전에 항상 로컬에서 데이터를 암호화 할 수 있습니다. 그것은 네트워크에.

Ethereum 네트워크에 비밀 또는 암호를 저장할 수 있습니까?

Ethereum의 모든 데이터는 공개됩니다. Ethereum 계약에 비밀 또는 암호를 저장할 수 없습니다. 그것은 모두에게 보여지

고 있습니다. 코드 난독 화 및 기타를 통해이를 가능하게하는 작업이 있습니다. 기법. Vitalik Buterin 이 잘 읽었을 것입니

다. .

Ethereum은 어떻게 채광 웅덩이의 중앙 집중화와 싸울 것입니까?

Ethereum PoW 기반 합의 알고리즘이 광산 집중화를 퇴치하는 두 가지 기본 방법이 있습니다.( 출처 ).

• 첫 번째는 고아가 된 블록으로 인한 손실을 줄이는 것인데, 독립적 인 광부가 고아 블록을 실험 할 가능성이 더 높습니

다.

ence.

- Ethereum 마이닝 알고리즘의이 부분은 GHOST라고하는 기술로, 최근에 고아가 된 블록 중 블록 프로듀서와

(그렇지 않으면 고아가 된) 블록의 includer. 이들은 "조부모"또는 이전의 고아들을 포함했습니다. 성 중립 용어 "ommer"는

그렇지 않기 때문에 블록은 종종 "삼촌"블록이라고 불립니다. 널리 알려 지거나 이해된다.

• Ethereum PoW 합의 알고리즘이 광산 집중화를 막는 두 번째 방법은

ASIC 내성을 입증하는 작업 증명 기능

- 특별히 설계되고 생산 된 하드웨어에 의해 광산이 지배되지 못하게함으로써, 펜던트 광부는 경쟁 우위를 유지하거나 심

지어 이익과 / 또는 수준 측면에서 유리하다 (즉, 쉽게 사용할 수있는 상용 하드웨어를 사용할 수 있기 때문에) 소비자 그

래픽 카드).

Ethereum은 블록 체인지의 크기가 어떻게 증가 할 것인가?

블록 체인 확장성에 대한 논의가 많이 있습니다. 이 부분에 대한 답이 질문 이 Ethereum StackExchange 및 Vitalik Buterin

의이 블로그 게시물

thereum 은 네트워크가 초당 10,000 개 이상의 트랜잭션을 처리 할 수있는 방법을 어떻게 보장합니까?

에테 리엄 (Ethereum)은 Serenity 단계에서 합의 입증 프로토콜 변경을 구현할 계획이다. 그들의 개발 로드맵. 가능성이있

는 Ethereum PoS 후보자에 대한 더 많은 정보와 그것이 증가 할 수있는 방법 초당 거래 수 는 여기에서 확인할 수 있습

157

니다 . .

계약은 어디에 있습니까?

할 것

귀하의 질문에 여전히 답변이 없습니까?

Ethereum StackExchange 에 대한 커뮤니티에 물어보십시오. .

1.9 용어집

Ð Ð, , D 구어체 영어, 중세 영어, 아이슬란드 어 및 페로 어어로 사용됩니다. 대문자 "Eth". ÐEV 또는 Ðapp (분산 응용 프

로그램)과 같은 단어로 사용됩니다. 여기서 Ð는 노르웨이어 문자 "eth"입니다. 대문자 인 eth (Ð) cryptocurrency

Dogecoin.

분산 응용 프로그램 (= dapp ) 중앙의 신뢰할 수있는 당사자없이 운영되는 서비스. 낮잠- 최종 사용자 간의 직접적인 상호

작용 / 동의 / 의사 소통을 가능하게하는 약술 및 / 또는 중매인이없는 자원. Dapps를 참조하십시오 .

DAO 분산 형 자치 조직 DAO는 블록 체인 (또는 제품군

조직의 업무를 체계화, 시행 또는 자동화하기로되어있는 계약 기금 모금, 운영, 지출 및 확장을 포함하여

identity 모든 것이었던 속성을 가진 암호로 입증 가능한 상호 작용 집합 같은 사람이 만든

디지털 신원 동일한 공개 키로 서명 된 암호로 입증 가능한 트랜잭션 세트 디지털 신원의 행동을 정의하십시오. 많은 실

제 시나리오 (투표)에서 그것은 바람직합니다 디지털 신원은 실제 신원과 일치합니다. 이것을 폭력없이 보장하는 것은

미해결 문제.

고유 ID (unique identity) 그들이 증명할 수있는 속성을 가진 암호로 입증 가능한 상호 작용의 집합. 한 사람이 가질 수없

는 제약이 추가되어 같은 사람이 모두 만들었습니다. 여러 고유 ID.

평판 (identity) 다른 주체가 그 신원을 (1) 어떤 특정한 일에 정숙하거나,

(2) 다른 사람들을 배반 할 가능성이없는 어떤 맥락에서 믿을만한 사람 단기적으로 수익성이 있다고하더라도.

에스크로 두 개의 상호 신뢰할 수없는 단체가 상업에 종사하고 있다면, 그들은 자금을 상호 신뢰하는 제 3자를 통해 그

당사자에게 자금을 수취인에게만 보내도록 지시합니다. 제품 인도에 대한 증거가 제시되었을 때. 이렇게하면 지불 자나

수취인의 위험이 줄어 듭니다. 사기를 저지르고. 이 건설과 제 3자를 모두 에스크로라고합니다.

보증금 디지털 자산이 다른 당사자와 관련된 계약에 포함되는 경우 특정 조건 해당 부동산이 자동으로 몰수되어 거래 상

대방에게 조건에 대한 보험에 가입하거나, (= 불에 타게 = 동등하게 분배 된) 일부에 기부 된 자선 기금.

신뢰의 웹 높은 비율의 B와 B의 C의 비율이 높으면 A가 C를 신뢰할 것이라는 생각.

특정 개인의 신뢰성을 결정하기위한 복잡하고 강력한 메커니즘 특정 개념은 이론적으로이 원리에서 모을 수 있습니다

158

인센티브 호환성 프로토콜은 모든 사람이 더 나아진다면 인센티브와 호환됩니다. 적어도 많은 사람들이 속임수에

동의하지 않는 한, 속임수를 쓰려고하는 것보다 함께 (결탁) 함께.

담합 (Interusion) 인센티브가 부여 된 프로토콜 시나리오에서, 다수의 참가자가 함께 놀 때 (con- spire)를 사용하여

규칙을 자신의 이익에 맞게 게임하십시오.

토큰 시스템 거래 할 수있는 대체 가능한 가상 상품. 보다 공식적으로 토큰 시스템은 데이터베이스입니다.

허용 된 기본 작업이 전송 인 주소로 주소 매핑 A 에서 B 까지의 N 개의 토큰 중 N 이 음수가 아닌 조건으로, N 은

A 의 현재 잔액이며, 양도를 승인하는 문서는 A. Secondary "발행"및 "소비"운영이 존재할 수도 있고, 거래 수수료가

징수 될 수도 있으며, 많은 당사자와의 동시 다중 전송이 가능할 수 있습니다. 일반적인 사용 사례에는 다음이

포함됩니다. 통화, 네트워크 내부의 암호화 토큰, 회사 지분 및 디지털 기프트 카드.

블록 블록은 0 개 이상의 트랜잭션, 이전 블록의 해시 ( "상위") 및 선택적으로 다른 데이터를 포함하는 데이터

패키지입니다. 부모 블록을 포함하는 초기 "기원 블록"을 제외한 모든 블록의 전체 블록 집합이 블록 체인이라고

불리며 네트워크의 전체 트랜잭션 기록을 포함합니다. 블록 체인 기반 암호 화는 블록 체인 대신 "원장"을 사용하는데,

각 블록은 일반적으로 각 계정의 현재 상태 (예 : 통화 잔액, 부분적으로 완료된 계약서, 등록)의 전체 사본을

사용자에게 허용하는 "원장"이라는 용어를 사용하는 시스템이지만, 오래된 기록 데이터를 삭제합니다.

dapp Ðapp "분산 응용 프로그램"을 나타냅니다. 어떤 사람들은 대문자 eth 편지의 사용으로 인해 Ethapp라고 발음한다고

말한다.

주소 Ethereum 주소는 계정을 나타냅니다. EOA의 경우 주소는 계정을 제어하는 공개 키의 마지막 20 바이트로 파생됩니

다 (예 : cd2a3d9f938e13cd947ec05abc7fe734df8dd826). 이것은 16 진수 형식 (16 진법)으로 주소에 0x를 추가하여 명시

적으로 표시됩니다. Web3.js 및 콘솔 기능은이 프리픽스가 있거나없는 주소를 수락하지만 투명성을 위해 사용을 권장합

니다. 주소의 각 바이트는 16 진수 2 문자로 표시되기 때문에 미리 정의 된 주소는 42 자입니다. 몇몇 애플 리케이션과

API는 버전 0.5.0에서 Mist Ethereum 지갑에 도입 된 새로운 체크섬 사용 가능 주소 체계를 구현하기위한 용도로도 사

용됩니다.

16 진수 바이트 순서 지정에 대한 공통 표현 형식. 장점은 값이 바이트 당 2 자 ([0-9] [a-f] 자)를 사용하여 압축 된 형식

으로 표현된다는 것입니다.

ether Ether은 Ethereum에서 사용되는 통화의 이름입니다. EVM에서 계산 비용을 지불하는 데 사용됩니다. 애매하게도 에

테르는 시스템의 단위 이름이기도합니다.

EOA 외부 소유 계정. 개인 키로 제어되는 계정. EOA와 관련된 개인 키를 소유하고있는 경우, EOA에서 에테르와 메시지를

보낼 수 있습니다. 계약 계정에도 주소가 있습니다 (계정 참조). EOA 및 계약 계정은 Serenity에서 단일 계정 유형으로

결합 될 수 있습니다.

gas EVM에서 코드를 실행할 때 소비되는 암호문의 이름입니다. 가스는 Ethereum 블록 체인에서 이루어지는 모든 작업에

대해 실행 요금을 지불합니다.

가스 제한 가스 한도는 개별 거래 모두에 적용 할 수 있습니다. 거래 가스 한도 및 차단, 블록 가스 제한을 참조하십시오.

개별 거래의 경우, 가스 한도는 계약 실행 거래에 대해 지불 할 의사가있는 가스의 최대 금액을 나타냅니다. 버그가 있

거나 악의적 인 계약을 실행하려고 할 때 사용자의 에테르 고갈을 방지하기위한 것입니다. 블록 가스 한도는 블록의 모

든 거래에 사용 된 최대 누적 가스를 나타냅니다. Homestead의 출시로 블록 가스 한도는 3,141,592 가스에서 4,712,388

가스로 증가 할 것입니다 (~ 50 % 증가)

159

가스 가격 (Gasprice) 거래에 지정된 가스 한 단위의 가격입니다. Homestead의 출시로 기본 가스 가격은 50 shannon에서

20 shannon으로 감소합니다 (~ 60 % 감소).

메시지 데이터 전송 메커니즘은 다른 계약과 통신하는 데 사용하도록 계약합니다. 메시지 또한 직렬화되지 않고 오직

Ethereum 에서만 존재하는 가상 객체로 기술 될 수있다 실행 환경.

Web3 Web3 패러다임의 정확한 정의는 여전히 형태를 취하고 있지만 일반적으로 phe- 모든 종류의 장치 간의 연결성 증

가, 서비스의 분산화 응용 프로그램, 온라인 정보의 의미 론적 저장 및 인공 지능 응용 웹에.

DAO 분산 된 자치기구를 참조하십시오.

epoch Epoch는 PoW 알고리즘에 의해 시드로 사용 된 DAG의 각 재생 사이의 간격입니다. Etheth. 30000 블록으로 지정

된 에포크입니다.

타원 곡선 (cryptography) 타원 곡선 (alge-based algorithm)에 기반한 공개 키 암호화 (public-key cryptography)

유한 필드 위의 타원 곡선의 구조. 타원 곡선 암호화를 참조하십시오. .

지갑 가장 일반적인 의미에서 지갑은 에테르 또는 다른 암호를 저장할 수있는 모든 것을 말합니다 토큰. 일반적으로 암호

공간에서 지갑이라는 용어는 단일 pri-vate / public key 쌍 (단일 종이 지갑과 같은)을 다중으로 관리하는 응용 프로그램

열쇠 쌍, 안개 Ethereum 지갑.

계약 일련의 데이터를 포함하는 Ethereum 블록 체인상의 영구 코드 조각과 실행 가능 함수. 이 함수는 Ethereum 트랜잭

션이 만들어 질 때 실행됩니다. 특정 입력 매개 변수와 함께. 입력 매개 변수에 따라 함수가 실행되고 계약 내외부의 데

이터와 상호 작용합니다.

자살 스스로를 파괴하십시오. EIP 6에 따라 기존의 권고안을 대체 할 수있는자가 진단물 - SUICIDE OPCODE

selfdestruct Solinity 언어의 전역 변수로, "현재 계약을 파기하고 주어진 주소를 전달"할 수 있습니다. EIP 6 - SUICIDE

OPCODE로 이름 바꾸기에 따라 사용되지 않는 자살 용어를 사용하는자가 진단. 블록 체인의 공간을 확보하고 향후 계

약 실행을 방지합니다. 계약의 주소는 계속 유지 될 것이지만, 그 전에는 그럴 것입니다. 계약 작성자가 Solidity

selfdestruct 함수를 사용하여 구현 한 작업 흐름

거래 비용 가스 비용으로도 알려져 있는데, 이는 광부들이 거래 실행

채광 Ethereum 블록 체인에서 트랜잭션 및 계약 실행을 확인하는 프로세스 모든 블록 채굴과 함께 에테르에 대한 보상을

교환하십시오.

마이닝 풀 네트워크를 통해 처리 능력을 공유하는 광부가 자원을 모으는 것은, 블록을 해결하는 데 기여한 작업의 양에

따라 보상을 균등하게 분배하는 것입니다.

mining reward 광부에게 주어진 암호화 토큰 (이 경우 에테르)의 양 누가 새로운 블록을 채굴했는지.

상태 블록 체인에서 특정 시점의 모든 잔액 및 데이터의 스냅 샷을 말하며, 일반적으로 특정 블록의 조건을 나타냅니다.

160

블록 체인 (blockchain) 새로운 트랜잭션이 확인됨에 따라 커지는 데이터 블록의 연속적인 시리즈. 새로운 블록의 일부. 새

로운 블록은 각각 기존 블록 체인에 암호화 된 일의 증거.

peer 네트워크의 다른 컴퓨터들도 Ethereum 노드 (Geth)와 똑같은 복사본을 가지고 있습니다. 네가 가진 블록 체인.

signing 개인 키를 사용하여 서명 할 데이터에서 데이터를 생성합니다. 데이터는 귀하에게서 유래합니다.

discovery (peer) 네트워크의 다른 노드와 '험담 (gossiping)'하여 네트워크의 상태를 파악하는 프로세스입니다. 네트워크상

의 다른 노드

가스 가격 오라클 거래를 보낼 때 가격 결정권자에게 도움이 됩니다.

Lightclient Aclientprogramthatallowsusersinlow-capacityenvironmentstostillbeabletoexecute and check the execution of

transactions without needing to run a full Ethereum node (Geth).

에테르 기본 계정 역할을하는 노드의 기본 계정 이름입니다. 광업을하는 경우 광산 보상은이 계정에 적립됩니다.

Coinbase Coinbase는 etherbase와 유사하지만 모든 cryptocurrency 플랫폼에 대한보다 일반적인 용어입니다.

Balance 계정에 속한 암호 해독 (이 경우)의 양

Solidity(견고) Solidity는 JavaScript의 구문과 유사한 고급 언어이며 Ethereum 가상 컴퓨터 용으로 컴파일하도록 설계되었

습니다.

뱀 독사 (Serpent)는 파이썬과 유사한 문법을 사용하는 높은 수준의 언어이며 Ethereum 가상 머신을위한 코드로 컴파일되

도록 고안되었습니다.

EVM Ethereum Virtual Machine은 Ethereum 플랫폼의 핵심을 구성하는 분산 컴퓨팅 플랫폼입니다.

가상 기기 컴퓨팅에서 특정 컴퓨터 시스템의 에뮬레이션을 나타냅니다.

피어 투 피어 네트워크 일반적으로 중앙 집중식 서버 기반 서비스에서만 가능한 기능을 집합 적으로 수행 할 수있는 컴퓨

터 네트워크입니다.

분산 (decentralization) 계산 프로세스의 제어 및 실행을 중앙 개체에서 벗어나는 개념.

분산 해시 테이블 분산 형 해시 테이블 (DHT)은 해시 테이블과 유사한 조회 서비스를 제공하는 분산 형 분산 시스템 클

래스입니다. (키, 값) 쌍은 DHT에 저장되며 모든 참여 노드는 DHT와 관련된 값을 효율적으로 검색 할 수 있습니다. 주

어진 열쇠.

NAT 네트워크 주소 변환 (NAT)은 트래픽 라우팅 장치를 통해 전송되는 동안 인터넷 프로토콜 (IP) 데이터 그램 패킷 헤

더의 네트워크 주소 정보를 수정하여 하나의 IP 주소 공간을 다른 IP 주소 공간으로 다시 매핑하는 방법입니다.

목하 번호는 한 번 또는 한 번 사용됩니다. 정보 기술에서 nonce는 세션 인증과 같은 특정 용도로 생성 된 번호입니다.

161

일반적으로 매우 큰 난수가 사용 되기는하지만 일 정치는 시간에 따라 변하는 값입니다. 일반적인 사용법에서 nonce는

"즉각적인 경우"또는 "당분간은"을 의미합니다. Blockchain 작업 증명 시나리오의 경우 Miner가 찾은 해시 값은 네트워

크의 Dififty와 일치하여 Block Validity를 증명합니다. 잘.

일의 증거

"PoW"라는 약자로 볼 때 자원 및 시간 소모적 인 계산상의 문제를 푸는 증거가 될 수있는 수학적 가치를 지칭합니다.

스테이크 증거 광부에게 문제의 네트워크 통화의 일정 금액을 소유하고 있음을 입증해야하는 블록을 채굴하는 대체 방

법. 이것은 광부들이 지분을 가진 네트워크를 훼손하려고 시도 할 때 저축화할 것이라는 원칙에 따라 작동합니다. PoS

는 PoW보다 낭비가 적지 만 네트워크와 함께 보안을 강화하기 위해 종종 함께 사용됩니다

CASPER 캐스퍼는 보안 예금 기반의 경제적 합의 프로토콜입니다. 이것은 소위 "보세 검증 자"라고하는 노드가 블록을

생성하여 합의에 봉사하기 위해 보증금 (보세라고 부르는 동작)을 배치해야한다는 것을 의미합니다. 유효성 검사기가 캐

스퍼가 "무효"하다고 판단하는 것을 생산하는 경우, 보증금은 합의 과정에 참여하는 특권과 함께 몰수됩니다.

일치 Ethereum 네트워크의 상태에 대한 네트워크의 모든 노드 간의 합의.

주택 Homestead는 Ethereum 플랫폼의 두 번째 주요 버전 릴리스입니다. Homestead에는 몇 가지 프로토콜 변경과 추가

네트워크 업그레이드를 가능하게하는 네트워킹 변경이 포함됩니다. EIP-2 Mainstead hardfork changes; EIP-7 Hardfork

EVM 업데이트 (DELEGATECALL); EIP-8 devp2p와의 호환성. Homestead는 Mainnet에서 1,150,000 블록에 도달하면 실행

됩니다. Testnet에서 Homestead는 494,000 블록에서 시작합니다.

중심지 Ethereum의 출시 3 단계. 이것은 덤프 저장소를 포함하여 사용자 인터페이스가 표시되는 단계 (예 : 안개)이며 기

술적이지않은 사용자는이 시점에서 편안하게 참여해야합니다.

평온 Ethereum의 출시 4 단계. 네트워크가 광업 프로세스를 작업 증명에서 스테이크의 증거로 바꿀 것입니다.

국경 지방 Ethereum은 Frontier가 첫 번째 단계의 이름 인 네 가지 주요 단계로 출시 될 계획이었습니다. Frontier 릴리스

는 2015 년 7 월 30 일에 생방송되었습니다. 명령 줄 프론티어 단계는 주로 광산 작업을 블록 당 5 개의 에테르로 완

전히 보상하고 에테르 교환의 출현을 촉진하기위한 것입니다. Frontier는 초기의 겸손한 기대치를 뛰어 넘으며 생태계의

엄청난 성장을 도모했습니다.

올림피아 경기 2015 년 5 월 9 일에 출시 된 Frontier pre-release. 개발자가 Ethereum 블록 체인의 한계를 테스트하는

데 도움이되었습니다.

모르던Morden은 첫 번째 Ethereum 대체 testnet입니다. 프론티어 및 홈스테드 시대에 걸쳐 계속 될 것으로 예상됩니다.

시험 네트 테스트를위한 생산 용 Ethereum 네트워크의 미러 네트워크. Morden을 참조하십시오.

사설 사슬 완전히 사설 된 블록 체인은 하나의 조직에 쓰기 권한이 중앙 집중화 된 블록 체인입니다.

컨소시엄 체인 컨센서스 프로세스가 미리 선택된 노드 세트에 의해 제어되는 블록 체인.

마이크로 페이 먼 • 소액 지불은 매우 적은 액수의 돈 (보통 1 달러 미만)과 일반적으로 온라인으로 발생하는 재정적 인

거래입니다.

162

샤딩 가능한 계정의 공간을 분할하는 것 (계약도 계정 임) (예 : 숫자 주소의 첫 자릿수를 기준으로) 이를 통해 네트워크

실행 대신 계약 파견을 '파편'내에서 실행할 수 있으므로 더 빠른 트랜잭션과 확장 성을 실현할 수 있습니다.

해시 입력 (또는 '메시지')을 받아 해시 값 (때로는 메시지 다이제스트, 디지털 지문, 다이제스트 또는 체크섬)이라고하는

고정 크기의 영숫자 문자열을 반환하는 암호화 기능입니다. 해시 함수 (또는 해시 알고리즘)는 완전 무작위로 보이며 문

서에 대해 의미있는 데이터를 복구 할 수는 없지만 결과는 다음과 같은 중요한 특성을 갖는 대부분의 데이터 (일반적으

로 32 바이트)에 문서 (즉, 개별 데이터 또는 파일)를 처리하는 프로세스입니다. 하나의 특정 문서를 해시하는 것은 항

상 동일합니다. 또한 동일한 해시를 가진 두 개의 문서를 찾는 것이 계산 상으로 불가능하다는 것이 결정적으로 중요합

니다. 일반적으로 "토요일"의 SHHA3hash는 "토요일"의 SHHA3hash가

"bc1313c0eed56d5a0b448b02ec1d10dd18c1b3832068fbbdc65b98fa9b14b6dbf 인"토요일의 "토요일"의 SHA3hash는

c38bbc8e93c09f6ed3fe39b5135da91ad1a99d397ef16948606cdcbd14929f9d입니다. 해시는 일반적으로 위조 할 수없는

특정 문서에 대해 전 세계적으로 동의 한 식별자를 만드는 방법으로 사용됩니다.

암호문

'가스'와 유사하게 트랜잭션에 전원을 공급하는 데 필요한 암호 유출량을 나타냅니다.

암호 경제학 cryptocurrencies의 경제.

실험 계획안 컴퓨터 네트워크를 통해 데이터를 교환하는 방법을 정의하는 데 사용되는 표준

블록 검증 암호화 해시 트의 일관성 검사 초당 해시 계산의 수.

블록 타임 두 블록을 채굴하는 평균 시간 간격.

네트워크 해시 레이트 네트워크가 초당 만들 수있는 해시 계산 수입니다.

해시 레이트 초당 계산 된 해시 계산 수입니다.

직렬화

데이터 구조를 일련의 바이트로 변환하는 프로세스입니다. Ethereum은 내부적으로 wiki의 RLP 섹션에 설명 된 순환 길이

사전 인코딩 (RLP)이라는 인코딩 형식을 사용합니다.

double spend 대량의 채광력을 가진 사용자가 보내는 고의적 인 블록 체인 포크 일부 제품을 구매하는 거래는

제품을받은 후 다른 트랜스 - 동일한 동전을 자신에게 보내는 행동. 그런 다음 공격자는 동일한 수준의 블록을

만듭니다 원래 트랜잭션을 포함하지만 두 번째 트랜잭션을 포함하는 블록으로, 포크에서 채굴을 시작합니다. 공격자가

전체 광산 전력의 50 % 이상을 보유하고 있다면, 지출은 결국 어느 블록 깊이에서도 성공할 수 있습니다. 50 % 미만의

경우, 성공의 능력이지만, 일반적으로 약 2-5 정도의 깊이에서만 실질적입니다. 이 이유 때문에, 대부분의 암호 해독

교환, 도박 사이트 및 금융 서비스는 6 개의 블록이있을 때까지 대기합니다. 지불을 수락하기 전에 생산되었습니다 ( "6

가지 확인").

SPV 클라이언트 블록 체인의 작은 부분 만 다운로드하는 클라이언트로 저전력 사용자 또는 스마트 폰과 랩톱과 같은

저용량 하드웨어는 거의 동일한 보증을 유지합니다. 때로는 지출 할 필요없이 국가의 작은 부분을 선택적으로

다운로드하여 보안 전체 블록 체인 검증 및 유지 관리시 메가 바이트의 대역폭과 기가 바이트의 저장 공간을

제공합니다. 경량 클라이언트를 참조하십시오.

Uncle 삼촌은 광부가 발견 한 블록 체인 블록으로 다른 광부가 이미 해당 블록 체인의 해당 위치에 대해 다른 블록을

찾았습니다. 그것들은 "낡은 블록"이라고 불린다. 삽입 블록의 부족한 성격을 가진 부모의 부모. Bitcoin 네트워크와는

163

달리, Ethereum 은 네트워크 연결이 불량한 광부를 처벌하지 않기 위해 부실 블록을 보상합니다. Bitcoin 네트워크에서는

Block Time 이 Ethereum 네트워크보다 (~ 10 초) 훨씬 높기 때문에 (~ 15 초를 목표로 함) 덜 중요합니다.

유령

Greedy Heaviest-Observed Sub-Tree 는 부실 블록 (삼촌)을 장려하기 위해 설계된 대체 체인 선택 방법이므로 풀

마이닝에 대한 인센티브가 감소합니다. InGHOST, 이전에 확보 한 블록을 차단하는 이벤트 블록은 유효하지 않으며,

부실 블록의 광부에게는 광산 보상이 제공됩니다.

머크 패트리샤 트리 Merkle Patricia 트리는 모든 (키, 값) 바인딩을 저장하는 데 사용할 수있는 암호로 인증 된 데이터

구조를 제공합니다. 그것들은 완전히 결정 론적입니다. 즉, 동일한 (핵심, 가치) 바인딩을 가진 Patriciatree 가 마지막으로

완전히 똑같아지고, 카메라를 끄고, 검색하고, 삭제하고, 훨씬 쉽게 이해하고 레드 - 블랙 트리와 같은보다 복잡한 비교

기반 대안보다 코드를 더 많이 사용합니다.

가리비 DAG 는 Directed Acyclic Graph 의 약자입니다. 그래프, 노드 집합과 노드 사이의 링크로 매우 특별한 속성을

가지고 있습니다. Ethereum 은 POW (Ethereum Proof of Work) 알고리즘 인 Ethash 에서 DAG 를 사용합니다. Ethash

DAG 는 생성되기까지 오랜 시간이 걸리며, Miner 노드가 각 Epoch 에 대한 캐시 파일로 수행합니다. 그런 다음이

그래프의 값이 알고리즘에 필요할 때 파일 데이터가 사용됩니다.

껍질을 벗기다 블록 당 생산 된 삼촌의 수.

배급 새로운 블록을 발견 한 광부에게 새로운 암호 화를 부여하고 부여합니다.

선매 네트워크의 실제 출시 전에 cryptocurrency 판매.

정적 노드 Golang Ethereum 클라이언트 인 Geth 가 지원하는 기능으로, 특정 피어와 항상 연결할 수 있습니다. 정적

노드는 연결 해제시 다시 연결됩니다. 자세한 내용은 정적 노드 섹션을 참조하십시오.

부트 노드 노드를 실행할 때 검색 프로세스를 시작하는 데 사용할 수있는 노드입니다. 이 노드의 끝점은 Ethereum 소스

코드에 기록됩니다.

교환 (exchange) 시장 환율에 근거하여 통화 또는 암호화의 교환을 용이하게하는 온라인 마켓 플레이스.

컴파일러 고수준 언어로 작성된 코드를 저수준 실행 코드로 변환하는 프로그램.

원 블록 블록 체인의 첫 번째 블록.

Networked Ethereum 네트워크의 특정 버전을 식별하는 번호.

차단기 블록의 내용과 생성 된 환경에 고유 한 블록의 데이터. 이전 블록 헤더의 해시, 블록을 채굴하는 소프트웨어의 버

전, 타임 스탬프 및 블록 컨텐츠의 Merkle 루트 해시를 포함합니다.

계류중인 거래 Ethereum 네트워크에 의해 아직 확인되지 않은 트랜잭션.

블록 전파 확인 된 블록을 네트워크의 다른 모든 노드로 전송하는 프로세스입니다.

사이드 체인 메인 블록 체인에서 분기하여 메인 블록 체인과 주기적으로 체크인하는 블록 체인. 게다가 그것은 주 체인

과 독립적으로 실행되며, 사이드 체인의 보안 손상은 주 체인에 영향을 미치지 않습니다.

164

잠금 페깅 특정 방향으로 두 체인 (보통 주 체인과 측쇄)에있는 동전 / 토큰의 환율을 낮 춥니 다.

양방향 페깅 두 방향 (보통 주 체인과 측쇄)에서 동전 / 토큰의 환율을 잠급니다. .

남을 믿지 않는 다른 사람을 신뢰해야하는 관련 당사자없이 트랜잭션을 신뢰할 수있게 조정할 수있는 네트워크 기능을

나타냅니다.

수도꼭지 cryptocurrencies를 무료로 (일반적으로 testnet) 분배하는 웹 사이트.

체크섬 수신 측에서 전체 메시지가 전송되었는지 확인할 수 있도록 장치에 포함 된 전송의 비트 수입니다.

ICAP InterexchangeClientAddressProtocol은 고객 계좌로의 참조 및 거래를 간소화하여 교환 간소화 및 궁극적으로는 KYC

및 AML 관련 문제를 과거의 일로 만드는 것을 목표로합니다.

개인 키 개인 키는 소유자에게만 알려진 문자 문자열로, 텍스트 암호화 및 암호 해독 알고리즘을 설정하는 공개 키와 쌍

을 이룹니다.

공개 키는 대다수의 국가에서 사용할 수있는 개인 키에서 파생 된 문자입니다. 공개 키는 개인 키를 사용하여 생성 된 모

든 서명의 신뢰성을 확인하는 데 사용할 수 있습니다.

암호화 암호화는 전자 데이터를 올바른 암호 해독 키의 소유자를 제외한 모든 사람이 읽을 수없는 형식으로 변환하는 것

입니다. 또한 문서 (일반 텍스트)를 원래의 일반 텍스트로 "암호 해독"할 수있는 출력 (암호문)을 생성하기 위해 키 (예 :

c85ef7d79691fe79573b1a7064c19c1a8ec92344438aaf4)라고하는 더 짧은 데이터 문자열과 결합하는 프로세스로 설명 할

수 있습니다 키를 가지고있는 다른 사람이 키를 가지고 있지 않은 사람을 위해 해독하는 것은 이해할 수없고 계산 상

불가능합니다.

digitalsignature 디지털 메시지 또는 문서의 진위성을 입증하는 수학적 구성표입니다.

포트 네트워크 포트는 네트워크 대화 (예 : TCP, UDP)를 설정하는 기존 표준 중 하나가 사용하는 통신 끝점입니다.

RPC 원격 프로 시저 호출 (Remote Procedure Call)은 프로그램이 네트워크 세부 정보를 이해하지 않고도 네트워크의 다른

컴퓨터에있는 프로그램에서 서비스를 요청하는 데 사용하는 프로토콜입니다.

IPC 프로세스 간 통신 (IPC)은 프로그래머가 운영 체제에서 동시에 실행할 수있는 여러 프로그램 프로세스 간의 활동을

조정할 수있게 해주는 프로그래밍 인터페이스 세트입니다.

attach Ethereum Javascript 콘솔을 시작하는 데 사용되는 명령.

디먼 대화식 사용자가 직접 제어하지 않고 백그라운드 프로세스로 실행하는 컴퓨터 프로그램

systemservice 기본 계층 서비스 참조

base layer service Ethereum 플랫폼에 내장 된 SWARM 및 Whisper와 같은 서비스

js Javascript.

165

동기화 전체 블록 체인을 다운로드하는 프로세스입니다.

fastsync 한 번에 전체 블록 체인 하나의 링크를 처리하는 대신 히스토리에서 발생한 모든 트랜잭션을 재생하는 대신 빠

른 동기화는 블록을 따라 트랜잭션 확인을 다운로드하고 전체 최신 상태 데이터베이스를 가져옵니다.

ASIC 애플리케이션 - 특정 집적 회로 (이 경우, cryptocurrency 마이닝을 위해 구축 된 집적 회로를 참조).

memory-hard 메모리 하드 기능은 사용 가능한 메모리의 양이 약간 감소하더라도 속도 나 실행 가능성이 크게 저하되는

프로세스입니다.

키 파일 모든 계정의 개인 키 / 주소 쌍이 단일 키 파일로 존재합니다. 이것은 계정의 암호화 된 개인 키를 포함하는

JSON 텍스트 파일입니다.이 파일은 계정을 만드는 동안 입력 한 암호로만 해독 할 수 있습니다.

ICAP 형식 상호 교환 클라이언트 주소 프로토콜을 사용하여 정의 된 IBAN 의 형식 .

블록 (체인) 탐색기 블록 체인에서 데이터를 쉽게 검색하고 추출 할 수있는 웹 사이트..

게스 Ethereum Yellow Pape에 정의 된 프로토콜을 기반으로 한 Golang 프로그래밍 언어로 구현 된 Ethereum 클라이언트

Ethereum Yellow Paper에 정의되어있다.

eth Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로 C ++ 프로그래밍 언어로 구현 된 Ethereum 클라이언트.

ethereumjs

Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로하는 Javascript / Node 프로그래밍 언어로 구현 된 Ethereum 클라

이언트.

pyethereum

Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로하는 Python 프로그래밍 언어로 구현 된 Ethereum 클라이언트.

ethereumj

Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로 Java 프로그래밍 언어로 구현 된 Ethereum 클라이언트.

ethereumh

Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로 Haskell 프로그래밍 언어로 구현 된 Ethereum 클라이언트.

parity

Ethereum Yellow Paper에 정의 된 프로토콜을 기반으로 Rust 프로그래밍 언어로 구현 된 Ethereum 클라이언트.

difficulty

매우 일반적인 용어로, 새로운 블록을 채굴하는 데 필요한 노력의 양. Homestead가 출시되면 어려움 조정 알고리즘이 변

경됩니다.account

Accounts 계

정은 Ethereum 네트워크의 핵심 부분이며 모든 거래 또는 계약의 필수 부분입니다. Ethereum에는 외부 소유 계정 (EOA)

과 계약 계정이라는 두 가지 유형의 계정이 있습니다.

HLL

(구식) 뱀과 고독성이 무엇인가하는 고수준 언어의 약어. HLL은 초기 Ðapp 개발자가 낮은 수준의 요소를 다루지 않는

Ethereum 프로그래밍 언어를 호출 한 것입니다. 이 문구는 단계적으로 사라졌습니다.

CLL

166

(구식) Mutan은 C 언어의 약어. 이 약어는 단계적으로 사라졌습니다.

ES1, ES2 및 ES3 (사용되지 않음)

"Ethereum Script"버전 1,2 및 3. Ethereum Virtual Machine (EVM)이 될 초기 버전이있었습니다.

로그 이벤트

계약은 블록 검증의 일부로 실행되는 트랜잭션에 의해 트리거됩니다. 함수 호출로 생각하면 계약 실행은 비동기식이므로

반환 값이 없습니다. 대신 계약은 로그 이벤트를 통해 외부 세계와 통신합니다. 로그 이벤트는 트랜잭션이 실행될 때

생성되는 트랜잭션 수신의 일부입니다. 영수증은 영수증 트라이에 저장되며, 무결성은 영수증 트라이의 현재 루트가 상

태 및 상태 - 트리의 루트와 함께 블록 헤더의 일부라는 사실에 의해 보장됩니다. 외부 관점 영수증에서의 내부 의미는

내부적으로 읽을 수있는 계약이 아니라는 점을 제외하고는 Ethereum 시스템 상태의 일부입니다.

1.10 고전적인 문서 이니셔티브

1.10.1 목적과 청중

이 가이드는 모든 Ethereum 사용자 및 개발자를위한 기본 단계가되어야합니다. 목표는 문서 관리 (documen-

정보의 제공, 간단한 튜토리얼 및 모든 기본 기능과 중간 기능을 다루는 예제 Ethereum 을 사용하여 dapps 와 상호

작용하거나 dapp 을 개발할 수 있습니다. 지나치게 구체적이거나 기술적이거나 문서의 목표를 달성하는 데 필요하지 않은

정보는 Ethereum Github Wiki 에 남아 있습니다. 이 안내서는 필요할 경우 참조 할 수 있습니다.

많은 정보가 프론티어 가이드와 홈스테드 가이드 사이에서 유사하지만, 노력 그 정보가 여전히 정확한지 확인하기 위해

만들어야합니다. 이 문서는 클라이언트에 무관심하고 예제와 튜토리얼은 작성자가 작성하기로 결정한 클라이언트를

기반으로 할 수 있습니다.

예제 / 튜토리얼에서 어떤 클라이언트가 사용되고 있는지에 관해서 설명했다.

지나치게 구체적이고 기술적 인 문서는이 가이드의 첫 번째 반복에 포함되지 않지만,

이 가이드의 커뮤니티 사용과 인기는 앞으로의 Github 위키 문서 이동 결정을 결정할 것입니다.

이 형식.

지나치게 구체적이고 기술적 인 문서의 예는 다음과 같습니다.

• ETHash, CASPER, ABI, RLP 또는 기타 기술 사양.

• 프로토콜에 대한 전체 API 사양. 주의 사항 : 예, 정보 또는 튜토리얼에서 클라이언트 또는 인터페이스에 대한 API

호출을 참조하여 해당 예제를 충족해야하는 경우 특정 호출을 참조하는 것이 허용됩니다. 사용자가 GitHub Wiki 에있을

수있는 특정 문서의 나머지 부분을 찾을 수있는 참조를 만드십시오.

1.10.2 모범 사례를위한 참고 자료

이전에 사용한 Ethereum 문서의 몇 가지 예와 문서의 좋은 예가 있습니다.

• 독창성 문서 - https://ethereum.github.io/solidity/docs/home/

• Frontier Guide - https://ethereum.gitbooks.io/frontier-guide/content/

• Gav의 TurboEthereum 가이드 - https://gavofyork.gitbooks.io/turboethereum/content/

• 고대 EthereumBuilder 가이드 - https://ethereumbuilders.gitbooks.io/guide/content/en/index.html

167

• Other Ethereum Links: https://souptacular.gitbooks.io/ethereum-tutorials-and-tips-by-hudson / content /

giant_ethereum_resource_list.html

• Django 문서 - https://docs.djangoproject.com/en/1.9/

1.10.3 재구성 된 텍스트 마크 업, 스핑크스

• Best Cheat Sheet - https://github.com/ralsina/rst-cheatsheet/blob/master/rst-cheatsheet.rst

• 빠른 참조 - http://docutils.sourceforge.net/docs/user/rst/quickref.html

• Official Cheat Sheet - http://docutils.sourceforge.net/docs/user/rst/cheatsheet.txt

->http://docutils.sourceforge.net/docs/user/rst/cheatsheet.html

• RST 입문서 http://sphinx-doc.org/rest.html

• http://sphinx-doc.org/markup/inline.html

1.10.4 컴파일 및 배포

자동 생성 된 read-the-docs Makefile 과 함께 make 를 사용하여 문서를 빌드합니다

1.10.5 처리 팁

길이를 고정하는 섹션을 수정하십시오 (길이는 항상 80- 길이가 길고 길이가 80cars 이상이어야 합니다)

1.10.6 이전 문서 참조

old-docs-for-reference 폴더에는 Frontier Gitbook 및 Ethereum Wiki 문서가 모두 있습니다. 여전히 관련성이있는

문서에서 정보를 복사 / 붙여 넣기하십시오.

1.10.7 Pandoc 을 사용하여 이전 Wiki 컨텐트를 마이그레이션 및 변환

여전히 가장 최신의 Ethereum Wiki 와 Frontier Guide 문서를 복제하고 싶다면 :