mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-13 15:33:47 +00:00
More fixes towards a working ordinal implementation
This commit is contained in:
parent
17dcacc575
commit
ec154ca444
1 changed files with 20 additions and 10 deletions
|
|
@ -380,22 +380,28 @@ func (f *Firehose) callStart(source string, callType pbeth.CallType, from common
|
||||||
}
|
}
|
||||||
|
|
||||||
call := &pbeth.Call{
|
call := &pbeth.Call{
|
||||||
BeginOrdinal: f.blockOrdinal.Next(),
|
CallType: callType,
|
||||||
CallType: callType,
|
Depth: 0,
|
||||||
Depth: 0,
|
Caller: from.Bytes(),
|
||||||
Caller: from.Bytes(),
|
Address: to.Bytes(),
|
||||||
Address: to.Bytes(),
|
Input: bytes.Clone(input),
|
||||||
Input: bytes.Clone(input),
|
Value: firehoseBigIntFromNative(value),
|
||||||
Value: firehoseBigIntFromNative(value),
|
GasLimit: gas,
|
||||||
GasLimit: gas,
|
}
|
||||||
|
|
||||||
|
// Known Firehose issue: The BeginOrdinal of the genesis block root call is never actually
|
||||||
|
// incremented and it's always 0. Here we reproduce bogus behavior, remove on new chain.
|
||||||
|
if f.block.Number != 0 {
|
||||||
|
call.BeginOrdinal = f.blockOrdinal.Next()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := f.deferredCallState.MaybePopulateCallAndReset(source, call); err != nil {
|
if err := f.deferredCallState.MaybePopulateCallAndReset(source, call); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Known Firehose issue: The `BeginOrdinal` of the root call is incremented but must
|
||||||
|
// be assigned back to 0 because of a bug in the console reader. remove on new chain.
|
||||||
if source == "root" {
|
if source == "root" {
|
||||||
// Re-do a current existing bug where the BeginOrdinal of the root call is always 0
|
|
||||||
call.BeginOrdinal = 0
|
call.BeginOrdinal = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -457,7 +463,11 @@ func (f *Firehose) callEnd(source string, output []byte, gasUsed uint64, err err
|
||||||
call.StatusReverted = errors.Is(err, vm.ErrExecutionReverted) || errors.Is(err, vm.ErrInsufficientBalance) || errors.Is(err, vm.ErrDepth)
|
call.StatusReverted = errors.Is(err, vm.ErrExecutionReverted) || errors.Is(err, vm.ErrInsufficientBalance) || errors.Is(err, vm.ErrDepth)
|
||||||
}
|
}
|
||||||
|
|
||||||
call.EndOrdinal = f.blockOrdinal.Next()
|
// Known Firehose issue: The EndOrdinal of the genesis block root call is never actually
|
||||||
|
// incremented and it's always 0. Here we reproduce bogus behavior, remove on new chain.
|
||||||
|
if f.block.Number != 0 {
|
||||||
|
call.EndOrdinal = f.blockOrdinal.Next()
|
||||||
|
}
|
||||||
|
|
||||||
f.transaction.Calls = append(f.transaction.Calls, call)
|
f.transaction.Calls = append(f.transaction.Calls, call)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue