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"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
"github.com/ethereum/go-ethereum/common/math"
|
"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/ethash"
|
||||||
"github.com/ethereum/go-ethereum/consensus/misc"
|
"github.com/ethereum/go-ethereum/consensus/misc"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
@ -1875,45 +1874,6 @@ func (api *PublicDebugAPI) GetBlockRlp(ctx context.Context, number uint64) (hexu
|
|||||||
return rlp.EncodeToBytes(block)
|
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.
|
// PrintBlock retrieves a block and returns its pretty printed form.
|
||||||
func (api *PublicDebugAPI) PrintBlock(ctx context.Context, number uint64) (string, error) {
|
func (api *PublicDebugAPI) PrintBlock(ctx context.Context, number uint64) (string, error) {
|
||||||
block, _ := api.b.BlockByNumber(ctx, rpc.BlockNumber(number))
|
block, _ := api.b.BlockByNumber(ctx, rpc.BlockNumber(number))
|
||||||
|
@ -233,12 +233,6 @@ web3._extend({
|
|||||||
call: 'debug_getBlockRlp',
|
call: 'debug_getBlockRlp',
|
||||||
params: 1
|
params: 1
|
||||||
}),
|
}),
|
||||||
new web3._extend.Method({
|
|
||||||
name: 'testSignCliqueBlock',
|
|
||||||
call: 'debug_testSignCliqueBlock',
|
|
||||||
params: 2,
|
|
||||||
inputFormatter: [web3._extend.formatters.inputAddressFormatter, null],
|
|
||||||
}),
|
|
||||||
new web3._extend.Method({
|
new web3._extend.Method({
|
||||||
name: 'setHead',
|
name: 'setHead',
|
||||||
call: 'debug_setHead',
|
call: 'debug_setHead',
|
||||||
|
Loading…
Reference in New Issue
Block a user