ethereum

package module
v0.0.0-...-a8e0099 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2019 License: GPL-3.0 Imports: 5 Imported by: 0

README

Go Ethereum - Korean

이더리움 한글 주석 프로젝트입니다.

v0.2 현재 126개 파일에 약 1000줄의 주석이 한글로 변환되었습니다.

동작 분석 결과는 https://steemit.com/@sigmoid를 통해 업데이트 중입니다.

Packages or binaries.

Accounts: 계정과 키스토어, 계약계정, 지갑관련 기능
  • package accounts:높은 수준의 이더리움 계정 관리를 구현한다
    • package abi: 계약 컨택스트와 호출 가능한메소드에 대한 정보
      • package bind: 이더리움 ABI를 Go Native dap으로 바인딩
        • package backends: 테스트를 위해 가상 블록체인을 생성하여 계약 바인딩을 테스트 할수 있게 한다
    • package keystore: secp256k1 개인키의 암호화된 저장소를 구현
    • package usbwallet: 하드웨어 지갑 지원
      • package trezor: trezor wallet

bmt
  • package bmt: 바이너리 머클트리를 구현한다

cmd: geth 포함, go-ethereum에서 지원하는 실행 가능한 바이너리들
  • abigen: abi generator
  • bootnode: 이더리움 discovery protocol을 위한 부트스트랩 노드
  • clef: geth의 계정 관리 기능을 대체 가능한 트렌젝션과 데이터에 대한 사이닝에 사용가능
  • ethkey: ethkey는 이더리움 키파일 제어를 위한 cli 툴이다
  • evm: EVM 코드조각을 실행해 볼수있다
  • faucet: 라이트 클라이언트에 의해 지원되는 이더리움 수도꼭지
  • geth: geth
  • internal/browser: 유저의 브라우저와 상호연동 가능한 기능을 제공
  • p2psim: http api를 시뮬레이션 할수 있는 커맨드라인 클라이언트
  • puppeth: puppeth는 프라이빗 네트워크를 조합하고 유지하기 위한 명령이다
  • rlpdump: rlpdump는 RLP데이터의 예쁜 프린터이다
  • swarm: 분산저장소
  • utils
  • wnode: 단순 메신져 노드

common: solidity 컴파일러 등 공통으로 쓰이는 패키지들
  • package common
    • package compiler: 솔리디티 컴파일러
    • package bitutil: bitwise op
    • package fdlimit
    • package hexutil: 이더리움 RPC API가 JSON의 바이너리 데이터를 해석하기 위해 사용하는 0x prefix인코딩
    • package math: 수학적 기능 지원
    • package mclock: monotonic clock source
    • package number

consensus: 합의구현부: POA, POW 마이닝, DAO & Fork
  • package consensus: implements different Ethereum consensus engines.
    • package clique: PoA
    • package ethash: PoW
    • package misc: DAO & Fork

console
  • package console: RPC 클라이언트를 이용해 노드에 연결되는 자바스크립트 런타임 환경

contract: 스마트 계약
  • package chequebook: chequeubook smartcontract
    • package contract
  • package ens: Ethereum Name Service
    • package contract

core: 이더리움 코어. 상태, DB, EVM
  • package core: 코어패키지는 이더리움 합의 프로토콜을 구현한다
    • package asm: lexer(sourcecode parsing), token(interperted by compiler). compiler
    • package bloombits: 블룸 필터링
    • package rawdb:저수준 DB 접근자 (read, write,delete)
    • package state: 이더리움 상태 트라이의 최상위 캐싱 레이어
    • package types: 이더리움 함의와 관련된 데이터 타입들(block, bloom9, log, receipt, transaciton)
    • package vm: 이더리움 버추얼 머신, 바이트 코드 버추얼 머신. 바이트 코드 버추얼 머신은 바이트 셋을 반복하며 황서기준의 룰에 따라 실행한다
      • package runtime: EVM코드를 실행하기 위한 기본 실행 모델
block validator 블록헤더와 엉클을 검증하고 스테이트를 처리
blockchain 제네시스 블록을 가진 주어진 DB의 캐노니컬 체인과 체인의 수신/되돌리기/재구성 작업을 관리
blocks 하드포크에 의한 bad hash들을 관리함
chain_indexer 체인 인덱서 백엔드는 체인조각를 백그라운드로 처리하고, 조각의 결과를 DB에 쓰기위해 위한 방법들을 정의한다. 블룸필터나 CHT를 생성하는데 이용될 수 있다.
chain_maker mining을 하지 않아도 블록을 생성할 수 있어 다양한 테스트 패키지에서 블록을 생성할때 사용함
events NewTxsEvent
PendingLogsEvent
PendingStateEvent
NewMinedBlockEvent
RemovedLogsEvent
ChainEvent
ChainSideEvent
ChainHeadEvent
evm evm에서 사용할 체인컨텍스트와 합의 인자들을 블록체인으로 부터 생성하고 처리한다(잔고확인 및 전송)
gaspool 가스풀은 블록상의 트렌젝션이 실행되는동안 가용 가능한 가스의상태를 관찰한다
genesis 제네시스 블록과 하드포크 변환블록을 정의
state_processer 상태 처리자는 기본 처리자로서, 한 지점에서 다른 지점으로의 state의 변환을 관리한다
state_transition 상태 전환은 현재 월드 상태에 대해 하나의 트렌젝션이 적용되었을 경우 발생하며 상태 전한 모델은 새로운 상태 루트를 만들기 위한 다음과 같은 일을 한다
1. 논스 핸들링
2. 프리 가스 페이
3. 영수증에 대한 새로운 스테이트 오브젝트
4. 가치 전송
만약 계약의 생성이라면
4-a) 트렌젝션을 실행하고
4-b) 제대로 실행되었을 경우 새로운 스테이트에 대한 코드로서 결과를 사용한다
스크립트 섹션을 실행하고 새로운 상태 루트를 유도한다
tx_journal txJournal 구조체는 로컬에 저장하는 것을 노려 생성된 트렌젝션들중 실행되지 않은 것들이 노드의 재시작에도 살아남는 것을 허용하기 위한 순환로그 이며 로컬에서 발생한 트렌젝션이 아직 실행되지 않은 상태에서 노드를 재시작할때 정보가 손실되는것을 막는 일을 함
tx_list txList는 하나의 어카운트에 속하는 트렌젝션의 리스트이며, 어카운트 논스에 의해 정렬된다. 펜딩큐와 실행큐양쪽에서 연속된 트렌젝션을 저장하기 위해 사용된다
tx_pool 트렌젝션 풀은 현재까지 알려진 모든 트렌젝션을 포함한다. 네트워크를 통해 수신되거나, 로컬하게 생성된 트렌젝션이 풀에 들어가게 된다. 트렌젝션이 블록체인에 포함되면, 풀에서 나가게 된다. 풀은 현재 상태에 적용가능한 처리가능 트렌젝션과 퓨처트렌젝션으로 나뉜다.

crypto: 암호화 관련
  • package crypto
    • package b256
    • package ecies
    • package randentropy
    • package secp256k1
    • package sha3
Keccak512 account 생성 - 주소
ECDSA account 생성 - 공개키

dashboard: 이더리움 대시보드
  • package dashboard: geth에 통합된 데이터 시각화 기능. 이더리움 노드의 정보를 제공한다

eth: 이더리움 프로토콜
  • package eth: 이더리움 프로토콜을 구현한다
    • package downloader: 수동 full 체인 동기화
    • package fetcher: 동기화를 기반으로한 블록 알람
    • package filters: 외부 클라이언트에게 이더리움 프로토콜에 관련된 블록, 트렌젝션, 로그등 다양한 정보를 반환하기 위한 이더리움 필터링 시스템(RPC API)
    • package gasprice: 가스 오라클 및 블록 가격
    • package tracers: 자바스크립트 트렌젝션 추적자의 모임
config 이더리움 기본설정
sync모드
txPool
가스 Oracle
Ethash
sync * 새로운 피어가 나타나면 현재까지 펜딩된 트렌젝션을 릴레이 한다, 네트워크 밴드위스 관리를 위해 각 피어에 트렌젝션을 쪼개서 보낸다
* 주기적으로 네트워크와 동기화 하고, 해시와 블록을 다운로드한다
protocol 이더리움 프로토콜의 버전과 메시지를 정의한다
handler 프로토콜 매니저 생성
* 트렌젝션을 브로드 캐스팅한다
* 마이닝된 블럭을 브로드캐스팅한다
* 새로운 피어가 나타나면 현재까지 펜딩된 트렌젝션을 릴레이 한다, 네트워크 밴드위스 관리를 위해 각 피어에 트렌젝션을 쪼개서 보낸다
* 주기적으로 네트워크와 동기화 하고, 해시와 블록을 다운로드한다
* Qos 튜너는 산발적으로 피어들의 지연속도를 모아 예측시간을 업데이트 한다
* statefetcher는 피어 일동의 active state 동기화 및 요청 수락을 관리한다
* 해쉬 어나운스먼트를 베이스로 블록을 검색하는 블록패쳐를 만든다

ethclient
  • package ethclient: 이더리움 RPC API를 사용하기 위한 클라이언트 제공

ethdb
  • package ethdb: LevelDB를 생성하고 db의 동작 카운터를 metrix시스템에 반환한다

ethstats
  • package ethstats: 네트워크 상태보고 서비스 구현

event
  • package event: 구독 기반의 실시간 이벤트 관리
    • package filter: 이벤트의 필터

internal
  • package build
  • package cmdtest
  • package debug
  • package ethapi: 일반적인 이더리움 API함수를 구현
  • package guide
  • package jsre: 자바스크립트 실행환경을 제공
  • package web3ext: geth 특화된 web3.js 익스텐션을 제공

les
  • package les: 이더리움 라이트 서브 프로토콜을 구현함
    • package flowcontrol: 클라이언트의 flow control 매커니즘을 구현함

light
  • package light: 이더리움 라이트 클라이언트의 상태 및 체인오브젝트 반환기능을 구현

log
  • package log: 로그레벨 trace를 구현함
    • package term: 각 OS 지원을 위한 터미널

miner
  • package miner: 블록을 생성하고 합의엔진의 sealer인 ethash로 블록을 전달하여 논스를 찾도록 한다

    1. 블록 시간 체크(너무 시간이 많이 가지 않도록)
    2. 새로운 해더를 생성하고, 해더 번호에 부모+1
    3. 헤더가 ethash 프로토콜을 따르도록 난이도 필드를 초기화 한다.
    4. 현재 프로세싱이 가능한 트렌젝션을 검색하고, 관련 어카운트별로 그룹핑한 후 논스로 정렬한다.
    5. 트렌젝션을 적용하고 트렌젝션과 영수증을 만든다 주어진 스테이트 DB에 트렌젝션을 적용하고, 트렌젝션의 영수증 생성과 가스사용량 확인
    6. 엉클블록처리
    7. 합의 엔진으로 봉인하기 위해 엉클 리워드 및 최종 상태를 설정하고 블록을 조립한다
    8. 합의엔진의 sealer인 ethash로 블록을 전달하여 논스를 찾도록 한다

metrics
  • package main: 메트릭스는중요한 컴포넌트의 동작을 측정하는 방법을 제공하는 툴킷이다, 게이지/meter등을 생성하도록 도와준다.
    • package exp
    • package influxdb
    • package librato

mobile
  • package geth: 이더리움을 위한 단순화된 모바일 api를 제공함

node: 이더리움 노드
  • package node: 멀티 프로토콜 이더리움 노드를 설정함. 노드는 리소스를 RPC API들에게 공유하는 서비스들의 집합이다. 서비스들은 devp2p프로토콜을 제공할 수 있다

p2p: p2p 관련
  • package p2p: 이더리움 p2p 네트워크 프로토콜을 구현한다
    • package discover: 노드 디스커버리 프로토콜을 구현함
    • package discv5: RLPx v5 토픽 디스커버리 프로토콜을 구현한다
    • package enr: EIP-778에 따라 이더리움 노드 기록들을 제공한다. 노드는 p2p네트워크의 노드에 대한 정보를 기록한다
    • package nat: 네트워크 포트매핑 프로토콜에 대한 접근을 제공한다
    • package netutil: net 확장 패키지
    • package protocols: devp2p노드등를 생성하고 연결하여 네트워크 시뮬레이션을 수행하도록 한다
    • package simulations: p2p 익스텐션. devp2p서브 프로토콜을 사용하기 위한 쉬운 방법을 제공한다

params
  • package params: 부트노드, 이더리움, gas , 네트워크, 프로토콜등 모든 설정의 모음

rlp
  • package rlp: RLP 직렬화 구현

rpc
  • package rpc: 네트워크상 노출된 객체의 메소드 접근이나 다른 I/O 연결에 대한 접근을 제공한다

signer
  • package core
    • package rules
      • package deps: contains the console JavaScript dependencies Go embedded.
    • package storage

swarm
  • package swarm: 컨텐츠 분산저장 시스템
    • package api
      • package client
      • package http
    • package fuse
    • package metrics
    • package network
      • package kademlia
    • package storage
  • package swap: SwAP Swarm Accounting Protocol with Swift Automatic Payments a peer to peer micropayment system

trie
  • package trie: 머클 패트리샤 트리의 구현

whisper
  • package mailserver
  • package shhclient
  • package whisperv5
  • package whisperv6

vendor

fs autorest azure date color memsize memsizeui termui ole oleutil stack proto descriptor lru simplelru internetgateway1 goupnp httpu scpd soap models escape natpmp httprouter hid colorable isatty runewidth wordwrap stringutil ast toml termbox tablewriter uuid liner errors difflib flock notify otto dbg file parser registry token cors xhandler assert require cache comparer iterator journal memdb opt table util leveldb cast5 curve25519 ed25519 edwards25519 armor openpgp elgamal packet s2k pbkdf2 ripemd160 scrypt terminal ssh context atom charset html websocket syncmap unix windows charmap encoding htmlindex identifier internal japanese korean simplifiedchinese traditionalchinese unicode tag utf8internal language transform astutil imports clia

GETH block

GETH function flow

블록체인 내부 update loop: 5초마다 퓨쳐블록을 처리한다 퓨처 블록이란 블록을 체인에 넣으려고 했으나, 블록의 시간이 현재 노드의 시간보다 앞 설경우이다 이럴땐 퓨처블록으로 따로 모아두었다가 5초마다 다시 체인에 넣는것을 시도한다.

트렌젝션 풀의 내부 loop

  • 로컬 트렌젝션의 저널 로테이션: 노드 재시작때 트렌젝션이 없어지는것을 방지한다고 말씀드렸었죠?
  • 오래된 트렌젝션의 삭제
  • 체인헤드 이벤트 처리: 풀이 참조하는 체인의 head값을 업데이트 (트렌젝션이 실행가능한지 현재 상태를 확인 해야하니까요)

p2p의 loop:

  • listen loop: 저수준의 네트워크 요청을 처리하기 위한 루프
  • run루프: 노드간의 연결을 관리한다(노드추가, handshake 완료등등)

블룸비트 요청처리 루프: 블룸비트 DB로부터 반환된 결과를 수신하기 위한 루프

txBraodcast 루프: 트렌젝션을 공유하는 루프

mined block broadcast: 마이닝된 블록을 공유하는 루프

syncer: 블록체인 동기화 루프

txsyncloop: 트렌젝션 싱크루프 마이닝 루프: 논스를 찾았을때 다음 마이닝 work를 생성

트렌젝션 & 블록 & 블록체인

트랜젝션이 공유되는 형태

#geth 노드의 구성

#geth 노드의 초기동작시 함수

Documentation

Overview

Package ethereum defines interfaces for interacting with Ethereum. 이더리움 패키지는 이더리움과 통신하는 인터페이스를 정의한다

Index

Constants

This section is empty.

Variables

View Source
var NotFound = errors.New("not found")

NotFound is returned by API methods if the requested item does not exist.

Functions

This section is empty.

Types

type CallMsg

type CallMsg struct {
	From     common.Address  // the sender of the 'transaction'
	To       *common.Address // the destination contract (nil for contract creation)
	Gas      uint64          // if 0, the call executes with near-infinite gas
	GasPrice *big.Int        // wei <-> gas exchange ratio
	Value    *big.Int        // amount of wei sent along with the call
	Data     []byte          // input data, usually an ABI-encoded contract method invocation
}

CallMsg contains parameters for contract calls. CallMsg 구조체는 계약 호출을 위한 파라미터를 포함한다

type ChainReader

type ChainReader interface {
	BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)
	BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error)
	HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
	HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error)
	TransactionCount(ctx context.Context, blockHash common.Hash) (uint, error)
	TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (*types.Transaction, error)

	// This method subscribes to notifications about changes of the head block of
	// the canonical chain.
	// 이 함수는 캐노니컬 체인의 헤드블록의 변경에 대한 노티를 구독한다
	SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (Subscription, error)
}

ChainReader provides access to the blockchain. The methods in this interface access raw data from either the canonical chain (when requesting by block number) or any blockchain fork that was previously downloaded and processed by the node. The block number argument can be nil to select the latest canonical block. Reading block headers should be preferred over full blocks whenever possible.

The returned error is NotFound if the requested item does not exist. 체인리더 인터페이스는 블록체인에 대한 접근을 제공한다. 이 인터페이스 내부의 함수들은 캐노니컬 체인(블록넘버로 접근했을때)과 기존에 이 노드에 다운받았거나 처리되었던 다른 포크체인의 저수준 데이터를 접근한다. 블록 번호 인자는 마지막 캐노니컬 블록을 선택하기 위해 nil일수 있다. 블록헤더를 읽는것은 풀불록이 가능한 상태에서 읽는것이 선호된다.

type ChainStateReader

type ChainStateReader interface {
	BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error)
	StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error)
	CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
	NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error)
}

ChainStateReader wraps access to the state trie of the canonical blockchain. Note that implementations of the interface may be unable to return state values for old blocks. In many cases, using CallContract can be preferable to reading raw contract storage. 체인상태리더 인터페이스는 캐노니컬 블록체인의 상태트라이에 대한 접근을 포함한다. 인터페이스의 구현들은 오래된 블럭에 대한 상태 값을 반환하는 것이 불가능할수도 있다는 것을 기억하라 대부분의 상황에서, 저수준 계약 저장소를 읽는 것은 CallContract 함수를 사용하는 것이 선호된다

type ChainSyncReader

type ChainSyncReader interface {
	SyncProgress(ctx context.Context) (*SyncProgress, error)
}

ChainSyncReader wraps access to the node's current sync status. If there's no sync currently running, it returns nil. 체인싱크리더 인터페이스는 노드의 현재 동기화 상태에 접근을 포함한다. 만약 현재 싱크중이지 않다면 nil을 리턴한다

type ContractCaller

type ContractCaller interface {
	CallContract(ctx context.Context, call CallMsg, blockNumber *big.Int) ([]byte, error)
}

A ContractCaller provides contract calls, essentially transactions that are executed by the EVM but not mined into the blockchain. ContractCall is a low-level method to execute such calls. For applications which are structured around specific contracts, the abigen tool provides a nicer, properly typed way to perform calls. 계약호출 인터페이스는블록체인에 채굴되어 포함되지 않았지만 EVM에 의해 실행될 필수 트렌젝션들에 대한 계약 호출을 제공한다 이 인터페이스는 위와같은 호출을 실행시키는 저수준 함수이다. 특정계약을 구성하는 프로그램들을 위해 abigen tool 인터페이스는 호출을 수행하기 위한 보다 좋고 적합한 방법을 제공한다

type FilterQuery

type FilterQuery struct {
	FromBlock *big.Int         // beginning of the queried range, nil means genesis block
	ToBlock   *big.Int         // end of the range, nil means latest block
	Addresses []common.Address // restricts matches to events created by specific contracts

	// The Topic list restricts matches to particular event topics. Each event has a list
	// of topics. Topics matches a prefix of that list. An empty element slice matches any
	// topic. Non-empty elements represent an alternative that matches any of the
	// contained topics.
	//
	// Examples:
	// {} or nil          matches any topic list
	// {{A}}              matches topic A in first position
	// {{}, {B}}          matches any topic in first position, B in second position
	// {{A}}, {B}}        matches topic A in first position, B in second position
	// {{A, B}}, {C, D}}  matches topic (A OR B) in first position, (C OR D) in second position
	Topics [][]common.Hash
}

FilterQuery contains options for contract log filtering. 필터쿼리 구조체는 계약 로그 필터링을 위한 옵션을 포함한다

type GasEstimator

type GasEstimator interface {
	EstimateGas(ctx context.Context, call CallMsg) (uint64, error)
}

GasEstimator wraps EstimateGas, which tries to estimate the gas needed to execute a specific transaction based on the pending state. There is no guarantee that this is the true gas limit requirement as other transactions may be added or removed by miners, but it should provide a basis for setting a reasonable default. GasEstimator 인터페이스는 대기상태에 따른 특정 트렌젝션을 실행하기 위한 가스를 예측하기 위한 EstimateGas 함수를 포함한다.

type GasPricer

type GasPricer interface {
	SuggestGasPrice(ctx context.Context) (*big.Int, error)
}

GasPricer wraps the gas price oracle, which monitors the blockchain to determine the optimal gas price given current fee market conditions. GasPricer 인터페이스는 블록체인이 주어진 현재 마켓의 수수료 상태에서 최적의 가스가격을 결정하도록 모니터링 하는 GasPriceOracle을 포함한다

type LogFilterer

type LogFilterer interface {
	FilterLogs(ctx context.Context, q FilterQuery) ([]types.Log, error)
	SubscribeFilterLogs(ctx context.Context, q FilterQuery, ch chan<- types.Log) (Subscription, error)
}

LogFilterer provides access to contract log events using a one-off query or continuous event subscription.

Logs received through a streaming query subscription may have Removed set to true, indicating that the log was reverted due to a chain reorganisation. 로그 필터러 인터페이스는 한번의 쿼리나 연속적인 이벤트 구독을 이용하는 계약 로그 이벤트에 대한 접근을 제공한다

type PendingContractCaller

type PendingContractCaller interface {
	PendingCallContract(ctx context.Context, call CallMsg) ([]byte, error)
}

PendingContractCaller can be used to perform calls against the pending state. PendingContractCaller 인터페이스는 대기상태에 대한 수행 호출을 위해 사용될수 있다

type PendingStateEventer

type PendingStateEventer interface {
	SubscribePendingTransactions(ctx context.Context, ch chan<- *types.Transaction) (Subscription, error)
}

A PendingStateEventer provides access to real time notifications about changes to the pending state. PendingStateEventer 인터페이스는 대기상태의 변화에 대한 실시간 알람을 제공한다

type PendingStateReader

type PendingStateReader interface {
	PendingBalanceAt(ctx context.Context, account common.Address) (*big.Int, error)
	PendingStorageAt(ctx context.Context, account common.Address, key common.Hash) ([]byte, error)
	PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
	PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
	PendingTransactionCount(ctx context.Context) (uint, error)
}

A PendingStateReader provides access to the pending state, which is the result of all known executable transactions which have not yet been included in the blockchain. It is commonly used to display the result of ’unconfirmed’ actions (e.g. wallet value transfers) initiated by the user. The PendingNonceAt operation is a good way to retrieve the next available transaction nonce for a specific account. PendingStateReader 인터페이스는 아직 블록체인에 포함되지 않은 모든 알려진 실행가능한 트렌젝션의 대기상태로의 접근을 지원한다

type Subscription

type Subscription interface {
	// Unsubscribe cancels the sending of events to the data channel
	// and closes the error channel.
	Unsubscribe()
	// Err returns the subscription error channel. The error channel receives
	// a value if there is an issue with the subscription (e.g. the network connection
	// delivering the events has been closed). Only one value will ever be sent.
	// The error channel is closed by Unsubscribe.
	Err() <-chan error
}

Subscription represents an event subscription where events are delivered on a data channel. Subscription 인터페이스는 데이터 채널위에서 전송되는 이벤트를 구독한다.

type SyncProgress

type SyncProgress struct {
	StartingBlock uint64 // Block number where sync began
	CurrentBlock  uint64 // Current block number where sync is at
	HighestBlock  uint64 // Highest alleged block number in the chain
	PulledStates  uint64 // Number of state trie entries already downloaded
	KnownStates   uint64 // Total number of state trie entries known about
}

SyncProgress gives progress indications when the node is synchronising with the Ethereum network. SyncProgress 구조체는 노드가 이더리움 네트워크가 싱크중일때 진행상황을 알려준다

type TransactionReader

type TransactionReader interface {
	// TransactionByHash checks the pool of pending transactions in addition to the
	// blockchain. The isPending return value indicates whether the transaction has been
	// mined yet. Note that the transaction may not be part of the canonical chain even if
	// it's not pending.
	// TransactionByHash 함수는 블록체인에 추가할 대기 트렌젝션 풀을 체크한다.
	// isPending의 반환값은 아직 마이닝되지 않은 트렌젝션을 가리킨다.
	// 그 트렌젝션은 대기중이 아니라도 캐노니컬 체인의 부분이 아닐수 있다는 것을 기억하라.
	TransactionByHash(ctx context.Context, txHash common.Hash) (tx *types.Transaction, isPending bool, err error)
	// TransactionReceipt returns the receipt of a mined transaction. Note that the
	// transaction may not be included in the current canonical chain even if a receipt
	// exists.
	// Transaction Receipt 함수는 채굴된 트렌젝션의 영수증을 반환한다.
	// 영수증이 존재하더라도 그 트렌젝션은 현재 캐노니컬 체인에 포함되지 않을수 있다.
	TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
}

type TransactionSender

type TransactionSender interface {
	SendTransaction(ctx context.Context, tx *types.Transaction) error
}

TransactionSender wraps transaction sending. The SendTransaction method injects a signed transaction into the pending transaction pool for execution. If the transaction was a contract creation, the TransactionReceipt method can be used to retrieve the contract address after the transaction has been mined.

The transaction must be signed and have a valid nonce to be included. Consumers of the API can use package accounts to maintain local private keys and need can retrieve the next available nonce using PendingNonceAt. TransactionSender 인터페이스는 trasanction 전송을 포함한다. SendTransaction 함수는 사인된 트렌젝션을 실행하기 위해 대기 트렌젝션 풀에 주입한다. 만약 트렌젝션이 계약의 생성이였다면, 트렌젝션이 마이닝 된후 계약 주소를 반환받기 위해 TransactionReceipt 함수가 사용될 수 있다.

Directories

Path Synopsis
Package accounts implements high level Ethereum account management.
Package accounts implements high level Ethereum account management.
abi
Package abi implements the Ethereum ABI (Application Binary Interface).
Package abi implements the Ethereum ABI (Application Binary Interface).
abi/bind
Package bind generates Ethereum contract Go bindings.
Package bind generates Ethereum contract Go bindings.
keystore
Package keystore implements encrypted storage of secp256k1 private keys.
Package keystore implements encrypted storage of secp256k1 private keys.
usbwallet
Package usbwallet implements support for USB hardware wallets.
Package usbwallet implements support for USB hardware wallets.
usbwallet/internal/trezor
Package trezor contains the wire protocol wrapper in Go.
Package trezor contains the wire protocol wrapper in Go.
Package bmt provides a binary merkle tree implementation bmt 패키지는 바이너리 머클트리 구현을 제공한다
Package bmt provides a binary merkle tree implementation bmt 패키지는 바이너리 머클트리 구현을 제공한다
cmd
abigen command
bootnode command
bootnode runs a bootstrap node for the Ethereum Discovery Protocol.
bootnode runs a bootstrap node for the Ethereum Discovery Protocol.
clef command
signer is a utility that can be used so sign transactions and arbitrary data.
signer is a utility that can be used so sign transactions and arbitrary data.
ethkey command
evm command
evm executes EVM code snippets.
evm executes EVM code snippets.
faucet command
faucet is a Ether faucet backed by a light client.
faucet is a Ether faucet backed by a light client.
geth command
geth is the official command-line client for Ethereum.
geth is the official command-line client for Ethereum.
internal/browser
Package browser provides utilities for interacting with users' browsers.
Package browser provides utilities for interacting with users' browsers.
p2psim command
p2psim provides a command-line client for a simulation HTTP API.
p2psim provides a command-line client for a simulation HTTP API.
puppeth command
puppeth is a command to assemble and maintain private networks.
puppeth is a command to assemble and maintain private networks.
rlpdump command
rlpdump is a pretty-printer for RLP data.
rlpdump is a pretty-printer for RLP data.
swarm command
Command bzzhash computes a swarm tree hash.
Command bzzhash computes a swarm tree hash.
utils
Package utils contains internal helper functions for go-ethereum commands.
Package utils contains internal helper functions for go-ethereum commands.
wnode command
This is a simple Whisper node.
This is a simple Whisper node.
Package common contains various helper functions.
Package common contains various helper functions.
bitutil
Package bitutil implements fast bitwise operations.
Package bitutil implements fast bitwise operations.
compiler
Package compiler wraps the Solidity compiler executable (solc).
Package compiler wraps the Solidity compiler executable (solc).
hexutil
Package hexutil implements hex encoding with 0x prefix.
Package hexutil implements hex encoding with 0x prefix.
math
Package math provides integer math utilities.
Package math provides integer math utilities.
mclock
package mclock is a wrapper for a monotonic clock source
package mclock is a wrapper for a monotonic clock source
Package consensus implements different Ethereum consensus engines.
Package consensus implements different Ethereum consensus engines.
clique
Package clique implements the proof-of-authority consensus engine.
Package clique implements the proof-of-authority consensus engine.
ethash
Package ethash implements the ethash proof-of-work consensus engine.
Package ethash implements the ethash proof-of-work consensus engine.
contracts
chequebook
Package chequebook package wraps the 'chequebook' Ethereum smart contract.
Package chequebook package wraps the 'chequebook' Ethereum smart contract.
ens
Package core implements the Ethereum consensus protocol.
Package core implements the Ethereum consensus protocol.
asm
Provides support for dealing with EVM assembly instructions (e.g., disassembling them).
Provides support for dealing with EVM assembly instructions (e.g., disassembling them).
bloombits
Package bloombits implements bloom filtering on batches of data.
Package bloombits implements bloom filtering on batches of data.
rawdb
Package rawdb contains a collection of low level database accessors.
Package rawdb contains a collection of low level database accessors.
state
Package state provides a caching layer atop the Ethereum state trie.
Package state provides a caching layer atop the Ethereum state trie.
vm
Package vm implements the Ethereum Virtual Machine.
Package vm implements the Ethereum Virtual Machine.
vm/runtime
Package runtime provides a basic execution model for executing EVM code.
Package runtime provides a basic execution model for executing EVM code.
bn256
Package bn256 implements the Optimal Ate pairing over a 256-bit Barreto-Naehrig curve.
Package bn256 implements the Optimal Ate pairing over a 256-bit Barreto-Naehrig curve.
bn256/cloudflare
Package bn256 implements a particular bilinear group at the 128-bit security level.
Package bn256 implements a particular bilinear group at the 128-bit security level.
bn256/google
Package bn256 implements a particular bilinear group at the 128-bit security level.
Package bn256 implements a particular bilinear group at the 128-bit security level.
secp256k1
Package secp256k1 wraps the bitcoin secp256k1 C library.
Package secp256k1 wraps the bitcoin secp256k1 C library.
sha3
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
eth
Package eth implements the Ethereum protocol.
Package eth implements the Ethereum protocol.
downloader
Package downloader contains the manual full chain synchronisation.
Package downloader contains the manual full chain synchronisation.
fetcher
Package fetcher contains the block announcement based synchronisation.
Package fetcher contains the block announcement based synchronisation.
filters
Package filters implements an ethereum filtering system for block, transactions and log events.
Package filters implements an ethereum filtering system for block, transactions and log events.
tracers
Package tracers is a collection of JavaScript transaction tracers.
Package tracers is a collection of JavaScript transaction tracers.
tracers/internal/tracers
Package tracers contains the actual JavaScript tracer assets.
Package tracers contains the actual JavaScript tracer assets.
Package ethclient provides a client for the Ethereum RPC API.
Package ethclient provides a client for the Ethereum RPC API.
Package ethstats implements the network stats reporting service.
Package ethstats implements the network stats reporting service.
Package event deals with subscriptions to real-time events.
Package event deals with subscriptions to real-time events.
filter
Package filter implements event filters.
Package filter implements event filters.
internal
debug
Package debug interfaces Go runtime debugging facilities.
Package debug interfaces Go runtime debugging facilities.
ethapi
Package ethapi implements the general Ethereum API functions.
Package ethapi implements the general Ethereum API functions.
guide
Package guide is a small test suite to ensure snippets in the dev guide work.
Package guide is a small test suite to ensure snippets in the dev guide work.
jsre
Package jsre provides execution environment for JavaScript.
Package jsre provides execution environment for JavaScript.
jsre/deps
Package deps contains the console JavaScript dependencies Go embedded.
Package deps contains the console JavaScript dependencies Go embedded.
web3ext
package web3ext contains geth specific web3.js extensions.
package web3ext contains geth specific web3.js extensions.
les
Package les implements the Light Ethereum Subprotocol.
Package les implements the Light Ethereum Subprotocol.
flowcontrol
Package flowcontrol implements a client side flow control mechanism
Package flowcontrol implements a client side flow control mechanism
light 패키지는 이더리움 라이트 클라이언트를 위한 상태와 체인오브젝트에 대한 반환을 구현한다
light 패키지는 이더리움 라이트 클라이언트를 위한 상태와 체인오브젝트에 대한 반환을 구현한다
log
Package log15 provides an opinionated, simple toolkit for best-practice logging that is both human and machine readable.
Package log15 provides an opinionated, simple toolkit for best-practice logging that is both human and machine readable.
Go port of Coda Hale's Metrics library
Go port of Coda Hale's Metrics library
exp
Hook go-metrics into expvar on any /debug/metrics request, load all vars from the registry into expvar, and execute regular expvar handler
Hook go-metrics into expvar on any /debug/metrics request, load all vars from the registry into expvar, and execute regular expvar handler
Package miner implements Ethereum block creation and mining.
Package miner implements Ethereum block creation and mining.
Package geth contains the simplified mobile APIs to go-ethereum.
Package geth contains the simplified mobile APIs to go-ethereum.
Package node sets up multi-protocol Ethereum nodes.
Package node sets up multi-protocol Ethereum nodes.
p2p
discv5
Package discv5 implements the RLPx v5 Topic Discovery Protocol.
Package discv5 implements the RLPx v5 Topic Discovery Protocol.
nat
Package nat provides access to common network port mapping protocols.
Package nat provides access to common network port mapping protocols.
netutil
Package netutil contains extensions to the net package.
Package netutil contains extensions to the net package.
protocols
Package protocols is an extension to p2p.
Package protocols is an extension to p2p.
simulations
Package simulations simulates p2p networks.
Package simulations simulates p2p networks.
Package rlp implements the RLP serialization format.
Package rlp implements the RLP serialization format.
signer
rules/deps
Package deps contains the console JavaScript dependencies Go embedded.
Package deps contains the console JavaScript dependencies Go embedded.
api
api/http
Show nicely (but simple) formatted HTML error pages (or respond with JSON if the appropriate `Accept` header is set)) for the http package.
Show nicely (but simple) formatted HTML error pages (or respond with JSON if the appropriate `Accept` header is set)) for the http package.
Package tests implements execution of Ethereum JSON tests.
Package tests implements execution of Ethereum JSON tests.
Package trie implements Merkle Patricia Tries.
Package trie implements Merkle Patricia Tries.
whisper
whisperv5
Package whisperv5 implements the Whisper protocol (version 5).
Package whisperv5 implements the Whisper protocol (version 5).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL