A package to handle content IDs in Go.
This is an implementation in Go of the CID spec.
It is used in go-ipfs and related packages to refer to a typed hunk of data.
go-cid is a standard Go module which can be installed with:
go get github.com/ipfs/go-cid
Run tests with go test from the directory root
go test// Create a cid from a marshaled string c, err := cid.Decode("bafzbeigai3eoy2ccc7ybwjfz5r3rdxqrinwi4rwytly24tdbh6yk7zslrm") if err != nil {...} fmt.Println("Got CID: ", c)
import ( cid "github.com/ipfs/go-cid" mc "github.com/multiformats/go-multicodec" mh "github.com/multiformats/go-multihash" ) // Create a cid manually by specifying the 'prefix' parameters pref := cid.Prefix{ Version: 1, Codec: uint64(mc.Raw), MhType: mh.SHA2_256, MhLength: -1, // default length } // And then feed it some data c, err := pref.Sum([]byte("Hello World!")) if err != nil {...} fmt.Println("Created CID: ", c)
// To test if two cid's are equivalent, be sure to use the 'Equals' method: if c1.Equals(c2) { fmt.Println("These two refer to the same exact data!") }
// To check if some data matches a given cid, // Get your CIDs prefix, and use that to sum the data in question: other, err := c.Prefix().Sum(mydata) if err != nil {...} if !c.Equals(other) { fmt.Println("This data is different.") }
PRs are welcome!
Small note: If editing the Readme, please conform to the standard-readme specification.
MIT