mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
Revert "core,console: replace noarg fmt.Errorf with errors.New (#27332)"
This reverts commit a8091f2c34.
This commit is contained in:
parent
cb886eb636
commit
482f17d2de
10 changed files with 41 additions and 47 deletions
|
|
@ -18,7 +18,6 @@ package console
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
@ -78,18 +77,18 @@ func (b *bridge) NewAccount(call jsre.Call) (goja.Value, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if password != confirm {
|
if password != confirm {
|
||||||
return nil, errors.New("passwords don't match!")
|
return nil, fmt.Errorf("passwords don't match!")
|
||||||
}
|
}
|
||||||
// A single string password was specified, use that
|
// A single string password was specified, use that
|
||||||
case len(call.Arguments) == 1 && call.Argument(0).ToString() != nil:
|
case len(call.Arguments) == 1 && call.Argument(0).ToString() != nil:
|
||||||
password = call.Argument(0).ToString().String()
|
password = call.Argument(0).ToString().String()
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("expected 0 or 1 string argument")
|
return nil, fmt.Errorf("expected 0 or 1 string argument")
|
||||||
}
|
}
|
||||||
// Password acquired, execute the call and return
|
// Password acquired, execute the call and return
|
||||||
newAccount, callable := goja.AssertFunction(getJeth(call.VM).Get("newAccount"))
|
newAccount, callable := goja.AssertFunction(getJeth(call.VM).Get("newAccount"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.newAccount is not callable")
|
return nil, fmt.Errorf("jeth.newAccount is not callable")
|
||||||
}
|
}
|
||||||
ret, err := newAccount(goja.Null(), call.VM.ToValue(password))
|
ret, err := newAccount(goja.Null(), call.VM.ToValue(password))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -103,7 +102,7 @@ func (b *bridge) NewAccount(call jsre.Call) (goja.Value, error) {
|
||||||
func (b *bridge) OpenWallet(call jsre.Call) (goja.Value, error) {
|
func (b *bridge) OpenWallet(call jsre.Call) (goja.Value, error) {
|
||||||
// Make sure we have a wallet specified to open
|
// Make sure we have a wallet specified to open
|
||||||
if call.Argument(0).ToObject(call.VM).ClassName() != "String" {
|
if call.Argument(0).ToObject(call.VM).ClassName() != "String" {
|
||||||
return nil, errors.New("first argument must be the wallet URL to open")
|
return nil, fmt.Errorf("first argument must be the wallet URL to open")
|
||||||
}
|
}
|
||||||
wallet := call.Argument(0)
|
wallet := call.Argument(0)
|
||||||
|
|
||||||
|
|
@ -116,7 +115,7 @@ func (b *bridge) OpenWallet(call jsre.Call) (goja.Value, error) {
|
||||||
// Open the wallet and return if successful in itself
|
// Open the wallet and return if successful in itself
|
||||||
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.openWallet is not callable")
|
return nil, fmt.Errorf("jeth.openWallet is not callable")
|
||||||
}
|
}
|
||||||
val, err := openWallet(goja.Null(), wallet, passwd)
|
val, err := openWallet(goja.Null(), wallet, passwd)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|
@ -199,7 +198,7 @@ func (b *bridge) readPassphraseAndReopenWallet(call jsre.Call) (goja.Value, erro
|
||||||
}
|
}
|
||||||
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.openWallet is not callable")
|
return nil, fmt.Errorf("jeth.openWallet is not callable")
|
||||||
}
|
}
|
||||||
return openWallet(goja.Null(), wallet, call.VM.ToValue(input))
|
return openWallet(goja.Null(), wallet, call.VM.ToValue(input))
|
||||||
}
|
}
|
||||||
|
|
@ -220,7 +219,7 @@ func (b *bridge) readPinAndReopenWallet(call jsre.Call) (goja.Value, error) {
|
||||||
}
|
}
|
||||||
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
openWallet, callable := goja.AssertFunction(getJeth(call.VM).Get("openWallet"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.openWallet is not callable")
|
return nil, fmt.Errorf("jeth.openWallet is not callable")
|
||||||
}
|
}
|
||||||
return openWallet(goja.Null(), wallet, call.VM.ToValue(input))
|
return openWallet(goja.Null(), wallet, call.VM.ToValue(input))
|
||||||
}
|
}
|
||||||
|
|
@ -231,13 +230,13 @@ func (b *bridge) readPinAndReopenWallet(call jsre.Call) (goja.Value, error) {
|
||||||
// the RPC call.
|
// the RPC call.
|
||||||
func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
||||||
if len(call.Arguments) < 1 {
|
if len(call.Arguments) < 1 {
|
||||||
return nil, errors.New("usage: unlockAccount(account, [ password, duration ])")
|
return nil, fmt.Errorf("usage: unlockAccount(account, [ password, duration ])")
|
||||||
}
|
}
|
||||||
|
|
||||||
account := call.Argument(0)
|
account := call.Argument(0)
|
||||||
// Make sure we have an account specified to unlock.
|
// Make sure we have an account specified to unlock.
|
||||||
if goja.IsUndefined(account) || goja.IsNull(account) || account.ExportType().Kind() != reflect.String {
|
if goja.IsUndefined(account) || goja.IsNull(account) || account.ExportType().Kind() != reflect.String {
|
||||||
return nil, errors.New("first argument must be the account to unlock")
|
return nil, fmt.Errorf("first argument must be the account to unlock")
|
||||||
}
|
}
|
||||||
|
|
||||||
// If password is not given or is the null value, prompt the user for it.
|
// If password is not given or is the null value, prompt the user for it.
|
||||||
|
|
@ -251,7 +250,7 @@ func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
||||||
passwd = call.VM.ToValue(input)
|
passwd = call.VM.ToValue(input)
|
||||||
} else {
|
} else {
|
||||||
if call.Argument(1).ExportType().Kind() != reflect.String {
|
if call.Argument(1).ExportType().Kind() != reflect.String {
|
||||||
return nil, errors.New("password must be a string")
|
return nil, fmt.Errorf("password must be a string")
|
||||||
}
|
}
|
||||||
passwd = call.Argument(1)
|
passwd = call.Argument(1)
|
||||||
}
|
}
|
||||||
|
|
@ -260,7 +259,7 @@ func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
||||||
duration := goja.Null()
|
duration := goja.Null()
|
||||||
if !goja.IsUndefined(call.Argument(2)) && !goja.IsNull(call.Argument(2)) {
|
if !goja.IsUndefined(call.Argument(2)) && !goja.IsNull(call.Argument(2)) {
|
||||||
if !isNumber(call.Argument(2)) {
|
if !isNumber(call.Argument(2)) {
|
||||||
return nil, errors.New("unlock duration must be a number")
|
return nil, fmt.Errorf("unlock duration must be a number")
|
||||||
}
|
}
|
||||||
duration = call.Argument(2)
|
duration = call.Argument(2)
|
||||||
}
|
}
|
||||||
|
|
@ -268,7 +267,7 @@ func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
||||||
// Send the request to the backend and return.
|
// Send the request to the backend and return.
|
||||||
unlockAccount, callable := goja.AssertFunction(getJeth(call.VM).Get("unlockAccount"))
|
unlockAccount, callable := goja.AssertFunction(getJeth(call.VM).Get("unlockAccount"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.unlockAccount is not callable")
|
return nil, fmt.Errorf("jeth.unlockAccount is not callable")
|
||||||
}
|
}
|
||||||
return unlockAccount(goja.Null(), account, passwd, duration)
|
return unlockAccount(goja.Null(), account, passwd, duration)
|
||||||
}
|
}
|
||||||
|
|
@ -278,7 +277,7 @@ func (b *bridge) UnlockAccount(call jsre.Call) (goja.Value, error) {
|
||||||
// jeth.sign) with it to actually execute the RPC call.
|
// jeth.sign) with it to actually execute the RPC call.
|
||||||
func (b *bridge) Sign(call jsre.Call) (goja.Value, error) {
|
func (b *bridge) Sign(call jsre.Call) (goja.Value, error) {
|
||||||
if nArgs := len(call.Arguments); nArgs < 2 {
|
if nArgs := len(call.Arguments); nArgs < 2 {
|
||||||
return nil, errors.New("usage: sign(message, account, [ password ])")
|
return nil, fmt.Errorf("usage: sign(message, account, [ password ])")
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
message = call.Argument(0)
|
message = call.Argument(0)
|
||||||
|
|
@ -287,10 +286,10 @@ func (b *bridge) Sign(call jsre.Call) (goja.Value, error) {
|
||||||
)
|
)
|
||||||
|
|
||||||
if goja.IsUndefined(message) || message.ExportType().Kind() != reflect.String {
|
if goja.IsUndefined(message) || message.ExportType().Kind() != reflect.String {
|
||||||
return nil, errors.New("first argument must be the message to sign")
|
return nil, fmt.Errorf("first argument must be the message to sign")
|
||||||
}
|
}
|
||||||
if goja.IsUndefined(account) || account.ExportType().Kind() != reflect.String {
|
if goja.IsUndefined(account) || account.ExportType().Kind() != reflect.String {
|
||||||
return nil, errors.New("second argument must be the account to sign with")
|
return nil, fmt.Errorf("second argument must be the account to sign with")
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the password is not given or null ask the user and ensure password is a string
|
// if the password is not given or null ask the user and ensure password is a string
|
||||||
|
|
@ -302,13 +301,13 @@ func (b *bridge) Sign(call jsre.Call) (goja.Value, error) {
|
||||||
}
|
}
|
||||||
passwd = call.VM.ToValue(input)
|
passwd = call.VM.ToValue(input)
|
||||||
} else if passwd.ExportType().Kind() != reflect.String {
|
} else if passwd.ExportType().Kind() != reflect.String {
|
||||||
return nil, errors.New("third argument must be the password to unlock the account")
|
return nil, fmt.Errorf("third argument must be the password to unlock the account")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the request to the backend and return
|
// Send the request to the backend and return
|
||||||
sign, callable := goja.AssertFunction(getJeth(call.VM).Get("sign"))
|
sign, callable := goja.AssertFunction(getJeth(call.VM).Get("sign"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("jeth.sign is not callable")
|
return nil, fmt.Errorf("jeth.sign is not callable")
|
||||||
}
|
}
|
||||||
return sign(goja.Null(), message, account, passwd)
|
return sign(goja.Null(), message, account, passwd)
|
||||||
}
|
}
|
||||||
|
|
@ -316,11 +315,11 @@ func (b *bridge) Sign(call jsre.Call) (goja.Value, error) {
|
||||||
// Sleep will block the console for the specified number of seconds.
|
// Sleep will block the console for the specified number of seconds.
|
||||||
func (b *bridge) Sleep(call jsre.Call) (goja.Value, error) {
|
func (b *bridge) Sleep(call jsre.Call) (goja.Value, error) {
|
||||||
if nArgs := len(call.Arguments); nArgs < 1 {
|
if nArgs := len(call.Arguments); nArgs < 1 {
|
||||||
return nil, errors.New("usage: sleep(<number of seconds>)")
|
return nil, fmt.Errorf("usage: sleep(<number of seconds>)")
|
||||||
}
|
}
|
||||||
sleepObj := call.Argument(0)
|
sleepObj := call.Argument(0)
|
||||||
if goja.IsUndefined(sleepObj) || goja.IsNull(sleepObj) || !isNumber(sleepObj) {
|
if goja.IsUndefined(sleepObj) || goja.IsNull(sleepObj) || !isNumber(sleepObj) {
|
||||||
return nil, errors.New("usage: sleep(<number of seconds>)")
|
return nil, fmt.Errorf("usage: sleep(<number of seconds>)")
|
||||||
}
|
}
|
||||||
sleep := sleepObj.ToFloat()
|
sleep := sleepObj.ToFloat()
|
||||||
time.Sleep(time.Duration(sleep * float64(time.Second)))
|
time.Sleep(time.Duration(sleep * float64(time.Second)))
|
||||||
|
|
@ -337,17 +336,17 @@ func (b *bridge) SleepBlocks(call jsre.Call) (goja.Value, error) {
|
||||||
)
|
)
|
||||||
nArgs := len(call.Arguments)
|
nArgs := len(call.Arguments)
|
||||||
if nArgs == 0 {
|
if nArgs == 0 {
|
||||||
return nil, errors.New("usage: sleepBlocks(<n blocks>[, max sleep in seconds])")
|
return nil, fmt.Errorf("usage: sleepBlocks(<n blocks>[, max sleep in seconds])")
|
||||||
}
|
}
|
||||||
if nArgs >= 1 {
|
if nArgs >= 1 {
|
||||||
if goja.IsNull(call.Argument(0)) || goja.IsUndefined(call.Argument(0)) || !isNumber(call.Argument(0)) {
|
if goja.IsNull(call.Argument(0)) || goja.IsUndefined(call.Argument(0)) || !isNumber(call.Argument(0)) {
|
||||||
return nil, errors.New("expected number as first argument")
|
return nil, fmt.Errorf("expected number as first argument")
|
||||||
}
|
}
|
||||||
blocks = call.Argument(0).ToInteger()
|
blocks = call.Argument(0).ToInteger()
|
||||||
}
|
}
|
||||||
if nArgs >= 2 {
|
if nArgs >= 2 {
|
||||||
if goja.IsNull(call.Argument(1)) || goja.IsUndefined(call.Argument(1)) || !isNumber(call.Argument(1)) {
|
if goja.IsNull(call.Argument(1)) || goja.IsUndefined(call.Argument(1)) || !isNumber(call.Argument(1)) {
|
||||||
return nil, errors.New("expected number as second argument")
|
return nil, fmt.Errorf("expected number as second argument")
|
||||||
}
|
}
|
||||||
sleep = call.Argument(1).ToInteger()
|
sleep = call.Argument(1).ToInteger()
|
||||||
}
|
}
|
||||||
|
|
@ -422,7 +421,7 @@ func (b *bridge) Send(call jsre.Call) (goja.Value, error) {
|
||||||
JSON := call.VM.Get("JSON").ToObject(call.VM)
|
JSON := call.VM.Get("JSON").ToObject(call.VM)
|
||||||
parse, callable := goja.AssertFunction(JSON.Get("parse"))
|
parse, callable := goja.AssertFunction(JSON.Get("parse"))
|
||||||
if !callable {
|
if !callable {
|
||||||
return nil, errors.New("JSON.parse is not a function")
|
return nil, fmt.Errorf("JSON.parse is not a function")
|
||||||
}
|
}
|
||||||
resultVal, err := parse(goja.Null(), call.VM.ToValue(string(result)))
|
resultVal, err := parse(goja.Null(), call.VM.ToValue(string(result)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/consensus"
|
"github.com/ethereum/go-ethereum/consensus"
|
||||||
|
|
@ -72,14 +71,14 @@ func (v *BlockValidator) ValidateBody(block *types.Block) error {
|
||||||
if header.WithdrawalsHash != nil {
|
if header.WithdrawalsHash != nil {
|
||||||
// Withdrawals list must be present in body after Shanghai.
|
// Withdrawals list must be present in body after Shanghai.
|
||||||
if block.Withdrawals() == nil {
|
if block.Withdrawals() == nil {
|
||||||
return errors.New("missing withdrawals in block body")
|
return fmt.Errorf("missing withdrawals in block body")
|
||||||
}
|
}
|
||||||
if hash := types.DeriveSha(block.Withdrawals(), trie.NewStackTrie(nil)); hash != *header.WithdrawalsHash {
|
if hash := types.DeriveSha(block.Withdrawals(), trie.NewStackTrie(nil)); hash != *header.WithdrawalsHash {
|
||||||
return fmt.Errorf("withdrawals root hash mismatch (header value %x, calculated %x)", *header.WithdrawalsHash, hash)
|
return fmt.Errorf("withdrawals root hash mismatch (header value %x, calculated %x)", *header.WithdrawalsHash, hash)
|
||||||
}
|
}
|
||||||
} else if block.Withdrawals() != nil {
|
} else if block.Withdrawals() != nil {
|
||||||
// Withdrawals are not allowed prior to shanghai fork
|
// Withdrawals are not allowed prior to shanghai fork
|
||||||
return errors.New("withdrawals present in block body")
|
return fmt.Errorf("withdrawals present in block body")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !v.bc.HasBlockAndState(block.ParentHash(), block.NumberU64()-1) {
|
if !v.bc.HasBlockAndState(block.ParentHash(), block.NumberU64()-1) {
|
||||||
|
|
|
||||||
|
|
@ -87,8 +87,6 @@ var (
|
||||||
|
|
||||||
errInsertionInterrupted = errors.New("insertion is interrupted")
|
errInsertionInterrupted = errors.New("insertion is interrupted")
|
||||||
errChainStopped = errors.New("blockchain is stopped")
|
errChainStopped = errors.New("blockchain is stopped")
|
||||||
errInvalidOldChain = errors.New("invalid old chain")
|
|
||||||
errInvalidNewChain = errors.New("invalid new chain")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -867,7 +865,7 @@ func (bc *BlockChain) ExportN(w io.Writer, first uint64, last uint64) error {
|
||||||
return fmt.Errorf("export failed on #%d: not found", nr)
|
return fmt.Errorf("export failed on #%d: not found", nr)
|
||||||
}
|
}
|
||||||
if nr > first && block.ParentHash() != parentHash {
|
if nr > first && block.ParentHash() != parentHash {
|
||||||
return errors.New("export failed: chain reorg during export")
|
return fmt.Errorf("export failed: chain reorg during export")
|
||||||
}
|
}
|
||||||
parentHash = block.Hash()
|
parentHash = block.Hash()
|
||||||
if err := block.EncodeRLP(w); err != nil {
|
if err := block.EncodeRLP(w); err != nil {
|
||||||
|
|
@ -2099,10 +2097,10 @@ func (bc *BlockChain) reorg(oldHead *types.Header, newHead *types.Block) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if oldBlock == nil {
|
if oldBlock == nil {
|
||||||
return errInvalidOldChain
|
return errors.New("invalid old chain")
|
||||||
}
|
}
|
||||||
if newBlock == nil {
|
if newBlock == nil {
|
||||||
return errInvalidNewChain
|
return errors.New("invalid new chain")
|
||||||
}
|
}
|
||||||
// Both sides of the reorg are at the same number, reduce both until the common
|
// Both sides of the reorg are at the same number, reduce both until the common
|
||||||
// ancestor is found
|
// ancestor is found
|
||||||
|
|
@ -2122,11 +2120,11 @@ func (bc *BlockChain) reorg(oldHead *types.Header, newHead *types.Block) error {
|
||||||
// Step back with both chains
|
// Step back with both chains
|
||||||
oldBlock = bc.GetBlock(oldBlock.ParentHash(), oldBlock.NumberU64()-1)
|
oldBlock = bc.GetBlock(oldBlock.ParentHash(), oldBlock.NumberU64()-1)
|
||||||
if oldBlock == nil {
|
if oldBlock == nil {
|
||||||
return errInvalidOldChain
|
return fmt.Errorf("invalid old chain")
|
||||||
}
|
}
|
||||||
newBlock = bc.GetBlock(newBlock.ParentHash(), newBlock.NumberU64()-1)
|
newBlock = bc.GetBlock(newBlock.ParentHash(), newBlock.NumberU64()-1)
|
||||||
if newBlock == nil {
|
if newBlock == nil {
|
||||||
return errInvalidNewChain
|
return fmt.Errorf("invalid new chain")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ package core
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
@ -404,7 +403,7 @@ func (c *ChainIndexer) processSection(section uint64, lastHead common.Hash) (com
|
||||||
if header == nil {
|
if header == nil {
|
||||||
return common.Hash{}, fmt.Errorf("block #%d [%x..] not found", number, hash[:4])
|
return common.Hash{}, fmt.Errorf("block #%d [%x..] not found", number, hash[:4])
|
||||||
} else if header.ParentHash != lastHead {
|
} else if header.ParentHash != lastHead {
|
||||||
return common.Hash{}, errors.New("chain reorged during section processing")
|
return common.Hash{}, fmt.Errorf("chain reorged during section processing")
|
||||||
}
|
}
|
||||||
if err := c.backend.Process(c.ctx, header); err != nil {
|
if err := c.backend.Process(c.ctx, header); err != nil {
|
||||||
return common.Hash{}, err
|
return common.Hash{}, err
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ func ReadGenesis(db ethdb.Database) (*Genesis, error) {
|
||||||
}
|
}
|
||||||
blob := rawdb.ReadGenesisStateSpec(db, stored)
|
blob := rawdb.ReadGenesisStateSpec(db, stored)
|
||||||
if blob == nil {
|
if blob == nil {
|
||||||
return nil, errors.New("genesis state missing from db")
|
return nil, fmt.Errorf("genesis state missing from db")
|
||||||
}
|
}
|
||||||
if len(blob) != 0 {
|
if len(blob) != 0 {
|
||||||
if err := genesis.Alloc.UnmarshalJSON(blob); err != nil {
|
if err := genesis.Alloc.UnmarshalJSON(blob); err != nil {
|
||||||
|
|
@ -82,11 +82,11 @@ func ReadGenesis(db ethdb.Database) (*Genesis, error) {
|
||||||
}
|
}
|
||||||
genesis.Config = rawdb.ReadChainConfig(db, stored)
|
genesis.Config = rawdb.ReadChainConfig(db, stored)
|
||||||
if genesis.Config == nil {
|
if genesis.Config == nil {
|
||||||
return nil, errors.New("genesis config missing from db")
|
return nil, fmt.Errorf("genesis config missing from db")
|
||||||
}
|
}
|
||||||
genesisBlock := rawdb.ReadBlock(db, stored, 0)
|
genesisBlock := rawdb.ReadBlock(db, stored, 0)
|
||||||
if genesisBlock == nil {
|
if genesisBlock == nil {
|
||||||
return nil, errors.New("genesis block missing from db")
|
return nil, fmt.Errorf("genesis block missing from db")
|
||||||
}
|
}
|
||||||
genesisHeader := genesisBlock.Header()
|
genesisHeader := genesisBlock.Header()
|
||||||
genesis.Nonce = genesisHeader.Nonce.Uint64()
|
genesis.Nonce = genesisHeader.Nonce.Uint64()
|
||||||
|
|
@ -366,7 +366,7 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen
|
||||||
// are returned to the caller unless we're already at block zero.
|
// are returned to the caller unless we're already at block zero.
|
||||||
head := rawdb.ReadHeadHeader(db)
|
head := rawdb.ReadHeadHeader(db)
|
||||||
if head == nil {
|
if head == nil {
|
||||||
return newcfg, stored, errors.New("missing head header")
|
return newcfg, stored, fmt.Errorf("missing head header")
|
||||||
}
|
}
|
||||||
compatErr := storedcfg.CheckCompatible(newcfg, head.Number.Uint64(), head.Time)
|
compatErr := storedcfg.CheckCompatible(newcfg, head.Number.Uint64(), head.Time)
|
||||||
if compatErr != nil && ((head.Number.Uint64() != 0 && compatErr.RewindToBlock != 0) || (head.Time != 0 && compatErr.RewindToTime != 0)) {
|
if compatErr != nil && ((head.Number.Uint64() != 0 && compatErr.RewindToBlock != 0) || (head.Time != 0 && compatErr.RewindToTime != 0)) {
|
||||||
|
|
|
||||||
|
|
@ -434,7 +434,7 @@ func (f *Freezer) MigrateTable(kind string, convert convertLegacyFn) error {
|
||||||
// TODO(s1na): This is a sanity-check since as of now no process does tail-deletion. But the migration
|
// TODO(s1na): This is a sanity-check since as of now no process does tail-deletion. But the migration
|
||||||
// process assumes no deletion at tail and needs to be modified to account for that.
|
// process assumes no deletion at tail and needs to be modified to account for that.
|
||||||
if table.itemOffset.Load() > 0 || table.itemHidden.Load() > 0 {
|
if table.itemOffset.Load() > 0 || table.itemHidden.Load() > 0 {
|
||||||
return errors.New("migration not supported for tail-deleted freezers")
|
return fmt.Errorf("migration not supported for tail-deleted freezers")
|
||||||
}
|
}
|
||||||
ancientsPath := filepath.Dir(table.index.Name())
|
ancientsPath := filepath.Dir(table.index.Name())
|
||||||
// Set up new dir for the migrated table, the content of which
|
// Set up new dir for the migrated table, the content of which
|
||||||
|
|
|
||||||
|
|
@ -305,7 +305,7 @@ func iterateJournal(db ethdb.KeyValueReader, callback journalCallback) error {
|
||||||
}
|
}
|
||||||
if baseRoot := rawdb.ReadSnapshotRoot(db); baseRoot != parent {
|
if baseRoot := rawdb.ReadSnapshotRoot(db); baseRoot != parent {
|
||||||
log.Warn("Loaded snapshot journal", "diskroot", baseRoot, "diffs", "unmatched")
|
log.Warn("Loaded snapshot journal", "diskroot", baseRoot, "diffs", "unmatched")
|
||||||
return errors.New("mismatched disk and diff layers")
|
return fmt.Errorf("mismatched disk and diff layers")
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
|
|
@ -93,7 +92,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg
|
||||||
// Fail if Shanghai not enabled and len(withdrawals) is non-zero.
|
// Fail if Shanghai not enabled and len(withdrawals) is non-zero.
|
||||||
withdrawals := block.Withdrawals()
|
withdrawals := block.Withdrawals()
|
||||||
if len(withdrawals) > 0 && !p.config.IsShanghai(block.Number(), block.Time()) {
|
if len(withdrawals) > 0 && !p.config.IsShanghai(block.Number(), block.Time()) {
|
||||||
return nil, nil, 0, errors.New("withdrawals before shanghai")
|
return nil, nil, 0, fmt.Errorf("withdrawals before shanghai")
|
||||||
}
|
}
|
||||||
// Finalize the block, applying any consensus engine specific extras (e.g. block rewards)
|
// Finalize the block, applying any consensus engine specific extras (e.g. block rewards)
|
||||||
p.engine.Finalize(p.bc, header, statedb, block.Transactions(), block.Uncles(), withdrawals)
|
p.engine.Finalize(p.bc, header, statedb, block.Transactions(), block.Uncles(), withdrawals)
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ package types
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
|
@ -97,7 +97,7 @@ var unmarshalLogTests = map[string]struct {
|
||||||
},
|
},
|
||||||
"missing data": {
|
"missing data": {
|
||||||
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
||||||
wantError: errors.New("missing required field 'data' for Log"),
|
wantError: fmt.Errorf("missing required field 'data' for Log"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -526,7 +526,7 @@ func assertEqual(orig *Transaction, cpy *Transaction) error {
|
||||||
}
|
}
|
||||||
if orig.AccessList() != nil {
|
if orig.AccessList() != nil {
|
||||||
if !reflect.DeepEqual(orig.AccessList(), cpy.AccessList()) {
|
if !reflect.DeepEqual(orig.AccessList(), cpy.AccessList()) {
|
||||||
return errors.New("access list wrong!")
|
return fmt.Errorf("access list wrong!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue