mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-05 18:42:19 +00:00
6f0a02ac42
Implements `bor_getSnapshotProposerSequence` RPC method which returns an ordered set of validators (selected to mine) for a given block number. ``` > curl http://localhost:8545 -X POST --data '{"jsonrpc":"2.0","method":"bor_getSnapshotProposerSequence","params":["0x235A310"],"id":1}' -H "Content-Type: application/json" { "jsonrpc": "2.0", "id": 1, "result": { "Signers": [ { "Signer": "0xcfef2a3dc244ef7d0fb93c45e762d671445c4569", "Difficulty": 5 }, { "Signer": "0x3a22c8bc68e98b0faf40f349dd2b2890fae01484", "Difficulty": 4 }, { "Signer": "0xbe188d6641e8b680743a4815dfa0f6208038960f", "Difficulty": 3 }, { "Signer": "0xc26880a0af2ea0c7e8130e6ec47af756465452e8", "Difficulty": 2 }, { "Signer": "0xc275dc8be39f50d12f66b6a63629c39da5bae5bd", "Difficulty": 1 } ], "Diff": 5, "Author": "0xcfef2a3dc244ef7d0fb93c45e762d671445c4569" } } ```
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package commands
|
|
|
|
import (
|
|
"github.com/ledgerwatch/erigon-lib/common"
|
|
"github.com/ledgerwatch/erigon-lib/kv"
|
|
|
|
"github.com/ledgerwatch/erigon/consensus/bor/valset"
|
|
"github.com/ledgerwatch/erigon/rpc"
|
|
)
|
|
|
|
// BorAPI Bor specific routines
|
|
type BorAPI interface {
|
|
// Bor snapshot related (see ./bor_snapshot.go)
|
|
GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)
|
|
GetAuthor(number *rpc.BlockNumber) (*common.Address, error)
|
|
GetSnapshotAtHash(hash common.Hash) (*Snapshot, error)
|
|
GetSigners(number *rpc.BlockNumber) ([]common.Address, error)
|
|
GetSignersAtHash(hash common.Hash) ([]common.Address, error)
|
|
GetCurrentProposer() (common.Address, error)
|
|
GetCurrentValidators() ([]*valset.Validator, error)
|
|
GetSnapshotProposerSequence(blockNrOrHash *rpc.BlockNumberOrHash) (BlockSigners, error)
|
|
GetRootHash(start uint64, end uint64) (string, error)
|
|
}
|
|
|
|
// BorImpl is implementation of the BorAPI interface
|
|
type BorImpl struct {
|
|
*BaseAPI
|
|
db kv.RoDB // the chain db
|
|
borDb kv.RoDB // the consensus db
|
|
}
|
|
|
|
// NewBorAPI returns BorImpl instance
|
|
func NewBorAPI(base *BaseAPI, db kv.RoDB, borDb kv.RoDB) *BorImpl {
|
|
return &BorImpl{
|
|
BaseAPI: base,
|
|
db: db,
|
|
borDb: borDb,
|
|
}
|
|
}
|