摘要:
一个自描述地址项目
详情:
go-cid
定义全局变量:
编码器类型:
"v0": DagProtobuf, //0x70
"raw": Raw, //
"protobuf": DagProtobuf,
"cbor": DagCBOR,
"libp2p-key": Libp2pKey,
"git-raw": GitRaw,
"eth-block": EthBlock, //以太坊块
"eth-block-list": EthBlockList,
"eth-tx-trie": EthTxTrie,
"eth-tx": EthTx, //0x93 以太坊传输块
"eth-tx-receipt-trie": EthTxReceiptTrie,
"eth-tx-receipt": EthTxReceipt,
"eth-state-trie": EthStateTrie,
"eth-account-snapshot": EthAccountSnapshot,
"eth-storage-trie": EthStorageTrie,
"bitcoin-block": BitcoinBlock,
"bitcoin-tx": BitcoinTx,
"zcash-block": ZcashBlock,
"zcash-tx": ZcashTx,
"decred-block": DecredBlock,
"decred-tx": DecredTx,
"dash-block": DashBlock,
"dash-tx": DashTx,
"fil-commitment-unsealed": FilCommitmentUnsealed,
"fil-commitment-sealed": FilCommitmentSealed,
定义全局函数:
func Fuzz(data []byte) int //测试cid的相关转换函数是否有效
func NewCidV0(mhash mh.Multihash) Cid // 新建一个cid包裹的multihash(推荐优先使用NewCidV1)
func NewCidV1(codecType uint64, mhash mh.Multihash) Cid // 新建一个cid包裹的multihash
func Parse(v interface{}) (Cid, error) //将对象解析成cid
func Decode(v string) (Cid, error)//str解码成Cid
func ExtractEncoding(v string) (mbase.Encoding, error) // 提取编码器
func Cast(data []byte) (Cid, error) // byte数组转cid (数据格式:版本 编码器类型 multihash)
func PrefixFromBytes(buf []byte) (Prefix, error) // 二进制数组转前缀
func CidFromBytes(data []byte) (int, Cid, error) // 二进制数组转cid
func NewPrefixV0(mhType uint64) Prefix //new一个v0版本的前缀
func NewPrefixV1(codecType uint64, mhType uint64) Prefix //new一个v1版本的前缀
定义接口:
type Builder interface { //构造器
Sum(data []byte)(Cid, error)
GetCodec() uint64
WithCodec(uint64) Builder
}
定义类:
//v0版本构建器
type V0Builder struct{}
func(p V0Builder) Sum(data []byte)(Cid, error)
func (p V0Builder) GetCodec() uint64
func (p V0Builder) WithCodec(c uint64) Builder
//v1版本构建器
type V1Builder struct{
Codec uint64
MhType uint64
MhLength int
}
func (p V1Builder) Sum(data []byte) (Cid, error)
func (p V1Builder) GetCodec() uint64
func (p V1Builder) WithCodec(c uint64) Builder
// 前缀
type Prefix struct {
Version uint64 //版本
Codec uint64 //编解码器
MhType uint64 //multihash版本
MhLength int //multihash长
}
func (p Prefix) Sum(data []byte) (Cid, error) // 与二进制数组求和并返回一个cid
func (p Prefix) Bytes() []byte // 返回前缀的二进制数组
func(p Prefix) GetCodec() uint64
func(p Prefix) WithCodec(c uint64) Builder
//自描述地址
type Cid struct{
str string
}
func (c Cid) Defined() bool //是否已被定义
func (c *Cid) UnmarshalBinary(data []byte) error // 解析二进制数组
func (c *Cid) UnmarshalText(text []byte) error // 解析文本
func (c Cid) Version() uint64// 返回cid版本 0或1
func (c Cid) Type() uint64 // 返回cid类型
func (c Cid) String() string // 返回 版本0:b58str 版本1:b32str
func (c Cid) StringOfBase(base mbase.Encoding) (string, error) // 返回str的进制
func (c Cid) Encode(base mbase.Encoder) string // cid编码成str
func (c Cid) Hash() mh.Multihash // 返回cid的hash
func (c Cid) Bytes() []byte // 返回cid的二进制数据
func (c Cid) ByteLen() int // 返回cid的二进制数据长度
func (c Cid) WriteBytes(w io.Writer) (int, error) // 写入二进制数据
func (c Cid) MarshalBinary() ([]byte, error) // 格式化二进制
func (c Cid) MarshalText() ([]byte, error) // 格式化文本
func (c Cid) Equals(o Cid) bool // 判断2个cid是否相等
func (c *Cid) UnmarshalJSON(b []byte) error // 反格式化json转为cid
func (c Cid) MarshalJSON() ([]byte, error) // 格式化json
func (c Cid) KeyString() string // 返回string类型的cid内容
func (c Cid) Loggable() map[string]interface{} // 导出map["cid"]cid 这种格式
func (c Cid) Prefix() Prefix // 返回前缀