Documentation
¶
Overview ¶
Package eth implements the Infinet protocol.
Package eth implements the Juchain protocol.
Package ethstats implements the network stats reporting service.
Index ¶
- Constants
- Variables
- func CreateConsensusEngine(ctx *node.ServiceContext, chainConfig *config.ChainConfig, db store.Database) consensus.Engine
- func CreateDB(ctx *node.ServiceContext, config *Config, name string) (store.Database, error)
- func NewBloomIndexer(db store.Database, size uint64) *core.ChainIndexer
- func RemoveCanditate(s []string, i int) []string
- func SignCandidates(candidates []string) common.Hash
- type BloomIndexer
- type BroadcastBestNodeConflict
- type BroadcastVotedElection
- type Config
- type ConfirmedSyncMessage
- type DPOSErrCode
- type DPoSProtocolManager
- type DVoteProtocolManager
- type DelegatedNodeInfoMapping
- type DelegatorAccessor
- type DelegatorAccessorImpl
- type DelegatorAccessorTestImpl
- type ElectionInfo
- type EthApiBackend
- func (b *EthApiBackend) AccountManager() *account.Manager
- func (b *EthApiBackend) BlockByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Block, error)
- func (b *EthApiBackend) BloomStatus() (uint64, uint64)
- func (b *EthApiBackend) ChainConfig() *config.ChainConfig
- func (b *EthApiBackend) ChainDb() store.Database
- func (b *EthApiBackend) CurrentBlock() *types.Block
- func (b *EthApiBackend) Downloader() *downloader.Downloader
- func (b *EthApiBackend) EventMux() *event.TypeMux
- func (b *EthApiBackend) GetBlock(ctx context.Context, blockHash common.Hash) (*types.Block, error)
- func (b *EthApiBackend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, ...) (*vm.EVM, func() error, error)
- func (b *EthApiBackend) GetLogs(ctx context.Context, blockHash common.Hash) ([][]*types.Log, error)
- func (b *EthApiBackend) GetPoolNonce(ctx context.Context, addr common.Address) (uint64, error)
- func (b *EthApiBackend) GetPoolTransaction(hash common.Hash) *types.Transaction
- func (b *EthApiBackend) GetPoolTransactions() (types.Transactions, error)
- func (b *EthApiBackend) GetReceipts(ctx context.Context, blockHash common.Hash) (types.Receipts, error)
- func (b *EthApiBackend) GetTd(blockHash common.Hash) *big.Int
- func (b *EthApiBackend) HeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Header, error)
- func (b *EthApiBackend) ProtocolVersion() int
- func (b *EthApiBackend) SendTx(ctx context.Context, signedTx *types.Transaction) error
- func (b *EthApiBackend) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession)
- func (b *EthApiBackend) SetHead(number uint64)
- func (b *EthApiBackend) StateAndHeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*state.StateDB, *types.Header, error)
- func (b *EthApiBackend) Stats() (pending int, queued int)
- func (b *EthApiBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription
- func (b *EthApiBackend) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription
- func (b *EthApiBackend) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription
- func (b *EthApiBackend) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription
- func (b *EthApiBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription
- func (b *EthApiBackend) SubscribeTxPreEvent(ch chan<- core.TxPreEvent) event.Subscription
- func (b *EthApiBackend) SuggestPrice(ctx context.Context) (*big.Int, error)
- func (b *EthApiBackend) TxPoolContent() (map[common.Address]types.Transactions, map[common.Address]types.Transactions)
- type GigPeriodTable
- type JuchainService
- func (s *JuchainService) APIs() []rpc.API
- func (s *JuchainService) AccountManager() *account.Manager
- func (s *JuchainService) BlockChain() *core.BlockChain
- func (s *JuchainService) ChainDb() store.Database
- func (s *JuchainService) Downloader() *downloader.Downloader
- func (s *JuchainService) Engine() consensus.Engine
- func (s *JuchainService) EthVersion() int
- func (s *JuchainService) Etherbase() (eb common.Address, err error)
- func (s *JuchainService) EventMux() *event.TypeMux
- func (s *JuchainService) IsListening() bool
- func (s *JuchainService) NetVersion() uint64
- func (s *JuchainService) Protocols() []p2p.Protocol
- func (s *JuchainService) ResetWithGenesisBlock(gb *types.Block)
- func (self *JuchainService) SetEtherbase(etherbase common.Address)
- func (s *JuchainService) Start(srvr *p2p.Server) error
- func (s *JuchainService) Stop() error
- func (s *JuchainService) TxPool() *core.TxPool
- type LesServer
- type NodeInfo
- type PackageRequest
- type PackageResponse
- type PeerInfo
- type PrivateAdminAPI
- type PrivateDebugAPI
- func (api *PrivateDebugAPI) GetBadBlocks(ctx context.Context) ([]core.BadBlockArgs, error)
- func (api *PrivateDebugAPI) GetModifiedAccountsByHash(startHash common.Hash, endHash *common.Hash) ([]common.Address, error)
- func (api *PrivateDebugAPI) GetModifiedAccountsByNumber(startNum uint64, endNum *uint64) ([]common.Address, error)
- func (api *PrivateDebugAPI) Preimage(ctx context.Context, hash common.Hash) (hexutil.Bytes, error)
- func (api *PrivateDebugAPI) StorageRangeAt(ctx context.Context, blockHash common.Hash, txIndex int, ...) (StorageRangeResult, error)
- func (api *PrivateDebugAPI) TraceBlock(ctx context.Context, blob []byte, config *TraceConfig) ([]*txTraceResult, error)
- func (api *PrivateDebugAPI) TraceBlockByHash(ctx context.Context, hash common.Hash, config *TraceConfig) ([]*txTraceResult, error)
- func (api *PrivateDebugAPI) TraceBlockByNumber(ctx context.Context, number rpc.BlockNumber, config *TraceConfig) ([]*txTraceResult, error)
- func (api *PrivateDebugAPI) TraceBlockFromFile(ctx context.Context, file string, config *TraceConfig) ([]*txTraceResult, error)
- func (api *PrivateDebugAPI) TraceChain(ctx context.Context, start, end rpc.BlockNumber, config *TraceConfig) (*rpc.Subscription, error)
- func (api *PrivateDebugAPI) TraceTransaction(ctx context.Context, hash common.Hash, config *TraceConfig) (interface{}, error)
- type ProtocolManager
- type PublicDebugAPI
- type PublicEthereumAPI
- type RegisterCandidateRequest
- type RegisterCandidateResponse
- type Service
- type StorageRangeResult
- type SyncBigPeriodRequest
- type SyncBigPeriodResponse
- type TraceConfig
- type VoteElectionRequest
- type VoteElectionResponse
- type VotePresidentRequest
- type VotePresidentResponse
- type VotedPresidentBroadcast
Constants ¶
const ( DPOSProtocolMaxMsgSize = 10 * 1024 // Maximum cap on the size of a protocol message // Protocol messages belonging to dpos/10 VOTE_ElectionNode_Request = 0xa1 VOTE_ElectionNode_Response = 0xa2 VOTE_ElectionNode_Broadcast = 0xa3 VOTE_BESTNODE_CONFLICT = 0xa4 SYNC_BIGPERIOD_REQUEST = 0xb1 SYNC_BIGPERIOD_RESPONSE = 0xb2 DPOSMSG_SUCCESS = iota DPOSErrMsgTooLarge DPOSErrDecode DPOSErrInvalidMsgCode DPOSErrProtocolVersionMismatch DPOSErrNoStatusMsg DPOSErroPACKAGE_VERIFY_FAILURE DPOSErroPACKAGE_FAILURE DPOSErroPACKAGE_NOTSYNC DPOSErroPACKAGE_EMPTY DPOSErroVOTE_VERIFY_FAILURE DPOSErroCandidateFull DPOSErroDelegatorSign // voting sync status VOTESTATE_LOOKING = 0xb0 VOTESTATE_SELECTED = 0xb1 VOTESTATE_STOP = 0xb2 VOTESTATE_MISMATCHED_ROUND = 0xb2 // delegator sync status STATE_LOOKING = 0xc0 STATE_CONFIRMED = 0xc1 // sync response STATE_MISMATCHED_ROUND = 0xc2 STATE_MISMATCHED_DNUMBER = 0xc3 )
dpos protocol message codes
const ( // Protocol messages belonging to OBOD01 StatusMsg = 0x00 NewBlockHashesMsg = 0x01 GetBlockHeadersMsg = 0x02 BlockHeadersMsg = 0x03 GetBlockBodiesMsg = 0x04 BlockBodiesMsg = 0x05 NewBlockMsg = 0x06 TxMsg = 0x07 DAppTxMsg = 0x08 GetNodeDataMsg = 0x0d NodeDataMsg = 0x0e GetReceiptsMsg = 0x0f ReceiptsMsg = 0x10 )
const ( ErrMsgTooLarge = iota ErrDecode ErrInvalidMsgCode ErrProtocolVersionMismatch ErrNetworkIdMismatch ErrGenesisBlockMismatch ErrNoStatusMsg ErrExtraStatusMsg ErrSuspendedPeer ErrInvalidTimestamp )
const (
OBOD01 = uint(1) //obod protocol 1.0 version
)
Constants to match up protocol versions and messages
const ProtocolMaxMsgSize = 10 * 1024 * 1024 // Maximum cap on the size of a protocol message
Variables ¶
var ( TotalDelegatorNumber uint8 = 31 // we make 31 candidates as the best group for packaging. SmallPeriodInterval uint32 = 5 // small period for packaging node in every 5 seconds. GigPeriodInterval uint32 = uint32(TotalDelegatorNumber) * 5 // create a big period for all delegated nodes in every 155 seconds. BigPeriodHistorySize uint8 = 10 // keep 10 records for the confirmation of delayed block GigPeriodHistory = make([]GigPeriodTable, 0) // <GigPeriodTable> GigPeriodInstance *GigPeriodTable // we use two versions of election info for switching delegated nodes smoothly. NextGigPeriodInstance *GigPeriodTable VotingAccessor DelegatorAccessor // responsible for access voting data. DelegatorsTable []string // only for all delegated node ids. the table will receive from a voting contract. DelegatorNodeInfo []*discover.Node // all delegated peers. = make([]*discover.Node, 0, len(urls)) )
DPoS consensus handler of delegator packaging process. only 31 delegators voted, then this process will be started. *
Sample code: for round i dlist_i = get N delegates sort by votes dlist_i = mixorder(dlist_i) loop slot = global_time_offset / block_interval pos = slot % N if dlist_i[pos] exists in this node generateBlock(keypair of dlist_i[pos]) else skip
var ( // Official short name of the protocol used during capability negotiation. DPOSProtocolName = "dpos" // Supported versions of the protocol (first is primary). DPOSProtocolVersions = []uint{1} // Number of implemented message corresponding to different protocol versions. DPOSProtocolLengths = []uint64{1} )
var ( TestMode bool = false // only for test case. PackagingInterval uint32 = 2 // vote for packaging node in every 5 seconds. ElectingInterval uint32 = 15 // elect for new node in every 30 seconds. ElectionInfo0 *ElectionInfo // we use two versions of election info for switching election node smoothly. NextElectionInfo *ElectionInfo LastElectedNodeId string //enableBNConflict bool = false; BNConflictInterval uint32 = 4 // must be small than ElectingInterval / 2 )
DPoS voting handler is purposed on the voting process of all delegators. this is the previous process of DPoS delegator packaging process. we need to vote at least 31 delegators and 70 candidates in the smart contract. if all the conditions satisfied, then activate the delegator packaging process. DPoS packaging handler. ------------------------ the voting process of the best node has three stages: 1. try to vote for the best node with random tickets to all peers. 2. solve the best node confliction if has. 3. exchange the voted best node from all peers.
var DPOSerrorToString = map[int]string{ DPOSErrMsgTooLarge: "Message too long", DPOSErrDecode: "Invalid message", DPOSErrInvalidMsgCode: "Invalid message code", DPOSErrProtocolVersionMismatch: "Protocol version mismatch", DPOSErrNoStatusMsg: "No status message", DPOSErroPACKAGE_VERIFY_FAILURE: "Packaging node Id does not match", DPOSErroPACKAGE_FAILURE: "Failed to package the block", DPOSErroPACKAGE_NOTSYNC: "Failed to package block due to blocks syncing is not completed yet", DPOSErroPACKAGE_EMPTY: "Packaging block is skipped due to there was no transaction found at the remote peer", DPOSErroVOTE_VERIFY_FAILURE: "VotePresidentRequest is invalid", DPOSErroDelegatorSign: "Delegators' signature is incorrect", }
XXX change once legacy code is out
var DefaultConfig = Config{ SyncMode: downloader.FastSync, NetworkId: 1, LightPeers: 100, DatabaseCache: 768, TrieCache: 256, TrieTimeout: 5 * time.Minute, GasPrice: big.NewInt(18 * config.Shannon), TxPool: core.DefaultTxPoolConfig, GPO: gasprice.Config{ Blocks: 20, Percentile: 60, }, }
DefaultConfig contains default settings for use on the JuchainService main net.
var ProtocolLengths = []uint64{1}
Number of implemented message corresponding to different protocol versions.
var ProtocolName = "obod"
Official short name of the protocol used during capability negotiation.
var ProtocolVersions = []uint{OBOD01}
Supported versions of the eth protocol (first is primary).
Functions ¶
func CreateConsensusEngine ¶
func CreateConsensusEngine(ctx *node.ServiceContext, chainConfig *config.ChainConfig, db store.Database) consensus.Engine
CreateConsensusEngine creates the required type of consensus engine instance for an JuchainService service
func NewBloomIndexer ¶
func NewBloomIndexer(db store.Database, size uint64) *core.ChainIndexer
NewBloomIndexer returns a chain indexer that generates bloom bits data for the canonical chain for fast logs filtering.
func RemoveCanditate ¶
func SignCandidates ¶
Types ¶
type BloomIndexer ¶
type BloomIndexer struct {
// contains filtered or unexported fields
}
BloomIndexer implements a core.ChainIndexer, building up a rotated bloom bits index for the JuchainService header bloom filters, permitting blazing fast filtering.
func (*BloomIndexer) Commit ¶
func (b *BloomIndexer) Commit() error
Commit implements core.ChainIndexerBackend, finalizing the bloom section and writing it out into the database.
func (*BloomIndexer) Process ¶
func (b *BloomIndexer) Process(header *types.Header)
Process implements core.ChainIndexerBackend, adding a new header's bloom into the index.
type BroadcastVotedElection ¶
type Config ¶
type Config struct { // The genesis block, which is inserted if the database is empty. // If nil, the JuchainService main net block is used. Genesis *core.Genesis `toml:",omitempty"` // Protocol options NetworkId uint64 // Network ID to use for selecting peers to connect to SyncMode downloader.SyncMode NoPruning bool // Light client options LightServ int `toml:",omitempty"` // Maximum percentage of time allowed for serving LES requests LightPeers int `toml:",omitempty"` // Maximum number of LES client peers // Database options SkipBcVersionCheck bool `toml:"-"` DatabaseHandles int `toml:"-"` DatabaseCache int TrieCache int TrieTimeout time.Duration // Mining-related options Etherbase common.Address `toml:",omitempty"` ExtraData []byte `toml:",omitempty"` GasPrice *big.Int // Transaction pool options TxPool core.TxPoolConfig // Gas Price Oracle options GPO gasprice.Config // Enables tracking of SHA3 preimages in the VM EnablePreimageRecording bool // Miscellaneous options DocRoot string `toml:"-"` }
func (Config) MarshalTOML ¶
func (*Config) UnmarshalTOML ¶
type ConfirmedSyncMessage ¶
type DPOSErrCode ¶
type DPOSErrCode int
func (DPOSErrCode) String ¶
func (e DPOSErrCode) String() string
type DPoSProtocolManager ¶
type DPoSProtocolManager struct {
// contains filtered or unexported fields
}
func NewDPoSProtocolManager ¶
func NewDPoSProtocolManager(eth *JuchainService, ethManager *ProtocolManager, config *config.ChainConfig, config2 *node.Config, mode downloader.SyncMode, networkId uint64, blockchain *core.BlockChain, engine consensus.Engine) (*DPoSProtocolManager, error)
NewProtocolManager returns a new obod sub protocol manager. The JuchainService sub protocol manages peers capable with the obod network.
func (*DPoSProtocolManager) Start ¶
func (pm *DPoSProtocolManager) Start()
func (*DPoSProtocolManager) Stop ¶
func (pm *DPoSProtocolManager) Stop()
type DVoteProtocolManager ¶
type DVoteProtocolManager struct {
// contains filtered or unexported fields
}
func NewDVoteProtocolManager ¶
func NewDVoteProtocolManager(eth *JuchainService, ethManager *ProtocolManager, config *config.ChainConfig, config2 *node.Config, mode downloader.SyncMode, networkId uint64, blockchain *core.BlockChain, engine consensus.Engine) (*DVoteProtocolManager, error)
NewProtocolManager returns a new ethereum sub protocol manager. The JuchainService sub protocol manages peers capable with the ethereum network.
func (*DVoteProtocolManager) Start ¶
func (pm *DVoteProtocolManager) Start(maxPeers int)
func (*DVoteProtocolManager) Stop ¶
func (pm *DVoteProtocolManager) Stop()
type DelegatedNodeInfoMapping ¶
type DelegatedNodeInfoMapping struct {
// contains filtered or unexported fields
}
type DelegatorAccessor ¶
type DelegatorAccessor interface {
Refresh() (delegatorsTable []string, delegatorNodes []*discover.Node, e error)
}
Delegator table refers to the voting contract.
type DelegatorAccessorImpl ¶
type DelegatorAccessorImpl struct {
// contains filtered or unexported fields
}
access production contract.
func (*DelegatorAccessorImpl) Refresh ¶
func (d *DelegatorAccessorImpl) Refresh() (delegatorsTable []string, delegatorNodes []*discover.Node, e error)
https://solidity.readthedocs.io/en/develop/abi-spec.html#use-of-dynamic-types The first four bytes of the call data for a function call specifies the function to be called. It is the first (left, high-order in big-endian) four bytes of the Keccak (SHA-3) hash of the signature of the function. The signature is defined as the canonical expression of the basic prototype, i.e. the function name with the parenthesised list of parameter types. Parameter types are split by a single comma no spaces are used. for example: bytes4(sha3("set(uint256[])")) "0xb4701401": "birusu()", "0x1ab88d26": "delegatorInfo(string)", "0x61b29d69": "delegatorList()", https://solidity.readthedocs.io/en/develop/abi-spec.html#examples please also refer to abi_test.go hw.Sum(data[:0])
type DelegatorAccessorTestImpl ¶
type DelegatorAccessorTestImpl struct {
// contains filtered or unexported fields
}
only for test purpose.
type ElectionInfo ¶
type ElectionInfo struct {
// contains filtered or unexported fields
}
type EthApiBackend ¶
type EthApiBackend struct {
// contains filtered or unexported fields
}
EthApiBackend implements ethapi.Backend for full nodes
func (*EthApiBackend) AccountManager ¶
func (b *EthApiBackend) AccountManager() *account.Manager
func (*EthApiBackend) BlockByNumber ¶
func (b *EthApiBackend) BlockByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Block, error)
func (*EthApiBackend) BloomStatus ¶
func (b *EthApiBackend) BloomStatus() (uint64, uint64)
func (*EthApiBackend) ChainConfig ¶
func (b *EthApiBackend) ChainConfig() *config.ChainConfig
func (*EthApiBackend) ChainDb ¶
func (b *EthApiBackend) ChainDb() store.Database
func (*EthApiBackend) CurrentBlock ¶
func (b *EthApiBackend) CurrentBlock() *types.Block
func (*EthApiBackend) Downloader ¶
func (b *EthApiBackend) Downloader() *downloader.Downloader
func (*EthApiBackend) EventMux ¶
func (b *EthApiBackend) EventMux() *event.TypeMux
func (*EthApiBackend) GetPoolNonce ¶
func (*EthApiBackend) GetPoolTransaction ¶
func (b *EthApiBackend) GetPoolTransaction(hash common.Hash) *types.Transaction
func (*EthApiBackend) GetPoolTransactions ¶
func (b *EthApiBackend) GetPoolTransactions() (types.Transactions, error)
func (*EthApiBackend) GetReceipts ¶
func (*EthApiBackend) HeaderByNumber ¶
func (b *EthApiBackend) HeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Header, error)
func (*EthApiBackend) ProtocolVersion ¶
func (b *EthApiBackend) ProtocolVersion() int
func (*EthApiBackend) SendTx ¶
func (b *EthApiBackend) SendTx(ctx context.Context, signedTx *types.Transaction) error
func (*EthApiBackend) ServiceFilter ¶
func (b *EthApiBackend) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession)
func (*EthApiBackend) SetHead ¶
func (b *EthApiBackend) SetHead(number uint64)
func (*EthApiBackend) StateAndHeaderByNumber ¶
func (b *EthApiBackend) StateAndHeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*state.StateDB, *types.Header, error)
func (*EthApiBackend) Stats ¶
func (b *EthApiBackend) Stats() (pending int, queued int)
func (*EthApiBackend) SubscribeChainEvent ¶
func (b *EthApiBackend) SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription
func (*EthApiBackend) SubscribeChainHeadEvent ¶
func (b *EthApiBackend) SubscribeChainHeadEvent(ch chan<- core.ChainHeadEvent) event.Subscription
func (*EthApiBackend) SubscribeChainSideEvent ¶
func (b *EthApiBackend) SubscribeChainSideEvent(ch chan<- core.ChainSideEvent) event.Subscription
func (*EthApiBackend) SubscribeLogsEvent ¶
func (b *EthApiBackend) SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription
func (*EthApiBackend) SubscribeRemovedLogsEvent ¶
func (b *EthApiBackend) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription
func (*EthApiBackend) SubscribeTxPreEvent ¶
func (b *EthApiBackend) SubscribeTxPreEvent(ch chan<- core.TxPreEvent) event.Subscription
func (*EthApiBackend) SuggestPrice ¶
func (*EthApiBackend) TxPoolContent ¶
func (b *EthApiBackend) TxPoolContent() (map[common.Address]types.Transactions, map[common.Address]types.Transactions)
type GigPeriodTable ¶
type GigPeriodTable struct {
// contains filtered or unexported fields
}
this GigPeriodTable only serves for delegators.
type JuchainService ¶
type JuchainService struct { ApiBackend *EthApiBackend // contains filtered or unexported fields }
Juchain implements the Juchain full node service.
func New ¶
func New(node *node.Node, ctx *node.ServiceContext, config0 *Config) (*JuchainService, error)
New creates a new JuchainService object (including the initialization of the common Juchain objects)
func (*JuchainService) APIs ¶
func (s *JuchainService) APIs() []rpc.API
APIs returns the collection of RPC services the ethereum package offers. NOTE, some of these services probably need to be moved to somewhere else.
func (*JuchainService) AccountManager ¶
func (s *JuchainService) AccountManager() *account.Manager
func (*JuchainService) BlockChain ¶
func (s *JuchainService) BlockChain() *core.BlockChain
func (*JuchainService) ChainDb ¶
func (s *JuchainService) ChainDb() store.Database
func (*JuchainService) Downloader ¶
func (s *JuchainService) Downloader() *downloader.Downloader
func (*JuchainService) Engine ¶
func (s *JuchainService) Engine() consensus.Engine
func (*JuchainService) EthVersion ¶
func (s *JuchainService) EthVersion() int
func (*JuchainService) Etherbase ¶
func (s *JuchainService) Etherbase() (eb common.Address, err error)
func (*JuchainService) EventMux ¶
func (s *JuchainService) EventMux() *event.TypeMux
func (*JuchainService) IsListening ¶
func (s *JuchainService) IsListening() bool
func (*JuchainService) NetVersion ¶
func (s *JuchainService) NetVersion() uint64
func (*JuchainService) Protocols ¶
func (s *JuchainService) Protocols() []p2p.Protocol
Protocols implements node.Service, returning all the currently configured network protocols to start.
func (*JuchainService) ResetWithGenesisBlock ¶
func (s *JuchainService) ResetWithGenesisBlock(gb *types.Block)
func (*JuchainService) SetEtherbase ¶
func (self *JuchainService) SetEtherbase(etherbase common.Address)
set in js console via admin interface or wrapper from cli flags
func (*JuchainService) Start ¶
func (s *JuchainService) Start(srvr *p2p.Server) error
Start implements node.Service, starting all internal goroutines needed by the JuchainService protocol implementation.
func (*JuchainService) Stop ¶
func (s *JuchainService) Stop() error
Stop implements node.Service, terminating all internal goroutines used by the JuchainService protocol.
func (*JuchainService) TxPool ¶
func (s *JuchainService) TxPool() *core.TxPool
type NodeInfo ¶
type NodeInfo struct { Network uint64 `json:"network"` // P2P network ID (1=Frontier, 2=Morden, Ropsten=3, Rinkeby=4) Difficulty *big.Int `json:"difficulty"` // Total difficulty of the host's blockchain Genesis common.Hash `json:"genesis"` // SHA3 hash of the host's genesis block Config *config.ChainConfig `json:"config"` // Chain configuration for the fork rules Head common.Hash `json:"head"` // SHA3 hash of the host's best owned block }
NodeInfo represents a short summary of the P2P sub-protocol metadata known about the host peer.
type PackageRequest ¶
type PackageResponse ¶
type PeerInfo ¶
type PeerInfo struct { Version uint `json:"version"` // JuchainService 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 JuchainService sub-protocol metadata known about a connected peer.
type PrivateAdminAPI ¶
type PrivateAdminAPI struct {
// contains filtered or unexported fields
}
PrivateAdminAPI is the collection of JuchainService full node-related APIs exposed over the private admin endpoint.
func NewPrivateAdminAPI ¶
func NewPrivateAdminAPI(eth *JuchainService) *PrivateAdminAPI
NewPrivateAdminAPI creates a new API definition for the full node private admin methods of the JuchainService service.
func (*PrivateAdminAPI) ExportChain ¶
func (api *PrivateAdminAPI) ExportChain(file string) (bool, error)
ExportChain exports the current blockchain into a local file.
func (*PrivateAdminAPI) ImportChain ¶
func (api *PrivateAdminAPI) ImportChain(file string) (bool, error)
ImportChain imports a blockchain from a local file.
type PrivateDebugAPI ¶
type PrivateDebugAPI struct {
// contains filtered or unexported fields
}
PrivateDebugAPI is the collection of JuchainService full node APIs exposed over the private debugging endpoint.
func NewPrivateDebugAPI ¶
func NewPrivateDebugAPI(config *config.ChainConfig, eth *JuchainService) *PrivateDebugAPI
NewPrivateDebugAPI creates a new API definition for the full node-related private debug methods of the JuchainService service.
func (*PrivateDebugAPI) GetBadBlocks ¶
func (api *PrivateDebugAPI) GetBadBlocks(ctx context.Context) ([]core.BadBlockArgs, error)
GetBadBLocks returns a list of the last 'bad blocks' that the client has seen on the network and returns them as a JSON list of block-hashes
func (*PrivateDebugAPI) GetModifiedAccountsByHash ¶
func (api *PrivateDebugAPI) GetModifiedAccountsByHash(startHash common.Hash, endHash *common.Hash) ([]common.Address, error)
GetModifiedAccountsByHash returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash, or storage hash.
With one parameter, returns the list of accounts modified in the specified block.
func (*PrivateDebugAPI) GetModifiedAccountsByNumber ¶
func (api *PrivateDebugAPI) GetModifiedAccountsByNumber(startNum uint64, endNum *uint64) ([]common.Address, error)
GetModifiedAccountsByumber returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash, or storage hash.
With one parameter, returns the list of accounts modified in the specified block.
func (*PrivateDebugAPI) Preimage ¶
Preimage is a debug API function that returns the preimage for a sha3 hash, if known.
func (*PrivateDebugAPI) StorageRangeAt ¶
func (api *PrivateDebugAPI) StorageRangeAt(ctx context.Context, blockHash common.Hash, txIndex int, contractAddress common.Address, keyStart hexutil.Bytes, maxResult int) (StorageRangeResult, error)
StorageRangeAt returns the storage at the given block height and transaction index.
func (*PrivateDebugAPI) TraceBlock ¶
func (api *PrivateDebugAPI) TraceBlock(ctx context.Context, blob []byte, config *TraceConfig) ([]*txTraceResult, error)
TraceBlock returns the structured logs created during the execution of EVM and returns them as a JSON object.
func (*PrivateDebugAPI) TraceBlockByHash ¶
func (api *PrivateDebugAPI) TraceBlockByHash(ctx context.Context, hash common.Hash, config *TraceConfig) ([]*txTraceResult, error)
TraceBlockByHash returns the structured logs created during the execution of EVM and returns them as a JSON object.
func (*PrivateDebugAPI) TraceBlockByNumber ¶
func (api *PrivateDebugAPI) TraceBlockByNumber(ctx context.Context, number rpc.BlockNumber, config *TraceConfig) ([]*txTraceResult, error)
TraceBlockByNumber returns the structured logs created during the execution of EVM and returns them as a JSON object.
func (*PrivateDebugAPI) TraceBlockFromFile ¶
func (api *PrivateDebugAPI) TraceBlockFromFile(ctx context.Context, file string, config *TraceConfig) ([]*txTraceResult, error)
TraceBlockFromFile returns the structured logs created during the execution of EVM and returns them as a JSON object.
func (*PrivateDebugAPI) TraceChain ¶
func (api *PrivateDebugAPI) TraceChain(ctx context.Context, start, end rpc.BlockNumber, config *TraceConfig) (*rpc.Subscription, error)
TraceChain returns the structured logs created during the execution of EVM between two blocks (excluding start) and returns them as a JSON object.
func (*PrivateDebugAPI) TraceTransaction ¶
func (api *PrivateDebugAPI) TraceTransaction(ctx context.Context, hash common.Hash, config *TraceConfig) (interface{}, error)
TraceTransaction returns the structured logs created during the execution of EVM and returns them as a JSON object.
type ProtocolManager ¶
type ProtocolManager struct { SubProtocols []p2p.Protocol // contains filtered or unexported fields }
func NewProtocolManager ¶
func NewProtocolManager(eth *JuchainService, config *config.ChainConfig, config2 *node.Config, mode downloader.SyncMode, networkId uint64, mux *event.TypeMux, txpool txPool, engine consensus.Engine, blockchain *core.BlockChain, chaindb store.Database) (*ProtocolManager, error)
NewProtocolManager returns a new JuchainService sub protocol manager. The JuchainService sub protocol manages peers capable with the JuchainService 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() *NodeInfo
NodeInfo retrieves some protocol metadata about the running host node.
func (*ProtocolManager) Start ¶
func (pm *ProtocolManager) Start(maxPeers int)
func (*ProtocolManager) Stop ¶
func (pm *ProtocolManager) Stop()
type PublicDebugAPI ¶
type PublicDebugAPI struct {
// contains filtered or unexported fields
}
PublicDebugAPI is the collection of JuchainService full node APIs exposed over the public debugging endpoint.
func NewPublicDebugAPI ¶
func NewPublicDebugAPI(eth *JuchainService) *PublicDebugAPI
NewPublicDebugAPI creates a new API definition for the full node- related public debug methods of the JuchainService service.
func (*PublicDebugAPI) DumpBlock ¶
func (api *PublicDebugAPI) DumpBlock(blockNr rpc.BlockNumber) (state.Dump, error)
DumpBlock retrieves the entire state of the database at a given block.
type PublicEthereumAPI ¶
type PublicEthereumAPI struct {
// contains filtered or unexported fields
}
PublicEthereumAPI provides an API to access JuchainService full node-related information.
func NewPublicEthereumAPI ¶
func NewPublicEthereumAPI(e *JuchainService) *PublicEthereumAPI
NewPublicEthereumAPI creates a new JuchainService protocol API for full nodes.
func (*PublicEthereumAPI) Coinbase ¶
func (api *PublicEthereumAPI) Coinbase() (common.Address, error)
Coinbase is the address that mining rewards will be send to (alias for Etherbase)
func (*PublicEthereumAPI) Etherbase ¶
func (api *PublicEthereumAPI) Etherbase() (common.Address, error)
Etherbase is the address that mining rewards will be send to
func (*PublicEthereumAPI) Hashrate ¶
func (api *PublicEthereumAPI) Hashrate() hexutil.Uint64
Hashrate returns the POW hashrate
type RegisterCandidateRequest ¶
type RegisterCandidateRequest struct {
CandidateId []byte
}
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service implements an JuchainService netstats reporting daemon that pushes local chain statistics up to a monitoring server.
func NewStats ¶
func NewStats(url string, ethServ *JuchainService) (*Service, error)
New returns a monitoring service ready for stats reporting.
func (*Service) APIs ¶
APIs implements node.Service, returning the RPC API endpoints provided by the stats service (nil as it doesn't provide any user callable APIs).
func (*Service) Protocols ¶
Protocols implements node.Service, returning the P2P network protocols used by the stats service (nil as it doesn't use the devp2p overlay network).
type StorageRangeResult ¶
type StorageRangeResult struct { Storage storageMap `json:"storage"` NextKey *common.Hash `json:"nextKey"` // nil if Storage includes the last key in the trie. }
StorageRangeResult is the result of a debug_storageRangeAt API call.
type SyncBigPeriodRequest ¶
type SyncBigPeriodResponse ¶
type TraceConfig ¶
TraceConfig holds extra parameters to trace functions.
type VoteElectionRequest ¶
type VoteElectionResponse ¶
type VotePresidentRequest ¶
type VotePresidentResponse ¶
type VotedPresidentBroadcast ¶
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 synchronisation.
|
Package fetcher contains the block announcement based synchronisation. |
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. |