diff --git a/cbor/value.go b/cbor/value.go index 78f2d680..0a8b10b9 100644 --- a/cbor/value.go +++ b/cbor/value.go @@ -63,7 +63,7 @@ func (v *Value) UnmarshalCBOR(data []byte) error { case CborTagCbor: v.value = tmpTag.Content case CborTagRational: - var tmpRat []int64 + tmpRat := []int64{} if _, err := Decode(tmpTag.Content, &tmpRat); err != nil { return err } diff --git a/ledger/block.go b/ledger/block.go index 509b2e8d..442b717b 100644 --- a/ledger/block.go +++ b/ledger/block.go @@ -105,9 +105,12 @@ func DetermineBlockType(data []byte) (uint, error) { } func generateBlockHeaderHash(data []byte, prefix []byte) string { - // We can ignore the error return here because our fixed size/key arguments will - // never trigger an error - tmpHash, _ := blake2b.New256(nil) + tmpHash, err := blake2b.New256(nil) + if err != nil { + panic( + fmt.Sprintf("unexpected error generating empty blake2b hash: %s", err), + ) + } if prefix != nil { tmpHash.Write(prefix) } diff --git a/ledger/common.go b/ledger/common.go index 871d0d08..5d98d568 100644 --- a/ledger/common.go +++ b/ledger/common.go @@ -161,9 +161,12 @@ func NewAssetFingerprint(policyId []byte, assetName []byte) AssetFingerprint { } func (a AssetFingerprint) Hash() Blake2b160 { - // We can ignore the error return here because our fixed size/key arguments will - // never trigger an error - tmpHash, _ := blake2b.New(20, nil) + tmpHash, err := blake2b.New(20, nil) + if err != nil { + panic( + fmt.Sprintf("unexpected error creating empty blake2b hash: %s", err), + ) + } tmpHash.Write(a.policyId) tmpHash.Write(a.assetName) return NewBlake2b160(tmpHash.Sum(nil)) @@ -375,9 +378,12 @@ func (a Address) MarshalJSON() ([]byte, error) { type IssuerVkey [32]byte func (i IssuerVkey) Hash() Blake2b224 { - // We can ignore the error return here because our fixed size/key arguments will - // never trigger an error - hash, _ := blake2b.New(28, nil) + hash, err := blake2b.New(28, nil) + if err != nil { + panic( + fmt.Sprintf("unexpected error creating empty blake2b hash: %s", err), + ) + } hash.Write(i[:]) return Blake2b224(hash.Sum(nil)) } diff --git a/ledger/era.go b/ledger/era.go index 729b31aa..c3af8431 100644 --- a/ledger/era.go +++ b/ledger/era.go @@ -50,12 +50,17 @@ var eras = map[uint8]Era{ }, } -func GetEraById(eraId uint8) *Era { +var EraInvalid = Era{ + Id: 0, + Name: "invalid", +} + +func GetEraById(eraId uint8) Era { era, ok := eras[eraId] if !ok { - return nil + return EraInvalid } - return &era + return era } // BlockHeaderToBlockTypeMap is a mapping of NtN chainsync block header types diff --git a/ledger/era_test.go b/ledger/era_test.go index 706e9ecd..5beef7b1 100644 --- a/ledger/era_test.go +++ b/ledger/era_test.go @@ -20,9 +20,8 @@ import ( ) type getEraByIdTestDefinition struct { - Id uint8 - Name string - ExpectNil bool + Id uint8 + Name string } var getEraByIdTests = []getEraByIdTestDefinition{ @@ -51,17 +50,17 @@ var getEraByIdTests = []getEraByIdTestDefinition{ Name: "Babbage", }, { - Id: 99, - ExpectNil: true, + Id: 99, + Name: "invalid", }, } func TestGetEraById(t *testing.T) { for _, test := range getEraByIdTests { era := ledger.GetEraById(test.Id) - if era == nil { - if !test.ExpectNil { - t.Fatalf("got unexpected nil, wanted %s", test.Name) + if era == ledger.EraInvalid { + if test.Name != "invalid" { + t.Fatalf("got unexpected EraInvalid, wanted %s", test.Name) } } else { if era.Name != test.Name { diff --git a/ledger/error.go b/ledger/error.go index 09788462..f3845549 100644 --- a/ledger/error.go +++ b/ledger/error.go @@ -167,7 +167,7 @@ func (e *ApplyTxError) UnmarshalCBOR(data []byte) error { return err } for _, failure := range tmpData { - var tmpFailure []cbor.RawMessage + tmpFailure := []cbor.RawMessage{} if _, err := cbor.Decode(failure, &tmpFailure); err != nil { return err } @@ -212,7 +212,7 @@ type UtxowFailure struct { } func (e *UtxowFailure) UnmarshalCBOR(data []byte) error { - var tmpFailure []cbor.RawMessage + tmpFailure := []cbor.RawMessage{} if _, err := cbor.Decode(data, &tmpFailure); err != nil { return err } diff --git a/ledger/shelley.go b/ledger/shelley.go index 6d33f2bb..8ac082ba 100644 --- a/ledger/shelley.go +++ b/ledger/shelley.go @@ -233,7 +233,7 @@ func (b *ShelleyTransactionBody) Utxorpc() *utxorpc.Tx { if err != nil { return &utxorpc.Tx{} } - tx := &utxorpc.Tx { + tx := &utxorpc.Tx{ Inputs: txi, Outputs: txo, Fee: b.Fee(), diff --git a/ledger/tx.go b/ledger/tx.go index c5a1ee4c..816b9247 100644 --- a/ledger/tx.go +++ b/ledger/tx.go @@ -147,9 +147,12 @@ func DetermineTransactionType(data []byte) (uint, error) { } func generateTransactionHash(data []byte, prefix []byte) string { - // We can ignore the error return here because our fixed size/key arguments will - // never trigger an error - tmpHash, _ := blake2b.New256(nil) + tmpHash, err := blake2b.New256(nil) + if err != nil { + panic( + fmt.Sprintf("unexpected error generating empty blake2b hash: %s", err), + ) + } if prefix != nil { tmpHash.Write(prefix) } diff --git a/protocol/localstatequery/client.go b/protocol/localstatequery/client.go index 8b80612a..d6f88413 100644 --- a/protocol/localstatequery/client.go +++ b/protocol/localstatequery/client.go @@ -248,7 +248,7 @@ func (c *Client) GetChainBlockNo() (int64, error) { query := buildQuery( QueryTypeChainBlockNo, ) - var result []int64 + result := []int64{} if err := c.runQuery(query, &result); err != nil { return 0, err } @@ -293,7 +293,7 @@ func (c *Client) GetEpochNo() (int, error) { currentEra, QueryTypeShelleyEpochNo, ) - var result []int + result := []int{} if err := c.runQuery(query, &result); err != nil { return 0, err } @@ -331,7 +331,7 @@ func (c *Client) GetCurrentProtocolParams() (*CurrentProtocolParamsResult, error currentEra, QueryTypeShelleyCurrentProtocolParams, ) - var result []CurrentProtocolParamsResult + result := []CurrentProtocolParamsResult{} if err := c.runQuery(query, &result); err != nil { return nil, err } @@ -470,7 +470,7 @@ func (c *Client) GetGenesisConfig() (*GenesisConfigResult, error) { currentEra, QueryTypeShelleyGenesisConfig, ) - var result []GenesisConfigResult + result := []GenesisConfigResult{} if err := c.runQuery(query, &result); err != nil { return nil, err } diff --git a/protocol/protocol.go b/protocol/protocol.go index b7391269..c4bd6236 100644 --- a/protocol/protocol.go +++ b/protocol/protocol.go @@ -322,7 +322,7 @@ func (p *Protocol) recvLoop() { // Decode message into generic list until we can determine what type of message it is. // This also lets us determine how many bytes the message is. We use RawMessage here to // avoid parsing things that we may not be able to parse - var tmpMsg []cbor.RawMessage + tmpMsg := []cbor.RawMessage{} numBytesRead, err := cbor.Decode(recvBuffer.Bytes(), &tmpMsg) if err != nil { if err == io.ErrUnexpectedEOF && recvBuffer.Len() > 0 {