@@ -14,14 +14,19 @@ import (
14
14
"encoding/json"
15
15
"fmt"
16
16
"sync"
17
+ "time"
17
18
"unsafe"
18
19
19
20
"github.com/scroll-tech/go-ethereum/core/types"
20
21
"github.com/scroll-tech/go-ethereum/log"
22
+ "github.com/scroll-tech/go-ethereum/metrics"
21
23
)
22
24
23
25
// mutex for concurrent CircuitCapacityChecker creations
24
- var creationMu sync.Mutex
26
+ var (
27
+ creationMu sync.Mutex
28
+ encodeTimer = metrics .NewRegisteredTimer ("ccc/encode" , nil )
29
+ )
25
30
26
31
func init () {
27
32
C .init ()
@@ -67,6 +72,7 @@ func (ccc *CircuitCapacityChecker) ApplyTransaction(traces *types.BlockTrace) (*
67
72
return nil , ErrUnknown
68
73
}
69
74
75
+ encodeStart := time .Now ()
70
76
ccc .jsonBuffer .Reset ()
71
77
err := json .NewEncoder (& ccc .jsonBuffer ).Encode (traces )
72
78
if err != nil {
@@ -79,8 +85,15 @@ func (ccc *CircuitCapacityChecker) ApplyTransaction(traces *types.BlockTrace) (*
79
85
C .free (unsafe .Pointer (tracesStr ))
80
86
}()
81
87
88
+ rustTrace := C .parse_json_to_rust_trace (tracesStr )
89
+ if rustTrace == nil {
90
+ log .Error ("fail to parse json in to rust trace" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
91
+ return nil , ErrUnknown
92
+ }
93
+ encodeTimer .UpdateSince (encodeStart )
94
+
82
95
log .Debug ("start to check circuit capacity for tx" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
83
- rawResult := C .apply_tx (C .uint64_t (ccc .ID ), tracesStr )
96
+ rawResult := C .apply_tx (C .uint64_t (ccc .ID ), rustTrace )
84
97
defer func () {
85
98
C .free_c_chars (rawResult )
86
99
}()
@@ -114,6 +127,7 @@ func (ccc *CircuitCapacityChecker) ApplyBlock(traces *types.BlockTrace) (*types.
114
127
ccc .Lock ()
115
128
defer ccc .Unlock ()
116
129
130
+ encodeStart := time .Now ()
117
131
ccc .jsonBuffer .Reset ()
118
132
err := json .NewEncoder (& ccc .jsonBuffer ).Encode (traces )
119
133
if err != nil {
@@ -126,8 +140,15 @@ func (ccc *CircuitCapacityChecker) ApplyBlock(traces *types.BlockTrace) (*types.
126
140
C .free (unsafe .Pointer (tracesStr ))
127
141
}()
128
142
143
+ rustTrace := C .parse_json_to_rust_trace (tracesStr )
144
+ if rustTrace == nil {
145
+ log .Error ("fail to parse json in to rust trace" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
146
+ return nil , ErrUnknown
147
+ }
148
+ encodeTimer .UpdateSince (encodeStart )
149
+
129
150
log .Debug ("start to check circuit capacity for block" , "id" , ccc .ID , "blockNumber" , traces .Header .Number , "blockHash" , traces .Header .Hash ())
130
- rawResult := C .apply_block (C .uint64_t (ccc .ID ), tracesStr )
151
+ rawResult := C .apply_block (C .uint64_t (ccc .ID ), rustTrace )
131
152
defer func () {
132
153
C .free_c_chars (rawResult )
133
154
}()
0 commit comments