Skip to content

Commit

Permalink
fix nil pointer on felt
Browse files Browse the repository at this point in the history
  • Loading branch information
billettc committed Jul 4, 2024
1 parent 3b57776 commit bff56cb
Showing 1 changed file with 63 additions and 55 deletions.
118 changes: 63 additions & 55 deletions rpc/fetcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ func (f *Fetcher) Fetch(ctx context.Context, requestBlockNum uint64) (b *pbbstre
}
f.logger.Debug("block fetched successfully", zap.Uint64("block_num", requestBlockNum))

//todo: call only once every 5 min
lastL1AcceptedBlock, err := f.fetchLastL1AcceptBlock(ctx)
if err != nil {
return nil, false, fmt.Errorf("fetching LIB: %w", err)
Expand Down Expand Up @@ -223,9 +224,9 @@ func convertBlock(b *starknetRPC.BlockWithReceipts, s *starknetRPC.StateUpdateOu
BlockHash: b.BlockHash.String(),
BlockNumber: b.BlockNumber,
L1DaMode: convertL1DAMode(b.L1DAMode),
NewRoot: b.NewRoot.String(),
ParentHash: b.ParentHash.String(),
SequencerAddress: b.SequencerAddress.String(),
NewRoot: convertFelt(b.NewRoot),
ParentHash: convertFelt(b.ParentHash),
SequencerAddress: convertFelt(b.SequencerAddress),
StarknetVersion: b.StarknetVersion,
Timestamp: b.Timestamp,
L1DataGasPrice: convertL1DataGasPrice(b.L1DataGasPrice),
Expand Down Expand Up @@ -271,8 +272,8 @@ func convertBlock(b *starknetRPC.BlockWithReceipts, s *starknetRPC.StateUpdateOu

func convertStateUpdate(s *starknetRPC.StateUpdateOutput) *pbstarknet.StateUpdate {
return &pbstarknet.StateUpdate{
OldRoot: s.OldRoot.String(),
NewRoot: s.NewRoot.String(),
OldRoot: convertFelt(s.OldRoot),
NewRoot: convertFelt(s.NewRoot),
StateDiff: convertStateDiff(s.StateDiff),
}
}
Expand All @@ -293,8 +294,8 @@ func convertNonceDiffs(nonces []starknetRPC.ContractNonce) []*pbstarknet.NonceDi

for i, n := range nonces {
out[i] = &pbstarknet.NonceDiff{
ContractAddress: n.ContractAddress.String(),
Nonce: n.Nonce.String(),
ContractAddress: convertFelt(n.ContractAddress),
Nonce: convertFelt(n.Nonce),
}
}

Expand All @@ -306,21 +307,28 @@ func convertReplacedClasses(classes []starknetRPC.ReplacedClassesItem) []*pbstar

for i, c := range classes {
out[i] = &pbstarknet.ReplacedClass{
ContractAddress: c.ContractClass.String(),
ClassHash: c.ClassHash.String(),
ContractAddress: convertFelt(c.ContractClass),
ClassHash: convertFelt(c.ClassHash),
}
}

return out
}

func convertFelt(f *felt.Felt) string {
if f == nil {
return ""
}
return f.String()
}

func convertDeployedContracts(contracts []starknetRPC.DeployedContractItem) []*pbstarknet.DeployedContract {
out := make([]*pbstarknet.DeployedContract, len(contracts))

for i, c := range contracts {
out[i] = &pbstarknet.DeployedContract{
Address: c.Address.String(),
ClassHash: c.ClassHash.String(),
Address: convertFelt(c.Address),
ClassHash: convertFelt(c.ClassHash),
}
}

Expand All @@ -332,8 +340,8 @@ func convertDeclaredClasses(classes []starknetRPC.DeclaredClassesItem) []*pbstar

for i, c := range classes {
out[i] = &pbstarknet.DeclaredClass{
ClassHash: c.ClassHash.String(),
CompiledClassHash: c.CompiledClassHash.String(),
ClassHash: convertFelt(c.ClassHash),
CompiledClassHash: convertFelt(c.CompiledClassHash),
}
}

Expand All @@ -345,7 +353,7 @@ func convertStorageDiff(diffs []starknetRPC.ContractStorageDiffItem) []*pbstarkn

for i, d := range diffs {
out[i] = &pbstarknet.ContractStorageDiff{
Address: d.Address.String(),
Address: convertFelt(d.Address),
StorageEntries: convertStorageEntries(d.StorageEntries),
}
}
Expand All @@ -358,8 +366,8 @@ func convertStorageEntries(entries []starknetRPC.StorageEntry) []*pbstarknet.Sto

for i, e := range entries {
out[i] = &pbstarknet.StorageEntries{
Key: e.Key.String(),
Value: e.Value.String(),
Key: convertFelt(e.Key),
Value: convertFelt(e.Value),
}
}

Expand Down Expand Up @@ -471,12 +479,12 @@ func convertAndSetReceipt(in starknetRPC.TransactionReceipt) *pbstarknet.Transac
func createCommonTransactionReceipt(common starknetRPC.CommonTransactionReceipt) *pbstarknet.TransactionReceipt {
return &pbstarknet.TransactionReceipt{
Type: string(common.Type),
TransactionHash: common.TransactionHash.String(),
TransactionHash: convertFelt(common.TransactionHash),
ActualFee: &pbstarknet.ActualFee{
Amount: common.ActualFee.Amount.String(),
Amount: convertFelt(common.ActualFee.Amount),
Unit: string(common.ActualFee.Unit),
},
ExecutionStatus: common.ExecutionStatus.String(),
ExecutionStatus: convertFelt(common.ExecutionStatus),

Check failure on line 487 in rpc/fetcher.go

View workflow job for this annotation

GitHub Actions / build (1.22.x)

cannot use common.ExecutionStatus (variable of type "github.com/NethermindEth/starknet.go/rpc".TxnExecutionStatus) as *felt.Felt value in argument to convertFelt
MessagesSent: convertMessageSent(common.MessagesSent),
RevertReason: common.RevertReason,
Events: convertEvents(common.Events),
Expand Down Expand Up @@ -512,7 +520,7 @@ func convertEvents(events []starknetRPC.Event) []*pbstarknet.Event {

for i, e := range events {
out[i] = &pbstarknet.Event{
FromAddress: e.FromAddress.String(),
FromAddress: convertFelt(e.FromAddress),
Keys: convertFeltArray(e.Keys),
Data: convertFeltArray(e.Data),
}
Expand All @@ -526,8 +534,8 @@ func convertMessageSent(msg []starknetRPC.MsgToL1) []*pbstarknet.MessagesSent {

for i, m := range msg {
out[i] = &pbstarknet.MessagesSent{
FromAddress: m.FromAddress.String(),
ToAddress: m.ToAddress.String(),
FromAddress: convertFelt(m.FromAddress),
ToAddress: convertFelt(m.ToAddress),
Payload: convertFeltArray(m.Payload),
}
}
Expand All @@ -539,11 +547,11 @@ func convertMessageSent(msg []starknetRPC.MsgToL1) []*pbstarknet.MessagesSent {
func convertInvokeTransactionV0(tx starknetRPC.InvokeTxnV0) *pbstarknet.TransactionWithReceipt_InvokeTransactionV0 {
return &pbstarknet.TransactionWithReceipt_InvokeTransactionV0{
InvokeTransactionV0: &pbstarknet.InvokeTransactionV0{
MaxFee: tx.MaxFee.String(),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
ContractAddress: tx.ContractAddress.String(),
EntryPointSelector: tx.EntryPointSelector.String(),
ContractAddress: convertFelt(tx.ContractAddress),
EntryPointSelector: convertFelt(tx.EntryPointSelector),
Calldata: convertFeltArray(tx.Calldata),
},
}
Expand All @@ -554,22 +562,22 @@ func convertInvokeTransactionV1(tx starknetRPC.InvokeTxnV1) *pbstarknet.Transact
InvokeTransactionV1: &pbstarknet.InvokeTransactionV1{
SenderAddress: tx.SenderAddress.String(),
Calldata: convertFeltArray(tx.Calldata),
MaxFee: tx.MaxFee.String(),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
Nonce: convertFelt(tx.Nonce),
},
}
}

func convertInvokeTransactionV3(tx starknetRPC.InvokeTxnV3) *pbstarknet.TransactionWithReceipt_InvokeTransactionV3 {
return &pbstarknet.TransactionWithReceipt_InvokeTransactionV3{
InvokeTransactionV3: &pbstarknet.InvokeTransactionV3{
SenderAddress: tx.SenderAddress.String(),
SenderAddress: convertFelt(tx.SenderAddress),
Calldata: convertFeltArray(tx.Calldata),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
Nonce: convertFelt(tx.Nonce),
ResourceBounds: convertResourceBounds(tx.ResourceBounds),
Tip: string(tx.Tip),
PaymasterData: convertFeltArray(tx.PayMasterData),
Expand All @@ -585,8 +593,8 @@ func convertL1HandlerTransaction(tx starknetRPC.L1HandlerTxn) *pbstarknet.Transa
L1HandlerTransaction: &pbstarknet.L1HandlerTransaction{
Version: string(tx.Version),
Nonce: tx.Nonce,
ContractAddress: tx.ContractAddress.String(),
EntryPointSelector: tx.EntryPointSelector.String(),
ContractAddress: convertFelt(tx.ContractAddress),
EntryPointSelector: convertFelt(tx.EntryPointSelector),
Calldata: convertFeltArray(tx.Calldata),
},
}
Expand All @@ -595,49 +603,49 @@ func convertL1HandlerTransaction(tx starknetRPC.L1HandlerTxn) *pbstarknet.Transa
func convertDeclareTransactionV0(tx starknetRPC.DeclareTxnV0) *pbstarknet.TransactionWithReceipt_DeclareTransactionV0 {
return &pbstarknet.TransactionWithReceipt_DeclareTransactionV0{
DeclareTransactionV0: &pbstarknet.DeclareTransactionV0{
SenderAddress: tx.SenderAddress.String(),
MaxFee: tx.MaxFee.String(),
SenderAddress: convertFelt(tx.SenderAddress),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
ClassHash: tx.ClassHash.String(),
ClassHash: convertFelt(tx.ClassHash),
},
}
}

func convertDeclareTransactionV1(tx starknetRPC.DeclareTxnV1) *pbstarknet.TransactionWithReceipt_DeclareTransactionV1 {
return &pbstarknet.TransactionWithReceipt_DeclareTransactionV1{
DeclareTransactionV1: &pbstarknet.DeclareTransactionV1{
SenderAddress: tx.SenderAddress.String(),
MaxFee: tx.MaxFee.String(),
SenderAddress: convertFelt(tx.SenderAddress),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
ClassHash: tx.ClassHash.String(),
Nonce: convertFelt(tx.Nonce),
ClassHash: convertFelt(tx.ClassHash),
},
}
}

func convertDeclareTransactionV2(tx starknetRPC.DeclareTxnV2) *pbstarknet.TransactionWithReceipt_DeclareTransactionV2 {
return &pbstarknet.TransactionWithReceipt_DeclareTransactionV2{
DeclareTransactionV2: &pbstarknet.DeclareTransactionV2{
SenderAddress: tx.SenderAddress.String(),
MaxFee: tx.MaxFee.String(),
SenderAddress: convertFelt(tx.SenderAddress),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
ClassHash: tx.ClassHash.String(),
Nonce: convertFelt(tx.Nonce),
ClassHash: convertFelt(tx.ClassHash),
},
}
}
func convertDeclareTransactionV3(tx starknetRPC.DeclareTxnV3) *pbstarknet.TransactionWithReceipt_DeclareTransactionV3 {
return &pbstarknet.TransactionWithReceipt_DeclareTransactionV3{
DeclareTransactionV3: &pbstarknet.DeclareTransactionV3{
SenderAddress: tx.SenderAddress.String(),
CompiledClassHash: tx.CompiledClassHash.String(),
SenderAddress: convertFelt(tx.SenderAddress),
CompiledClassHash: convertFelt(tx.CompiledClassHash),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
ClassHash: tx.ClassHash.String(),
Nonce: convertFelt(tx.Nonce),
ClassHash: convertFelt(tx.ClassHash),
ResourceBounds: convertResourceBounds(tx.ResourceBounds),
Tip: string(tx.Tip),
PaymasterData: convertFeltArray(tx.PayMasterData),
Expand All @@ -652,9 +660,9 @@ func convertDeployTransactionV0(tx starknetRPC.DeployTxn) *pbstarknet.Transactio
return &pbstarknet.TransactionWithReceipt_DeployTransactionV0{
DeployTransactionV0: &pbstarknet.DeployTransactionV0{
Version: string(tx.Version),
ContractAddressSalt: tx.ContractAddressSalt.String(),
ContractAddressSalt: convertFelt(tx.ContractAddressSalt),
ConstructorCalldata: convertFeltArray(tx.ConstructorCalldata),
ClassHash: tx.ClassHash.String(),
ClassHash: convertFelt(tx.ClassHash),
},
}

Expand All @@ -663,13 +671,13 @@ func convertDeployTransactionV0(tx starknetRPC.DeployTxn) *pbstarknet.Transactio
func convertDeployAccountTransactionV0(tx starknetRPC.DeployAccountTxn) *pbstarknet.TransactionWithReceipt_DeployAccountTransactionV1 {
return &pbstarknet.TransactionWithReceipt_DeployAccountTransactionV1{
DeployAccountTransactionV1: &pbstarknet.DeployAccountTransactionV1{
MaxFee: tx.MaxFee.String(),
MaxFee: convertFelt(tx.MaxFee),
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
ContractAddressSalt: tx.ContractAddressSalt.String(),
Nonce: convertFelt(tx.Nonce),
ContractAddressSalt: convertFelt(tx.ContractAddressSalt),
ConstructorCalldata: convertFeltArray(tx.ConstructorCalldata),
ClassHash: tx.ClassHash.String(),
ClassHash: convertFelt(tx.ClassHash),
},
}

Expand All @@ -680,9 +688,9 @@ func convertDeployAccountTransactionV3(tx starknetRPC.DeployAccountTxnV3) *pbsta
DeployAccountTransactionV3: &pbstarknet.DeployAccountTransactionV3{
Version: string(tx.Version),
Signature: convertFeltArray(tx.Signature),
Nonce: tx.Nonce.String(),
ContractAddressSalt: tx.ContractAddressSalt.String(),
ClassHash: tx.ClassHash.String(),
Nonce: convertFelt(tx.Nonce),
ContractAddressSalt: convertFelt(tx.ContractAddressSalt),
ClassHash: convertFelt(tx.ClassHash),
ResourceBounds: convertResourceBounds(tx.ResourceBounds),
Tip: string(tx.Tip),
PaymasterData: convertFeltArray(tx.PayMasterData),
Expand Down

0 comments on commit bff56cb

Please sign in to comment.