Skip to content

Commit d7f0af2

Browse files
committed
Use value receivers for BasicBlock methods
The BasicBlock struct is very small and all of its methods are read-only. Using a value receiver is efficient and clear. - Update description of Block interface to describe its importance for interoperability. - Update dependencies
1 parent d812ab8 commit d7f0af2

File tree

3 files changed

+28
-37
lines changed

3 files changed

+28
-37
lines changed

blocks.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,16 @@ import (
1717
var ErrWrongHash = errors.New("data did not match given hash")
1818

1919
// Block provides abstraction for blocks implementations.
20+
//
21+
// Many different packages use opjects that contain Block information, and this
22+
// interface allows those objects to be passed to APIs that require blocks. The
23+
// Block interface provides a common basis for interoperability between many
24+
// packages in the IPFS exosystem that exchange block information.
2025
type Block interface {
2126
RawData() []byte
2227
Cid() cid.Cid
2328
String() string
24-
Loggable() map[string]interface{}
29+
Loggable() map[string]any
2530
}
2631

2732
// A BasicBlock is a singular block of data in ipfs. It implements the Block
@@ -33,8 +38,10 @@ type BasicBlock struct {
3338

3439
// NewBlock creates a Block object from opaque data. It will hash the data.
3540
func NewBlock(data []byte) *BasicBlock {
36-
// TODO: fix assumptions
37-
return &BasicBlock{data: data, cid: cid.NewCidV0(u.Hash(data))}
41+
return &BasicBlock{
42+
data: data,
43+
cid: cid.NewCidV0(u.Hash(data)),
44+
}
3845
}
3946

4047
// NewBlockWithCid creates a new block when the hash of the data
@@ -55,28 +62,28 @@ func NewBlockWithCid(data []byte, c cid.Cid) (*BasicBlock, error) {
5562
}
5663

5764
// Multihash returns the hash contained in the block CID.
58-
func (b *BasicBlock) Multihash() mh.Multihash {
65+
func (b BasicBlock) Multihash() mh.Multihash {
5966
return b.cid.Hash()
6067
}
6168

6269
// RawData returns the block raw contents as a byte slice.
63-
func (b *BasicBlock) RawData() []byte {
70+
func (b BasicBlock) RawData() []byte {
6471
return b.data
6572
}
6673

6774
// Cid returns the content identifier of the block.
68-
func (b *BasicBlock) Cid() cid.Cid {
75+
func (b BasicBlock) Cid() cid.Cid {
6976
return b.cid
7077
}
7178

7279
// String provides a human-readable representation of the block CID.
73-
func (b *BasicBlock) String() string {
80+
func (b BasicBlock) String() string {
7481
return fmt.Sprintf("[Block %s]", b.Cid())
7582
}
7683

7784
// Loggable returns a go-log loggable item.
78-
func (b *BasicBlock) Loggable() map[string]interface{} {
79-
return map[string]interface{}{
85+
func (b BasicBlock) Loggable() map[string]any {
86+
return map[string]any{
8087
"block": b.Cid().String(),
8188
}
8289
}

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/ipfs/go-block-format
33
go 1.23.8
44

55
require (
6-
github.com/ipfs/boxo v0.30.0
6+
github.com/ipfs/boxo v0.32.0
77
github.com/ipfs/go-cid v0.5.0
88
github.com/multiformats/go-multihash v0.2.3
99
)
@@ -17,7 +17,7 @@ require (
1717
github.com/multiformats/go-multibase v0.2.0 // indirect
1818
github.com/multiformats/go-varint v0.0.7 // indirect
1919
github.com/spaolacci/murmur3 v1.1.0 // indirect
20-
golang.org/x/crypto v0.37.0 // indirect
21-
golang.org/x/sys v0.32.0 // indirect
22-
lukechampine.com/blake3 v1.4.0 // indirect
20+
golang.org/x/crypto v0.39.0 // indirect
21+
golang.org/x/sys v0.33.0 // indirect
22+
lukechampine.com/blake3 v1.4.1 // indirect
2323
)

go.sum

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
1-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
2-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
3-
github.com/ipfs/boxo v0.30.0 h1:7afsoxPGGqfoH7Dum/wOTGUB9M5fb8HyKPMlLfBvIEQ=
4-
github.com/ipfs/boxo v0.30.0/go.mod h1:BPqgGGyHB9rZZcPSzah2Dc9C+5Or3U1aQe7EH1H7370=
1+
github.com/ipfs/boxo v0.32.0 h1:rBs3P53Wt9bFW9WJwVdkzLtzYCXAj2bMjM7+1nrazZw=
2+
github.com/ipfs/boxo v0.32.0/go.mod h1:VEtO3gOmr+sXGodalaTV9Vvsp3qVYegc4Rcu08Iw+wM=
53
github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg=
64
github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk=
7-
github.com/ipfs/go-test v0.2.1 h1:/D/a8xZ2JzkYqcVcV/7HYlCnc7bv/pKHQiX5TdClkPE=
8-
github.com/ipfs/go-test v0.2.1/go.mod h1:dzu+KB9cmWjuJnXFDYJwC25T3j1GcN57byN+ixmK39M=
95
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
106
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
11-
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
12-
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
13-
github.com/libp2p/go-libp2p v0.41.1 h1:8ecNQVT5ev/jqALTvisSJeVNvXYJyK4NhQx1nNRXQZE=
14-
github.com/libp2p/go-libp2p v0.41.1/go.mod h1:DcGTovJzQl/I7HMrby5ZRjeD0kQkGiy+9w6aEkSZpRI=
157
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
168
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
179
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
@@ -20,25 +12,17 @@ github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aG
2012
github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
2113
github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0=
2214
github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
23-
github.com/multiformats/go-multiaddr v0.15.0 h1:zB/HeaI/apcZiTDwhY5YqMvNVl/oQYvs3XySU+qeAVo=
24-
github.com/multiformats/go-multiaddr v0.15.0/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0=
2515
github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
2616
github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
27-
github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg=
28-
github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k=
2917
github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U=
3018
github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM=
3119
github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8=
3220
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
3321
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
3422
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
35-
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
36-
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
37-
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM=
38-
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8=
39-
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
40-
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
41-
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
42-
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
43-
lukechampine.com/blake3 v1.4.0 h1:xDbKOZCVbnZsfzM6mHSYcGRHZ3YrLDzqz8XnV4uaD5w=
44-
lukechampine.com/blake3 v1.4.0/go.mod h1:MQJNQCTnR+kwOP/JEZSxj3MaQjp80FOFSNMMHXcSeX0=
23+
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
24+
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
25+
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
26+
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
27+
lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg=
28+
lukechampine.com/blake3 v1.4.1/go.mod h1:QFosUxmjB8mnrWFSNwKmvxHpfY72bmD2tQ0kBMM3kwo=

0 commit comments

Comments
 (0)