mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 11:41:19 +00:00
Unskip SimpleTx3, check err in pre/post state validations
This commit is contained in:
parent
0b53a5c673
commit
b08abe64e4
@ -208,10 +208,22 @@ func (t *BlockTest) InsertPreState(ethereum *eth.Ethereum) (*state.StateDB, erro
|
|||||||
db := ethereum.StateDb()
|
db := ethereum.StateDb()
|
||||||
statedb := state.New(common.Hash{}, db)
|
statedb := state.New(common.Hash{}, db)
|
||||||
for addrString, acct := range t.preAccounts {
|
for addrString, acct := range t.preAccounts {
|
||||||
addr, _ := hex.DecodeString(addrString)
|
addr, err := hex.DecodeString(addrString)
|
||||||
code, _ := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
|
if err != nil {
|
||||||
balance, _ := new(big.Int).SetString(acct.Balance, 0)
|
return nil, err
|
||||||
nonce, _ := strconv.ParseUint(acct.Nonce, 16, 64)
|
}
|
||||||
|
code, err := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
balance, ok := new(big.Int).SetString(acct.Balance, 0)
|
||||||
|
if !ok {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
nonce, err := strconv.ParseUint(prepInt(16, acct.Nonce), 16, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if acct.PrivateKey != "" {
|
if acct.PrivateKey != "" {
|
||||||
privkey, err := hex.DecodeString(strings.TrimPrefix(acct.PrivateKey, "0x"))
|
privkey, err := hex.DecodeString(strings.TrimPrefix(acct.PrivateKey, "0x"))
|
||||||
@ -365,10 +377,22 @@ func (s *BlockTest) validateBlockHeader(h *btHeader, h2 *types.Header) error {
|
|||||||
func (t *BlockTest) ValidatePostState(statedb *state.StateDB) error {
|
func (t *BlockTest) ValidatePostState(statedb *state.StateDB) error {
|
||||||
for addrString, acct := range t.preAccounts {
|
for addrString, acct := range t.preAccounts {
|
||||||
// XXX: is is worth it checking for errors here?
|
// XXX: is is worth it checking for errors here?
|
||||||
addr, _ := hex.DecodeString(addrString)
|
addr, err := hex.DecodeString(addrString)
|
||||||
code, _ := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
|
if err != nil {
|
||||||
balance, _ := new(big.Int).SetString(acct.Balance, 0)
|
return err
|
||||||
nonce, _ := strconv.ParseUint(acct.Nonce, 16, 64)
|
}
|
||||||
|
code, err := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
balance, ok := new(big.Int).SetString(acct.Balance, 0)
|
||||||
|
if !ok {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
nonce, err := strconv.ParseUint(prepInt(16, acct.Nonce), 16, 64)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// address is indirectly verified by the other fields, as it's the db key
|
// address is indirectly verified by the other fields, as it's the db key
|
||||||
code2 := statedb.GetCode(common.BytesToAddress(addr))
|
code2 := statedb.GetCode(common.BytesToAddress(addr))
|
||||||
|
@ -37,11 +37,6 @@ var (
|
|||||||
vmTestDir = filepath.Join(baseDir, "VMTests")
|
vmTestDir = filepath.Join(baseDir, "VMTests")
|
||||||
|
|
||||||
BlockSkipTests = []string{
|
BlockSkipTests = []string{
|
||||||
// Fails in InsertPreState with: computed state root does not
|
|
||||||
// match genesis block bba25a96 0d8f85c8 Christoph said it will be
|
|
||||||
// fixed eventually
|
|
||||||
"SimpleTx3",
|
|
||||||
|
|
||||||
// These tests are not valid, as they are out of scope for RLP and
|
// These tests are not valid, as they are out of scope for RLP and
|
||||||
// the consensus protocol.
|
// the consensus protocol.
|
||||||
"BLOCK__RandomByteAtTheEnd",
|
"BLOCK__RandomByteAtTheEnd",
|
||||||
@ -50,7 +45,7 @@ var (
|
|||||||
"TRANSCT__ZeroByteAtTheEnd",
|
"TRANSCT__ZeroByteAtTheEnd",
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go does not support transaction (account) nonces above 2^64. This
|
/* Go client does not support transaction (account) nonces above 2^64. This
|
||||||
technically breaks consensus but is regarded as "reasonable
|
technically breaks consensus but is regarded as "reasonable
|
||||||
engineering constraint" as accounts cannot easily reach such high
|
engineering constraint" as accounts cannot easily reach such high
|
||||||
nonce values in practice
|
nonce values in practice
|
||||||
|
Loading…
Reference in New Issue
Block a user