caip

package module
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2022 License: MIT Imports: 11 Imported by: 0

README

go-caip

CAIP standard utils

Installation

go get github.com/ChainAgnostic/go-caip

ChainID (CAIP-2)

// From namespace + reference
c, err := NewChainID("eip155", "1")
if err != nil {
    panic(err)
}
c.String() // "eip155:1"

// Parse CAIP-2 ChainID
c := ChainID{}
if err := c.Parse("eip155:1"); err != nil {
    panic(err)
}

b, err := json.Marshal(c) // {"namespace": "eip155", "reference": "1"}

c := ChainID{}
err := json.Unmarshal(b, &c)

AccountID (CAIP-10)

// From chain id + address
a, err := NewAccountID{ChainID{"eip155", "1"}, "0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb"}
if err != nil {
    panic(err)
}
a.String() // "eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb"

// Parse CAIP-10 AccountID
a := AccountID{}
if err := a.Parse("eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb"); err != nil {
    panic(err)
}

b, err := json.Marshal(a) // { "ahain_id": {"namespace": "eip155", "reference": "1"}, "account_address": 0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb" }

a := new(AccountID)
err := json.Unmarshal(b, &a)

AssetID (CAIP-19)

// From namespace + reference
a, err := NewAssetID(ChainID{"eip155", "1"}, "erc20", "0x6b175474e89094c44da98b954eedeac495271d0f")
if err != nil {
    panic(err)
}
a.String() // "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"

// Parse CAIP-19 AssetID
a := AssetID{}
if err := a.Parse("eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f"); err != nil {
    panic(err)
}

b, err := json.Marshal(a) // { "chain_id": {"namespace": "eip155", "reference": "1"}, "asset_namespace": erc20", "asset_reference": "0x6b175474e89094c44da98b954eedeac495271d0f" }

a := AssetID{}
err := json.Unmarshal(b, a)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountID

type AccountID struct {
	ChainID ChainID `json:"chain_id"`
	Address string  `json:"account_address"`
}

func NewAccountID added in v0.1.0

func NewAccountID(chainID ChainID, address string) (AccountID, error)

func UnsafeAccountID added in v0.1.3

func UnsafeAccountID(chainID ChainID, address string) AccountID

func (AccountID) MarshalGQL added in v0.1.15

func (c AccountID) MarshalGQL(w io.Writer)

func (AccountID) MarshalJSON

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

func (*AccountID) Parse

func (c *AccountID) Parse(s string) error

func (*AccountID) ParseX added in v0.1.1

func (c *AccountID) ParseX(s string)

func (*AccountID) Scan

func (c *AccountID) Scan(src interface{}) error

func (AccountID) String

func (c AccountID) String() string

func (*AccountID) UnmarshalGQL added in v0.1.15

func (c *AccountID) UnmarshalGQL(v interface{}) error

func (*AccountID) UnmarshalJSON

func (c *AccountID) UnmarshalJSON(data []byte) error

func (AccountID) Validate added in v0.1.4

func (c AccountID) Validate() error

func (AccountID) Value

func (c AccountID) Value() (driver.Value, error)

type AssetID added in v0.0.3

type AssetID struct {
	ChainID   ChainID `json:"chain_id"`
	Namespace string  `json:"asset_namespace"`
	Reference string  `json:"asset_reference"`
}

func NewAssetID added in v0.1.0

func NewAssetID(chainID ChainID, namespace, reference string) (AssetID, error)

func UnsafeAssetID added in v0.1.3

func UnsafeAssetID(chainID ChainID, namespace, reference string) AssetID

func (AssetID) MarshalGQL added in v0.1.15

func (a AssetID) MarshalGQL(w io.Writer)

func (AssetID) MarshalJSON added in v0.0.3

func (a AssetID) MarshalJSON() ([]byte, error)

func (*AssetID) Parse added in v0.0.3

func (a *AssetID) Parse(s string) error

func (*AssetID) ParseX added in v0.1.1

func (a *AssetID) ParseX(s string)

func (*AssetID) Scan added in v0.0.3

func (a *AssetID) Scan(src interface{}) error

func (AssetID) String added in v0.0.3

func (a AssetID) String() string

func (*AssetID) UnmarshalGQL added in v0.1.15

func (a *AssetID) UnmarshalGQL(v interface{}) error

func (*AssetID) UnmarshalJSON added in v0.0.3

func (a *AssetID) UnmarshalJSON(data []byte) error

func (AssetID) Validate added in v0.1.4

func (a AssetID) Validate() error

func (AssetID) Value added in v0.0.3

func (a AssetID) Value() (driver.Value, error)

type ChainID

type ChainID struct {
	Namespace string `json:"namespace"`
	Reference string `json:"reference"`
}

func NewChainID added in v0.1.0

func NewChainID(namespace, reference string) (ChainID, error)

func UnsafeChainID added in v0.1.3

func UnsafeChainID(namespace, reference string) ChainID

func (ChainID) MarshalGQL added in v0.1.15

func (c ChainID) MarshalGQL(w io.Writer)

func (ChainID) MarshalJSON

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

func (*ChainID) Parse

func (c *ChainID) Parse(s string) error

func (*ChainID) ParseX added in v0.1.1

func (c *ChainID) ParseX(s string)

func (*ChainID) Scan

func (c *ChainID) Scan(src interface{}) error

func (ChainID) String

func (c ChainID) String() string

func (*ChainID) UnmarshalGQL added in v0.1.15

func (c *ChainID) UnmarshalGQL(v interface{}) error

func (*ChainID) UnmarshalJSON

func (c *ChainID) UnmarshalJSON(data []byte) error

func (ChainID) Validate added in v0.1.4

func (c ChainID) Validate() error

func (ChainID) Value

func (c ChainID) Value() (driver.Value, error)

type ERC20AssetID added in v0.1.2

type ERC20AssetID struct {
	EVMAssetID
}

func NewERC20AssetID added in v0.1.2

func NewERC20AssetID(chainID ChainID, namespace, reference string) (ERC20AssetID, error)

func UnsafeERC20AssetID added in v0.1.3

func UnsafeERC20AssetID(chainID ChainID, namespace, reference string) ERC20AssetID

func (ERC20AssetID) Validate added in v0.1.10

func (a ERC20AssetID) Validate() error

type ERC721AssetID added in v0.1.2

type ERC721AssetID struct {
	EVMAssetID
}

func NewERC721AssetID added in v0.1.2

func NewERC721AssetID(chainID ChainID, namespace, reference string) (ERC721AssetID, error)

func UnsafeERC721AssetID added in v0.1.3

func UnsafeERC721AssetID(chainID ChainID, namespace, reference string) ERC721AssetID

func (ERC721AssetID) Address added in v0.1.2

func (a ERC721AssetID) Address() common.Address

func (ERC721AssetID) Validate added in v0.1.10

func (a ERC721AssetID) Validate() error

type EVMAccountID added in v0.1.2

type EVMAccountID struct {
	EVMAddressable
	AccountID
}

func NewEVMAccountID added in v0.1.2

func NewEVMAccountID(chainID ChainID, address string) (EVMAccountID, error)

func UnsafeEVMAccountID added in v0.1.3

func UnsafeEVMAccountID(chainID ChainID, address string) EVMAccountID

func (EVMAccountID) Address added in v0.1.2

func (a EVMAccountID) Address() common.Address

func (EVMAccountID) Validate added in v0.1.7

func (a EVMAccountID) Validate() error

type EVMAddressable added in v0.1.2

type EVMAddressable interface {
	Address() common.Address
}

type EVMAssetID added in v0.1.10

type EVMAssetID struct {
	EVMAddressable
	AssetID
}

func NewEVMAssetID added in v0.1.10

func NewEVMAssetID(chainID ChainID, namespace, reference string) (EVMAssetID, error)

func UnsafeEVMAssetID added in v0.1.10

func UnsafeEVMAssetID(chainID ChainID, namespace, reference string) EVMAssetID

func (EVMAssetID) AccountID added in v0.1.13

func (a EVMAssetID) AccountID() EVMAccountID

func (EVMAssetID) Address added in v0.1.10

func (a EVMAssetID) Address() common.Address

func (EVMAssetID) Validate added in v0.1.10

func (a EVMAssetID) Validate() error

Jump to

Keyboard shortcuts

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