Skip to content

Commit

Permalink
implement resources and update traces
Browse files Browse the repository at this point in the history
  • Loading branch information
rianhughes committed Feb 8, 2024
1 parent dccc412 commit 1dd8fc8
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 38 deletions.
32 changes: 9 additions & 23 deletions rpc/transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,6 @@ func TestTransactionReceipt_MatchesCapturedTransaction(t *testing.T) {
Keys: []*felt.Felt{utils.TestHexToFelt(t, "0xf806f71b19e4744968b37e3fb288e61309ab33a782ea9d11e18f67a1fbb110")},
},
},
ExecutionResources: ExecutionResources{
Steps: 217182,
MemoryHoles: 6644,
PedersenApps: 2142,
RangeCheckApps: 8867,
BitwiseApps: 900,
ECDSAApps: 1,
},
})

var receiptTxnIntegration = InvokeTransactionReceipt(CommonTransactionReceipt{
Expand Down Expand Up @@ -250,11 +242,6 @@ func TestTransactionReceipt_MatchesCapturedTransaction(t *testing.T) {
Keys: []*felt.Felt{utils.TestHexToFelt(t, "0xa9fa878c35cd3d0191318f89033ca3e5501a3d90e21e3cc9256bdd5cd17fdd")},
},
},
ExecutionResources: ExecutionResources{
Steps: 615,
MemoryHoles: 4,
RangeCheckApps: 19,
},
})

testSet := map[string][]testSetType{
Expand Down Expand Up @@ -369,16 +356,15 @@ func TestDeployOrDeclareReceipt(t *testing.T) {

var receiptTxn300114_3 = DeclareTransactionReceipt(
CommonTransactionReceipt{
TransactionHash: utils.TestHexToFelt(t, "0x46a9f52a96b2d226407929e04cb02507e531f7c78b9196fc8c910351d8c33f3"),
ActualFee: FeePayment{Amount: utils.TestHexToFelt(t, "0x0"), Unit: UnitWei},
FinalityStatus: TxnFinalityStatusAcceptedOnL1,
ExecutionStatus: TxnExecutionStatusSUCCEEDED,
BlockHash: utils.TestHexToFelt(t, "0x184268bfbce24766fa53b65c9c8b30b295e145e8281d543a015b46308e27fdf"),
BlockNumber: 300114,
Type: "DECLARE",
MessagesSent: []MsgToL1{},
Events: []Event{},
ExecutionResources: ExecutionResources{Steps: 0},
TransactionHash: utils.TestHexToFelt(t, "0x46a9f52a96b2d226407929e04cb02507e531f7c78b9196fc8c910351d8c33f3"),
ActualFee: FeePayment{Amount: utils.TestHexToFelt(t, "0x0"), Unit: UnitWei},
FinalityStatus: TxnFinalityStatusAcceptedOnL1,
ExecutionStatus: TxnExecutionStatusSUCCEEDED,
BlockHash: utils.TestHexToFelt(t, "0x184268bfbce24766fa53b65c9c8b30b295e145e8281d543a015b46308e27fdf"),
BlockNumber: 300114,
Type: "DECLARE",
MessagesSent: []MsgToL1{},
Events: []Event{},
})

testSet := map[string][]testSetType{
Expand Down
29 changes: 16 additions & 13 deletions rpc/types_trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,28 +39,31 @@ var _ TxnTrace = L1HandlerTxnTrace{}
type InvokeTxnTrace struct {
ValidateInvocation FnInvocation `json:"validate_invocation"`
//the trace of the __execute__ call or constructor call, depending on the transaction type (none for declare transactions)
ExecuteInvocation ExecInvocation `json:"execute_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ExecuteInvocation ExecInvocation `json:"execute_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ExecutionResources ExecutionResources `json:"execution_resources"`
}

// the execution trace of a declare transaction
type DeclareTxnTrace struct {
ValidateInvocation FnInvocation `json:"validate_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ValidateInvocation FnInvocation `json:"validate_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ExecutionResources ExecutionResources `json:"execution_resources"`
}

// the execution trace of a deploy account transaction
type DeployAccountTxnTrace struct {
ValidateInvocation FnInvocation `json:"validate_invocation"`
//the trace of the __execute__ call or constructor call, depending on the transaction type (none for declare transactions)
ConstructorInvocation FnInvocation `json:"constructor_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ConstructorInvocation FnInvocation `json:"constructor_invocation"`
FeeTransferInvocation FnInvocation `json:"fee_transfer_invocation"`
StateDiff StateDiff `json:"state_diff"`
Type TransactionType `json:"type"`
ExecutionResources ExecutionResources `json:"execution_resources"`
}

// the execution trace of an L1 handler transaction
Expand Down Expand Up @@ -113,7 +116,7 @@ type FnInvocation struct {
L1Messages []OrderedMsg `json:"messages"`

// Resources consumed by the internal call
ExecutionResources ExecutionResources `json:"execution_resources"`
ComputationResources ComputationResources `json:"computation_resources"`
}

// A single pair of transaction hash and corresponding trace
Expand Down
17 changes: 15 additions & 2 deletions rpc/types_transaction_receipt.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ type PendingCommonTransactionReceiptProperties struct {
ExecutionResources ExecutionResources `json:"execution_resources"`
}

type ExecutionResources struct {
type ComputationResources struct {
// The number of Cairo steps used
Steps int `json:"steps"`
// The number of unused memory cells (each cell is roughly equivalent to a step)
Expand All @@ -397,7 +397,7 @@ type ExecutionResources struct {
}

// Validate checks if the fields are non-zero (to match the starknet-specs)
func (er *ExecutionResources) Validate() bool {
func (er *ComputationResources) Validate() bool {
if er.Steps == 0 || er.MemoryHoles == 0 || er.RangeCheckApps == 0 || er.PedersenApps == 0 ||
er.PoseidonApps == 0 || er.ECOPApps == 0 || er.ECDSAApps == 0 || er.BitwiseApps == 0 ||
er.KeccakApps == 0 || er.SegmentArenaBuiltin == 0 {
Expand All @@ -406,6 +406,19 @@ func (er *ExecutionResources) Validate() bool {
return true
}

// The resources consumed by the transaction, includes both computation and data.
type ExecutionResources struct {
ComputationResources ComputationResources `json:"computation_resources"`
DataAvailability DataAvailability `json:"data_availability"`
}

type DataAvailability struct {
// the gas consumed by this transaction's data, 0 if it uses data gas for DA
L1Gas int `json:"l1_gas"`
// the data gas consumed by this transaction's data, 0 if it uses gas for DA
L1DataGas int `json:"l1_data_gas"`
}

// Hash returns the transaction hash of the PendingCommonTransactionReceiptProperties.
//
// Parameters:
Expand Down

0 comments on commit 1dd8fc8

Please sign in to comment.