Patch for concurrent iterator & others (onto v1.11.6) #386
@ -32,7 +32,6 @@ import (
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
"github.com/ethereum/go-ethereum/common/math"
|
||||
"github.com/ethereum/go-ethereum/consensus/clique"
|
||||
"github.com/ethereum/go-ethereum/consensus/ethash"
|
||||
"github.com/ethereum/go-ethereum/consensus/misc"
|
||||
"github.com/ethereum/go-ethereum/core"
|
||||
@ -1875,45 +1874,6 @@ func (api *PublicDebugAPI) GetBlockRlp(ctx context.Context, number uint64) (hexu
|
||||
return rlp.EncodeToBytes(block)
|
||||
}
|
||||
|
||||
// TestSignCliqueBlock fetches the given block number, and attempts to sign it as a clique header with the
|
||||
// given address, returning the address of the recovered signature
|
||||
//
|
||||
// This is a temporary method to debug the externalsigner integration,
|
||||
// TODO: Remove this method when the integration is mature
|
||||
func (api *PublicDebugAPI) TestSignCliqueBlock(ctx context.Context, address common.Address, number uint64) (common.Address, error) {
|
||||
block, _ := api.b.BlockByNumber(ctx, rpc.BlockNumber(number))
|
||||
if block == nil {
|
||||
return common.Address{}, fmt.Errorf("block #%d not found", number)
|
||||
}
|
||||
header := block.Header()
|
||||
header.Extra = make([]byte, 32+65)
|
||||
encoded := clique.CliqueRLP(header)
|
||||
|
||||
// Look up the wallet containing the requested signer
|
||||
account := accounts.Account{Address: address}
|
||||
wallet, err := api.b.AccountManager().Find(account)
|
||||
if err != nil {
|
||||
return common.Address{}, err
|
||||
}
|
||||
|
||||
signature, err := wallet.SignData(account, accounts.MimetypeClique, encoded)
|
||||
if err != nil {
|
||||
return common.Address{}, err
|
||||
}
|
||||
sealHash := clique.SealHash(header).Bytes()
|
||||
log.Info("test signing of clique block",
|
||||
"Sealhash", fmt.Sprintf("%x", sealHash),
|
||||
"signature", fmt.Sprintf("%x", signature))
|
||||
pubkey, err := crypto.Ecrecover(sealHash, signature)
|
||||
if err != nil {
|
||||
return common.Address{}, err
|
||||
}
|
||||
var signer common.Address
|
||||
copy(signer[:], crypto.Keccak256(pubkey[1:])[12:])
|
||||
|
||||
return signer, nil
|
||||
}
|
||||
|
||||
// PrintBlock retrieves a block and returns its pretty printed form.
|
||||
func (api *PublicDebugAPI) PrintBlock(ctx context.Context, number uint64) (string, error) {
|
||||
block, _ := api.b.BlockByNumber(ctx, rpc.BlockNumber(number))
|
||||
|
@ -233,12 +233,6 @@ web3._extend({
|
||||
call: 'debug_getBlockRlp',
|
||||
params: 1
|
||||
}),
|
||||
new web3._extend.Method({
|
||||
name: 'testSignCliqueBlock',
|
||||
call: 'debug_testSignCliqueBlock',
|
||||
params: 2,
|
||||
inputFormatter: [web3._extend.formatters.inputAddressFormatter, null],
|
||||
}),
|
||||
new web3._extend.Method({
|
||||
name: 'setHead',
|
||||
call: 'debug_setHead',
|
||||
|
Loading…
Reference in New Issue
Block a user