core

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2023 License: Apache-2.0, MIT Imports: 12 Imported by: 17

README

go-iden3-core

Go Reference Go Report Card Test Lint

Low level API to create and manipulate iden3 claims and identifiers.

Protocol specification

The protocol specification is available in the protocol

Tutorials

Tutorials are available in the tutorials

Testing

go test ./...

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.

License

go-iden3-core is part of the iden3 project copyright 2018 0kims Association

This project is licensed under either of

at your option.

Documentation

Overview

Package core contains a low level API to create and manipulate claims.

Claims are created using the constructor function core.NewClaim. It accepts core.SchemaHash and a number of core.Option functions.

Index

Examples

Constants

View Source
const (
	SlotNameIndexA = SlotName("IndexA")
	SlotNameIndexB = SlotName("IndexB")
	SlotNameValueA = SlotName("ValueA")
	SlotNameValueB = SlotName("ValueB")
)
View Source
const DIDSchema = "did"

DIDSchema DID Schema

Variables

View Source
var (
	// ErrInvalidDID invalid did format.
	ErrInvalidDID = errors.New("invalid did format")
	// ErrDIDMethodNotSupported unsupported did method.
	ErrDIDMethodNotSupported = errors.New("did method is not supported")
	// ErrNetworkNotSupportedForDID unsupported network for did.
	ErrNetworkNotSupportedForDID = errors.New("network in not supported for did")
)
View Source
var (
	// TypeDefault specifies the regular identity
	// - first 2 bytes: `00000000 00000000`
	TypeDefault = [2]byte{0x00, 0x00}

	// TypeReadOnly specifies the readonly identity, this type of identity MUST not be published on chain
	// - first 2 bytes: `00000000 00000001`
	TypeReadOnly = [2]byte{0b00000000, 0b00000001}
)
View Source
var AuthSchemaHash = SchemaHash{204, 163, 55, 26, 108, 177, 183, 21, 0, 68, 7, 227, 37, 189, 153, 60}

AuthSchemaHash predefined value of auth schema, used for auth claim during identity creation. This schema is hardcoded in the identity circuits and used to verify user's auth claim. Keccak256(https://schema.iden3.io/core/jsonld/auth.jsonld#AuthBJJCredential) last 16 bytes Hex: cca3371a6cb1b715004407e325bd993c BigInt: 80551937543569765027552589160822318028

View Source
var DIDMethodByte = map[DIDMethod]byte{
	DIDMethodIden3:     0b00000001,
	DIDMethodPolygonID: 0b00000010,
}

DIDMethodByte did method flag representation

View Source
var DIDMethodNetwork = map[DIDMethod]map[DIDNetworkFlag]byte{
	DIDMethodIden3: {
		{Blockchain: NoChain, NetworkID: NoNetwork}: 0b00000000,

		{Blockchain: Polygon, NetworkID: Main}:   0b00010000 | 0b00000001,
		{Blockchain: Polygon, NetworkID: Mumbai}: 0b00010000 | 0b00000010,

		{Blockchain: Ethereum, NetworkID: Main}:   0b00100000 | 0b00000001,
		{Blockchain: Ethereum, NetworkID: Goerli}: 0b00100000 | 0b00000010,
	},
	DIDMethodPolygonID: {
		{Blockchain: NoChain, NetworkID: NoNetwork}: 0b00000000,

		{Blockchain: Polygon, NetworkID: Main}:   0b00010000 | 0b00000001,
		{Blockchain: Polygon, NetworkID: Mumbai}: 0b00010000 | 0b00000010,
	},
}

DIDMethodNetwork is map for did methods and their blockchain networks

View Source
var ErrDataOverflow = errors.New("data does not fits SNARK size")

ErrDataOverflow means that given *big.Int value does not fit in Field Q e.g. greater than Q constant:

Q constant: 21888242871839275222246405745257275088548364400416034343698204186575808495617
View Source
var ErrIncorrectIDPosition = errors.New("incorrect ID position")

ErrIncorrectIDPosition means that passed position is not one of predefined: IDPositionIndex or IDPositionValue

View Source
var ErrIncorrectMerklizedPosition = errors.New("incorrect Merklized position")

ErrIncorrectMerklizedPosition means that passed position is not one of predefined: MerklizedRootPositionIndex or MerklizedRootPositionValue

View Source
var ErrInvalidSubjectPosition = errors.New("invalid subject position")

ErrInvalidSubjectPosition returns when subject position flags sets in invalid value.

View Source
var ErrNoID = errors.New("ID is not set")

ErrNoID returns when ID not found in the Claim.

View Source
var ErrNoMerklizedRoot = errors.New("Merklized root is not set")

ErrNoMerklizedRoot returns when Merklized Root is not found in the Claim.

Functions

func BuildDIDType added in v1.0.0

func BuildDIDType(method DIDMethod, blockchain Blockchain, network NetworkID) ([2]byte, error)

BuildDIDType builds bytes type from chain and network

func CalculateChecksum

func CalculateChecksum(typ [2]byte, genesis [27]byte) [2]byte

CalculateChecksum returns the checksum for a given type and genesis_root, where checksum:

hash( [type | root_genesis ] )

func CheckChecksum

func CheckChecksum(id ID) bool

CheckChecksum returns a bool indicating if the ID.Checksum is consistent with the rest of the ID data

func CheckGenesisStateID added in v1.0.0

func CheckGenesisStateID(id, state *big.Int) (bool, error)

CheckGenesisStateID check if the state is genesis for the id.

func DecomposeID

func DecomposeID(id ID) ([2]byte, [27]byte, [2]byte, error)

DecomposeID returns type, genesis and checksum from an ID

func ElemBytesToInts added in v0.0.13

func ElemBytesToInts(elements []ElemBytes) []*big.Int

ElemBytesToInts converts slice of ElemBytes to slice of *big.Int

func IdenState

func IdenState(clr, rer, ror *big.Int) (*big.Int, error)

IdenState calculates the Identity State from the Claims Tree Root, Revocation Tree Root and Roots Tree Root.

Types

type Blockchain added in v0.0.13

type Blockchain string

Blockchain id of the network "eth", "polygon", etc.

const (
	// Ethereum is ethereum blockchain network
	Ethereum Blockchain = "eth"
	// Polygon is polygon blockchain network
	Polygon Blockchain = "polygon"
	// UnknownChain is used when it's not possible to retrieve blockchain type from identifier
	UnknownChain Blockchain = "unknown"
	// NoChain should be used for readonly identity to build readonly flag
	NoChain Blockchain = ""
)

func FindBlockchainForDIDMethodByValue added in v1.0.0

func FindBlockchainForDIDMethodByValue(method DIDMethod, _v byte) (Blockchain, error)

FindBlockchainForDIDMethodByValue finds blockchain type by byte value

type Claim

type Claim struct {
	// contains filtered or unexported fields
}

func NewClaim

func NewClaim(sh SchemaHash, options ...Option) (*Claim, error)

NewClaim creates new Claim with specified SchemaHash and any number of options. Using options you can specify any field in claim.

Example
var schemaHash SchemaHash
expDate := time.Date(2021, 1, 10, 20, 30, 0, 0, time.UTC)
claim, err := NewClaim(schemaHash,
	WithExpirationDate(expDate),
	WithVersion(42))
if err != nil {
	panic(err)
}
expDateRes, ok := claim.GetExpirationDate()
fmt.Println(ok)
fmt.Println(expDateRes.In(time.UTC).Format(time.RFC3339))

fmt.Println(claim.GetVersion())

indexEntry, valueEntry := claim.RawSlots()
indexHash, err := poseidon.Hash(ElemBytesToInts(indexEntry[:]))
if err != nil {
	panic(err)
}
valueHash, err := poseidon.Hash(ElemBytesToInts(valueEntry[:]))
if err != nil {
	panic(err)
}

indexSlot, err := NewElemBytesFromInt(indexHash)
if err != nil {
	panic(err)
}
valueSlot, err := NewElemBytesFromInt(valueHash)
if err != nil {
	panic(err)
}

fmt.Println(hex.EncodeToString(indexSlot[:]))
fmt.Println(hex.EncodeToString(valueSlot[:]))
Output:

true
2021-01-10T20:30:00Z
42
a07b32a81b631544f9199f4bf429ad2026baec31ba5e5e707a49cc2c9d243f18
8e6bca4b559d758eca7b6125faea23ed0765cdcb6f85b3fe9477ca4293a6fd05

func (*Claim) Clone

func (c *Claim) Clone() *Claim

Clone returns full deep copy of claim

func (*Claim) FromHex added in v1.0.0

func (c *Claim) FromHex(hexStr string) error

func (*Claim) GetExpirationDate

func (c *Claim) GetExpirationDate() (time.Time, bool)

GetExpirationDate returns expiration date and flag. Flag is true if expiration date is present, false if null.

func (*Claim) GetFlagUpdatable

func (c *Claim) GetFlagUpdatable() bool

GetFlagUpdatable returns claim's flag `updatable`

func (*Claim) GetID

func (c *Claim) GetID() (ID, error)

GetID returns ID from claim's index of value. Returns error ErrNoID if ID is not set.

func (*Claim) GetIDPosition added in v0.0.17

func (c *Claim) GetIDPosition() (IDPosition, error)

GetIDPosition returns the position at which the ID is stored.

func (*Claim) GetMerklizedPosition added in v1.0.0

func (c *Claim) GetMerklizedPosition() (MerklizedRootPosition, error)

GetMerklizedPosition returns the position at which the Merklize flag is stored.

func (*Claim) GetMerklizedRoot added in v1.0.0

func (c *Claim) GetMerklizedRoot() (*big.Int, error)

GetMerklizedRoot returns merklized root from claim's index of value. Returns error ErrNoMerklizedRoot if MerklizedRoot is not set.

func (*Claim) GetRevocationNonce

func (c *Claim) GetRevocationNonce() uint64

GetRevocationNonce returns revocation nonce

func (*Claim) GetSchemaHash

func (c *Claim) GetSchemaHash() SchemaHash

GetSchemaHash return copy of claim's schema hash.

func (*Claim) GetVersion

func (c *Claim) GetVersion() uint32

GetVersion returns claim's version

func (*Claim) HIndex added in v0.0.14

func (c *Claim) HIndex() (*big.Int, error)

HIndex calculates the hash of the Index of the Claim

func (*Claim) HValue added in v0.0.14

func (c *Claim) HValue() (*big.Int, error)

HValue calculates the hash of the Value of the Claim

func (Claim) Hex added in v1.0.0

func (c Claim) Hex() (string, error)

Hex returns hex representation of binary claim

func (*Claim) HiHv added in v0.0.14

func (c *Claim) HiHv() (*big.Int, *big.Int, error)

HiHv returns the HIndex and HValue of the Claim

func (Claim) MarshalBinary added in v0.0.14

func (c Claim) MarshalBinary() ([]byte, error)

func (Claim) MarshalJSON added in v0.0.14

func (c Claim) MarshalJSON() ([]byte, error)

func (*Claim) RawSlots added in v0.0.13

func (c *Claim) RawSlots() (index [4]ElemBytes, value [4]ElemBytes)

RawSlots returns raw bytes of claim's index and value

func (*Claim) RawSlotsAsInts added in v0.0.14

func (c *Claim) RawSlotsAsInts() []*big.Int

RawSlotsAsInts returns slots as []*big.Int

func (*Claim) ResetExpirationDate

func (c *Claim) ResetExpirationDate()

ResetExpirationDate removes expiration date from claim

func (*Claim) ResetID

func (c *Claim) ResetID()

ResetID deletes ID from index and from value.

func (*Claim) SetExpirationDate

func (c *Claim) SetExpirationDate(dt time.Time)

SetExpirationDate sets expiration date to dt

func (*Claim) SetFlagUpdatable

func (c *Claim) SetFlagUpdatable(val bool)

SetFlagUpdatable sets claim's flag `updatable`

func (*Claim) SetIndexData

func (c *Claim) SetIndexData(slotA, slotB ElemBytes) error

SetIndexData sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetIndexDataBytes

func (c *Claim) SetIndexDataBytes(slotA, slotB []byte) error

SetIndexDataBytes sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetIndexDataInts

func (c *Claim) SetIndexDataInts(slotA, slotB *big.Int) error

SetIndexDataInts sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetIndexID

func (c *Claim) SetIndexID(id ID)

SetIndexID sets id to index. Removes id from value if any.

func (*Claim) SetIndexMerklizedRoot added in v1.0.0

func (c *Claim) SetIndexMerklizedRoot(r *big.Int) error

SetIndexMerklizedRoot sets merklized root to index. Removes root from value[2] if any.

func (*Claim) SetRevocationNonce

func (c *Claim) SetRevocationNonce(nonce uint64)

SetRevocationNonce sets claim's revocation nonce

func (*Claim) SetSchemaHash

func (c *Claim) SetSchemaHash(sh SchemaHash)

SetSchemaHash updates claim's schema hash.

func (*Claim) SetValueData

func (c *Claim) SetValueData(slotA, slotB ElemBytes) error

SetValueData sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetValueDataBytes

func (c *Claim) SetValueDataBytes(slotA, slotB []byte) error

SetValueDataBytes sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetValueDataInts

func (c *Claim) SetValueDataInts(slotA, slotB *big.Int) error

SetValueDataInts sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func (*Claim) SetValueID

func (c *Claim) SetValueID(id ID)

SetValueID sets id to value. Removes id from index if any.

func (*Claim) SetValueMerklizedRoot added in v1.0.0

func (c *Claim) SetValueMerklizedRoot(r *big.Int) error

SetValueMerklizedRoot sets merklized root to value. Removes root from index[2] if any.

func (*Claim) SetVersion

func (c *Claim) SetVersion(ver uint32)

SetVersion sets claim's version

func (*Claim) UnmarshalBinary added in v0.0.14

func (c *Claim) UnmarshalBinary(data []byte) error

func (*Claim) UnmarshalJSON added in v0.0.14

func (c *Claim) UnmarshalJSON(in []byte) error

type DID added in v0.0.13

type DID struct {
	ID         ID         // ID did specific id
	Method     DIDMethod  // DIDMethod did method
	Blockchain Blockchain // Blockchain network identifier eth / polygon,...
	NetworkID  NetworkID  // NetworkID specific network identifier eth {main, ropsten, rinkeby, kovan}
}

DID Decentralized Identifiers (DIDs) https://w3c.github.io/did-core/#did-syntax

func DIDGenesisFromIdenState added in v1.0.0

func DIDGenesisFromIdenState(typ [2]byte, state *big.Int) (*DID, error)

DIDGenesisFromIdenState calculates the genesis ID from an Identity State and returns it as DID

func ParseDID added in v0.0.13

func ParseDID(didStr string) (*DID, error)

ParseDID method parse string and extract DID if string is valid Iden3 identifier

func ParseDIDFromID added in v1.0.0

func ParseDIDFromID(id ID) (*DID, error)

ParseDIDFromID returns did from ID

func (*DID) MarshalJSON added in v1.0.0

func (did *DID) MarshalJSON() ([]byte, error)

func (*DID) SetString added in v1.0.0

func (did *DID) SetString(didStr string) error

func (*DID) String added in v0.0.13

func (did *DID) String() string

String did as a string

func (*DID) UnmarshalJSON added in v1.0.0

func (did *DID) UnmarshalJSON(bytes []byte) error

type DIDMethod added in v0.0.13

type DIDMethod string

DIDMethod represents did methods

const (
	// DIDMethodIden3 DID method-name
	DIDMethodIden3 DIDMethod = "iden3"
	// DIDMethodPolygonID DID method-name
	DIDMethodPolygonID DIDMethod = "polygonid"
)

func FindDIDMethodByValue added in v1.0.0

func FindDIDMethodByValue(_v byte) (DIDMethod, error)

FindDIDMethodByValue finds did method by its byte value

type DIDNetworkFlag added in v1.0.0

type DIDNetworkFlag struct {
	Blockchain Blockchain
	NetworkID  NetworkID
}

DIDNetworkFlag is a structure to represent DID blockchain and network id

type ElemBytes added in v0.0.13

type ElemBytes [32]byte

ElemBytes length is 32 bytes. But not all 32-byte values are valid. The value should be not greater than Q constant 21888242871839275222246405745257275088548364400416034343698204186575808495617

func NewElemBytesFromInt added in v0.0.13

func NewElemBytesFromInt(i *big.Int) (ElemBytes, error)

NewElemBytesFromInt creates new ElemBytes from *big.Int. Returns error ErrDataOverflow if value is too large to fill the Field Q.

func (ElemBytes) Hex added in v0.0.13

func (el ElemBytes) Hex() string

Hex returns HEX representation of ElemBytes

func (*ElemBytes) SetInt added in v0.0.13

func (el *ElemBytes) SetInt(value *big.Int) error

SetInt sets element's data to serialized value of *big.Int in little-endian. And checks that the value is valid (fits in Field Q). Returns ErrDataOverflow if the value is too large

func (ElemBytes) ToInt added in v0.0.13

func (el ElemBytes) ToInt() *big.Int

ToInt returns *big.Int representation of ElemBytes.

type ErrSlotOverflow

type ErrSlotOverflow struct {
	Field SlotName
}

ErrSlotOverflow means some ElemBytes overflows Q Field. And wraps the name of overflowed slot.

func (ErrSlotOverflow) Error

func (e ErrSlotOverflow) Error() string

type ID

type ID [idLength]byte

ID is a byte array with [ type | root_genesis | checksum ] [2 bytes | 27 bytes | 2 bytes ] where the root_genesis are the first 28 bytes from the hash root_genesis

func IDFromBytes

func IDFromBytes(b []byte) (ID, error)

IDFromBytes returns the ID from a given byte array

func IDFromInt added in v0.0.15

func IDFromInt(i *big.Int) (ID, error)

IDFromInt returns the ID from a given big.Int

func IDFromString

func IDFromString(s string) (ID, error)

IDFromString returns the ID from a given string

func IdGenesisFromIdenState

func IdGenesisFromIdenState(typ [2]byte,
	state *big.Int) (*ID, error)

IdGenesisFromIdenState calculates the genesis ID from an Identity State.

func NewID

func NewID(typ [2]byte, genesis [27]byte) ID

NewID creates a new ID from a type and genesis

func ProfileID added in v1.0.0

func ProfileID(id ID, nonce *big.Int) (ID, error)

ProfileID calculates the Profile ID from the Identity and profile nonce. If nonce is empty or zero ID is returned

func (*ID) BigInt

func (id *ID) BigInt() *big.Int

func (*ID) Bytes

func (id *ID) Bytes() []byte

Bytes returns the bytes from the ID

func (*ID) Equal

func (id *ID) Equal(id2 *ID) bool

func (*ID) Equals

func (id *ID) Equals(id2 *ID) bool

func (ID) MarshalText

func (id ID) MarshalText() ([]byte, error)

func (*ID) String

func (id *ID) String() string

String returns a base58 from the ID

func (*ID) Type added in v1.0.0

func (id *ID) Type() [2]byte

func (*ID) UnmarshalText

func (id *ID) UnmarshalText(b []byte) error

type IDPosition

type IDPosition uint8
const (
	// IDPositionNone means ID value not located in claim.
	IDPositionNone IDPosition = iota
	// IDPositionIndex means ID value is in index slots.
	IDPositionIndex
	// IDPositionValue means ID value is in value slots.
	IDPositionValue
)

type MerklizedRootPosition added in v1.0.0

type MerklizedRootPosition uint8
const (
	// MerklizedRootPositionNone means root data value not located in claim.
	MerklizedRootPositionNone MerklizedRootPosition = iota
	// MerklizedRootPositionIndex means root data value is in index slots.
	MerklizedRootPositionIndex
	// MerklizedRootPositionValue means root data value is in value slots.
	MerklizedRootPositionValue
)

type NetworkID added in v0.0.13

type NetworkID string

NetworkID is method specific network identifier

const (
	// Main is ethereum main network
	Main NetworkID = "main"
	// Mumbai is polygon mumbai test network
	Mumbai NetworkID = "mumbai"

	// Goerli is ethereum goerli test network
	Goerli NetworkID = "goerli" // goerli
	// UnknownNetwork is used when it's not possible to retrieve network from identifier
	UnknownNetwork NetworkID = "unknown"

	// NoNetwork should be used for readonly identity to build readonly flag
	NoNetwork NetworkID = ""
)

func FindNetworkIDForDIDMethodByValue added in v1.0.0

func FindNetworkIDForDIDMethodByValue(method DIDMethod, _v byte) (NetworkID, error)

FindNetworkIDForDIDMethodByValue finds network by byte value

type Option

type Option func(*Claim) error

Option provides the ability to set different Claim's fields on construction

func WithExpirationDate

func WithExpirationDate(dt time.Time) Option

WithExpirationDate sets claim's expiration date to `dt`.

func WithFlagMerklized added in v1.0.0

func WithFlagMerklized(p MerklizedRootPosition) Option

WithFlagMerklized sets claim's flag `merklize`

func WithFlagUpdatable

func WithFlagUpdatable(val bool) Option

WithFlagUpdatable sets claim's flag `updatable`

func WithID

func WithID(id ID, pos IDPosition) Option

WithID sets ID to claim's index or value depending on `pos`.

func WithIndexData

func WithIndexData(slotA, slotB ElemBytes) Option

WithIndexData sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithIndexDataBytes

func WithIndexDataBytes(slotA, slotB []byte) Option

WithIndexDataBytes sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithIndexDataInts

func WithIndexDataInts(slotA, slotB *big.Int) Option

WithIndexDataInts sets data to index slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithIndexID

func WithIndexID(id ID) Option

WithIndexID sets ID to claim's index

func WithIndexMerklizedRoot added in v1.0.0

func WithIndexMerklizedRoot(r *big.Int) Option

WithIndexMerklizedRoot sets root to index i_2 Returns ErrSlotOverflow if root value are too big.

func WithMerklizedRoot added in v1.0.0

func WithMerklizedRoot(r *big.Int, pos MerklizedRootPosition) Option

WithMerklizedRoot sets root to value v_2 or index i_2 Returns ErrSlotOverflow if root value are too big.

func WithRevocationNonce

func WithRevocationNonce(nonce uint64) Option

WithRevocationNonce sets claim's revocation nonce.

func WithValueData

func WithValueData(slotA, slotB ElemBytes) Option

WithValueData sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithValueDataBytes

func WithValueDataBytes(slotA, slotB []byte) Option

WithValueDataBytes sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithValueDataInts

func WithValueDataInts(slotA, slotB *big.Int) Option

WithValueDataInts sets data to value slots A & B. Returns ErrSlotOverflow if slotA or slotB value are too big.

func WithValueID

func WithValueID(id ID) Option

WithValueID sets ID to claim's value

func WithValueMerklizedRoot added in v1.0.0

func WithValueMerklizedRoot(r *big.Int) Option

WithValueMerklizedRoot sets root to value v_2 Returns ErrSlotOverflow if root value are too big.

func WithVersion

func WithVersion(ver uint32) Option

WithVersion sets claim's version

type SchemaHash

type SchemaHash [schemaHashLn]byte

SchemaHash is a 16-bytes hash of file's content, that describes claim structure.

func NewSchemaHashFromHex added in v0.0.14

func NewSchemaHashFromHex(s string) (SchemaHash, error)

NewSchemaHashFromHex creates new SchemaHash from hex string

func NewSchemaHashFromInt added in v0.0.16

func NewSchemaHashFromInt(i *big.Int) SchemaHash

NewSchemaHashFromInt creates new SchemaHash from big.Int

func (SchemaHash) BigInt added in v0.0.16

func (sh SchemaHash) BigInt() *big.Int

BigInt returns a bigInt presentation of SchemaHash

func (SchemaHash) MarshalText

func (sh SchemaHash) MarshalText() ([]byte, error)

MarshalText returns HEX representation of SchemaHash.

Returning error is always nil.

type SlotName

type SlotName string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL