Skip to content

Commit

Permalink
Merge pull request ethereum#407 from maticnetwork/POS-374
Browse files Browse the repository at this point in the history
Added logging for statesyncs data
  • Loading branch information
0xsharma authored May 23, 2022
2 parents f083705 + 59337a7 commit 8c3423c
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 16 deletions.
20 changes: 15 additions & 5 deletions consensus/bor/bor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1144,7 +1144,8 @@ func (c *Bor) fetchAndCommitSpan(
msg := getSystemMessage(common.HexToAddress(c.config.ValidatorContract), data)

// apply message
return applyMessage(msg, state, header, c.chainConfig, chain)
_, err = applyMessage(msg, state, header, c.chainConfig, chain)
return err
}

// CommitStates commit states
Expand Down Expand Up @@ -1173,6 +1174,8 @@ func (c *Bor) CommitStates(
}
}

totalGas := 0 /// limit on gas for state sync per block

chainID := c.chainConfig.ChainID.String()
for _, eventRecord := range eventRecords {
if eventRecord.ID <= lastStateID {
Expand All @@ -1191,11 +1194,15 @@ func (c *Bor) CommitStates(
}
stateSyncs = append(stateSyncs, &stateData)

if err := c.GenesisContractsClient.CommitState(eventRecord, state, header, chain); err != nil {
gasUsed, err := c.GenesisContractsClient.CommitState(eventRecord, state, header, chain)
if err != nil {
return nil, err
}
totalGas += int(gasUsed)

lastStateID++
}
log.Info("StateSyncData", "Gas", totalGas, "Block-number", number, "LastStateID", lastStateID, "TotalRecords", len(eventRecords))
return stateSyncs, nil
}

Expand Down Expand Up @@ -1311,14 +1318,16 @@ func applyMessage(
header *types.Header,
chainConfig *params.ChainConfig,
chainContext core.ChainContext,
) error {
) (uint64, error) {
initialGas := msg.Gas()

// Create a new context to be used in the EVM environment
blockContext := core.NewEVMBlockContext(header, chainContext, &header.Coinbase)
// Create a new environment which holds all relevant information
// about the transaction and calling mechanisms.
vmenv := vm.NewEVM(blockContext, vm.TxContext{}, state, chainConfig, vm.Config{})
// Apply the transaction to the current state (included in the env)
_, _, err := vmenv.Call(
_, gasLeft, err := vmenv.Call(
vm.AccountRef(msg.From()),
*msg.To(),
msg.Data(),
Expand All @@ -1330,7 +1339,8 @@ func applyMessage(
state.Finalise(true)
}

return nil
gasUsed := initialGas - gasLeft
return gasUsed, nil
}

func validatorContains(a []*Validator, x *Validator) (*Validator, bool) {
Expand Down
7 changes: 4 additions & 3 deletions consensus/bor/clerk.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,18 @@ type EventRecordWithTime struct {
Time time.Time `json:"record_time" yaml:"record_time"`
}

// String returns the string representatin of span
func (e *EventRecordWithTime) String() string {
// String returns the string representation of EventRecord
func (e *EventRecordWithTime) String(gasUsed uint64) string {
return fmt.Sprintf(
"id %v, contract %v, data: %v, txHash: %v, logIndex: %v, chainId: %v, time %s",
"id %v, contract %v, data: %v, txHash: %v, logIndex: %v, chainId: %v, time %s, gasUsed %d",
e.ID,
e.Contract.String(),
e.Data.String(),
e.TxHash.Hex(),
e.LogIndex,
e.ChainID,
e.Time.Format(time.RFC3339),
gasUsed,
)
}

Expand Down
2 changes: 1 addition & 1 deletion consensus/bor/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ type InvalidStateReceivedError struct {

func (e *InvalidStateReceivedError) Error() string {
return fmt.Sprintf(
"Received invalid event %s at block %d. Requested events until %s. Last state id was %d",
"Received invalid event %v at block %d. Requested events until %s. Last state id was %d",
e.Event,
e.Number,
e.To.Format(time.RFC3339),
Expand Down
16 changes: 9 additions & 7 deletions consensus/bor/genesis_contracts_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,25 +53,27 @@ func (gc *GenesisContractsClient) CommitState(
state *state.StateDB,
header *types.Header,
chCtx chainContext,
) error {
) (uint64, error) {
eventRecord := event.BuildEventRecord()
recordBytes, err := rlp.EncodeToBytes(eventRecord)
if err != nil {
return err
return 0, err
}
method := "commitState"
t := event.Time.Unix()
data, err := gc.stateReceiverABI.Pack(method, big.NewInt(0).SetInt64(t), recordBytes)
if err != nil {
log.Error("Unable to pack tx for commitState", "error", err)
return err
return 0, err
}
log.Info("→ committing new state", "eventRecord", event.String())
msg := getSystemMessage(common.HexToAddress(gc.StateReceiverContract), data)
if err := applyMessage(msg, state, header, gc.chainConfig, chCtx); err != nil {
return err
gasUsed, err := applyMessage(msg, state, header, gc.chainConfig, chCtx)
// Logging event log with time and individual gasUsed
log.Info("→ committing new state", "eventRecord", event.String(gasUsed))
if err != nil {
return 0, err
}
return nil
return gasUsed, nil
}

func (gc *GenesisContractsClient) LastStateId(snapshotNumber uint64) (*big.Int, error) {
Expand Down

0 comments on commit 8c3423c

Please sign in to comment.