Documentation ¶
Overview ¶
Package eth implements the cjminercn protocol.
Index ¶
Constants ¶
const ( NetworkId = 1 ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message )
const ( // Protocol messages belonging to eth/61 StatusMsg = 0x00 NewBlockHashesMsg = 0x01 TxMsg = 0x02 GetBlockHashesMsg = 0x03 BlockHashesMsg = 0x04 GetBlocksMsg = 0x05 BlocksMsg = 0x06 NewBlockMsg = 0x07 GetBlockHashesFromNumberMsg = 0x08 // Protocol messages belonging to eth/62 (new protocol from scratch) // StatusMsg = 0x00 (uncomment after eth/61 deprecation) // NewBlockHashesMsg = 0x01 (uncomment after eth/61 deprecation) // TxMsg = 0x02 (uncomment after eth/61 deprecation) GetBlockHeadersMsg = 0x03 BlockHeadersMsg = 0x04 GetBlockBodiesMsg = 0x05 BlockBodiesMsg = 0x06 // Protocol messages belonging to eth/63 GetNodeDataMsg = 0x0d NodeDataMsg = 0x0e GetReceiptsMsg = 0x0f ReceiptsMsg = 0x10 )
eth protocol message codes
const ( ErrMsgTooLarge = iota ErrDecode ErrInvalidMsgCode ErrProtocolVersionMismatch ErrNetworkIdMismatch ErrGenesisBlockMismatch ErrNoStatusMsg ErrExtraStatusMsg ErrSuspendedPeer )
Variables ¶
var ProtocolLengths = []uint64{17, 8, 9}
Number of implemented message corresponding to different protocol versions.
var ProtocolName = "eth"
Official short name of the protocol used during capability negotiation.
var ProtocolVersions = []uint{eth63, eth62, eth61}
Supported versions of the eth protocol (first is primary).
Functions ¶
func PrintOpenCLDevices ¶
func PrintOpenCLDevices()
Types ¶
type Config ¶
type Config struct { DevMode bool TestNet bool Name string NetworkId int GenesisFile string GenesisBlock *types.Block // used by block tests FastSync bool Olympic bool BlockChainVersion int SkipBcVersionCheck bool // e.g. blockchain export DatabaseCache int DataDir string LogFile string Verbosity int VmDebug bool NatSpec bool DocRoot string AutoDAG bool PowTest bool ExtraData []byte MaxPeers int MaxPendingPeers int Discovery bool Port string // Space-separated list of discovery node URLs BootNodes string // This key is used to identify the node on the network. // If nil, an ephemeral key is used. NodeKey *ecdsa.PrivateKey NAT nat.Interface Shh bool Dial bool Etherbase common.Address GasPrice *big.Int MinerThreads int AccountManager *accounts.Manager SolcPath string GpoMinGasPrice *big.Int GpoMaxGasPrice *big.Int GpoFullBlockRatio int GpobaseStepDown int GpobaseStepUp int GpobaseCorrectionFactor int // NewDB is used to create databases. // If nil, the default is to create leveldb databases on disk. NewDB func(path string) (ethdb.Database, error) }
type EthNodeInfo ¶
type EthNodeInfo struct { Network int `json:"network"` // cjminercn network ID (0=Olympic, 1=Frontier, 2=Morden) Difficulty *big.Int `json:"difficulty"` // Total difficulty of the host's blockchain Genesis string `json:"genesis"` // SHA3 hash of the host's genesis block Head string `json:"head"` // SHA3 hash of the host's best owned block }
EthNodeInfo represents a short summary of the cjminercn sub-protocol metadata known about the host peer.
type GasPriceOracle ¶
type GasPriceOracle struct {
// contains filtered or unexported fields
}
GasPriceOracle recommends gas prices based on the content of recent blocks.
func NewGasPriceOracle ¶
func NewGasPriceOracle(eth *cjminercn) *GasPriceOracle
NewGasPriceOracle returns a new oracle.
func (*GasPriceOracle) SuggestPrice ¶
func (self *GasPriceOracle) SuggestPrice() *big.Int
SuggestPrice returns the recommended gas price.
type PeerInfo ¶
type PeerInfo struct { Version int `json:"version"` // cjminercn protocol version negotiated Difficulty *big.Int `json:"difficulty"` // Total difficulty of the peer's blockchain Head string `json:"head"` // SHA3 hash of the peer's best owned block }
PeerInfo represents a short summary of the cjminercn sub-protocol metadata known about a connected peer.
type ProtocolManager ¶
type ProtocolManager struct { SubProtocols []p2p.Protocol // contains filtered or unexported fields }
func NewProtocolManager ¶
func NewProtocolManager(fastSync bool, networkId int, mux *event.TypeMux, txpool txPool, pow pow.PoW, blockchain *core.BlockChain, chaindb ethdb.Database) (*ProtocolManager, error)
NewProtocolManager returns a new cjminercn sub protocol manager. The cjminercn sub protocol manages peers capable with the cjminercn network.
func (*ProtocolManager) BroadcastBlock ¶
func (pm *ProtocolManager) BroadcastBlock(block *types.Block, propagate bool)
BroadcastBlock will either propagate a block to a subset of it's peers, or will only announce it's availability (depending what's requested).
func (*ProtocolManager) BroadcastTx ¶
func (pm *ProtocolManager) BroadcastTx(hash common.Hash, tx *types.Transaction)
BroadcastTx will propagate a transaction to all peers which are not known to already have the given transaction.
func (*ProtocolManager) NodeInfo ¶
func (self *ProtocolManager) NodeInfo() *EthNodeInfo
NodeInfo retrieves some protocol metadata about the running host node.
func (*ProtocolManager) Start ¶
func (pm *ProtocolManager) Start()
func (*ProtocolManager) Stop ¶
func (pm *ProtocolManager) Stop()
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package downloader contains the manual full chain synchronisation.
|
Package downloader contains the manual full chain synchronisation. |
Package fetcher contains the block announcement based synchonisation.
|
Package fetcher contains the block announcement based synchonisation. |
package filters implements an cjminercn filtering system for block, transactions and log events.
|
package filters implements an cjminercn filtering system for block, transactions and log events. |