bk

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2023 License: MIT Imports: 15 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TypeVerify added in v1.0.3

func TypeVerify(t Type) *errors.Error

Types

type BID

type BID string
const (
	NilBID     BID = ""
	GenesisBID BID = "$"
)

func BuildBID added in v1.0.3

func BuildBID(data Invariable) (BID, *errors.Error)

func (BID) S

func (b BID) S() string

type Book

type Book interface {
	RegisterDataType(tpl interface{})
	Inscribe(data Invariable) (BID, *errors.Error)
}

type Chain

type Chain string

func CoinChain added in v1.0.3

func CoinChain() Chain

func SPChain added in v1.0.3

func SPChain(vnID vn.ID) Chain

func VNChain added in v1.0.3

func VNChain() Chain

func YinChain added in v1.0.3

func YinChain(vnID vn.ID, yin yn.Code) Chain

func (Chain) S

func (c Chain) S() string

func (Chain) Verify added in v1.0.3

func (c Chain) Verify() *errors.Error

type CoinLead added in v1.0.3

type CoinLead struct {
	Coin       uc.Code `json:"coin"`
	Invariable BID     `json:"invariable"`
}

func (*CoinLead) S added in v1.0.3

func (lead *CoinLead) S() string

type Invariable

type Invariable interface {
	GetType() Type
	GetVersion() Version
	GetVN() vn.ID
	GetTimestamp() int64
	GetSignature() []byte
}

func BuildGenesis added in v1.0.3

func BuildGenesis() Invariable

type InvariableCoin added in v1.0.3

type InvariableCoin struct {
	Type      Type       `json:"type"`
	Version   Version    `json:"version"`
	Vn        *VNLead    `json:"vn"`
	Coin      *CoinLead  `bson:"coin" json:"coin"`
	Wei       uc.WEI     `bson:"wei" json:"wei"`
	Infinite  bool       `bson:"infinite" json:"infinite"`
	Issuance  *uc.Amount `bson:"issuance" json:"issuance"`
	Timestamp int64      `json:"timestamp"`
	Signature []byte     `json:"signature"`
}

func NewInvariableCoin added in v1.0.3

func NewInvariableCoin(
	vnLead *VNLead,
	coin *CoinLead,
	wei uc.WEI,
	infinite bool,
	issuance *uc.Amount,
	guardian *ki.Ki,
) (*InvariableCoin, *errors.Error)

func (*InvariableCoin) GetSignature added in v1.0.3

func (i *InvariableCoin) GetSignature() []byte

func (*InvariableCoin) GetTimestamp added in v1.0.3

func (i *InvariableCoin) GetTimestamp() int64

func (*InvariableCoin) GetType added in v1.0.3

func (i *InvariableCoin) GetType() Type

func (*InvariableCoin) GetVN added in v1.0.3

func (i *InvariableCoin) GetVN() vn.ID

func (*InvariableCoin) GetVersion added in v1.0.3

func (i *InvariableCoin) GetVersion() Version

func (*InvariableCoin) Sign added in v1.0.3

func (i *InvariableCoin) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableCoin) SignVerify added in v1.0.3

func (i *InvariableCoin) SignVerify(guardianPub ki.PUB) (bool, *errors.Error)

type InvariableGenesis added in v1.0.3

type InvariableGenesis struct {
	Type    Type    `json:"type"`
	Version Version `json:"version"`
	Chain   Chain   `json:"chain"`
	Vn      vn.ID   `json:"vn"`
}

func NewInvariableGenesis added in v1.0.3

func NewInvariableGenesis(vnID vn.ID, chain Chain) *InvariableGenesis

func (*InvariableGenesis) GetSignature added in v1.0.3

func (i *InvariableGenesis) GetSignature() []byte

func (*InvariableGenesis) GetTimestamp added in v1.0.3

func (i *InvariableGenesis) GetTimestamp() int64

func (*InvariableGenesis) GetType added in v1.0.3

func (i *InvariableGenesis) GetType() Type

func (*InvariableGenesis) GetVN added in v1.0.3

func (i *InvariableGenesis) GetVN() vn.ID

func (*InvariableGenesis) GetVersion added in v1.0.3

func (i *InvariableGenesis) GetVersion() Version

type InvariableLead added in v1.0.3

type InvariableLead struct {
	Type       Type    `json:"type"`
	Version    Version `json:"version"`
	Invariable BID     `json:"invariable"`
}

func (*InvariableLead) S added in v1.0.3

func (lead *InvariableLead) S() string

type InvariableNFT added in v1.0.3

type InvariableNFT struct {
	Type        Type         `json:"type"`
	Version     Version      `json:"version"`
	Vn          *VNLead      `json:"vn"`
	Category    nft.Category `json:"category"`
	Token       nft.Token    `json:"token"`
	Tag         []nft.Tag    `json:"tag"`
	Link        nft.Link     `json:"link"`
	Title       string       `json:"title"`
	Description string       `json:"desc"`
	Meta        nft.Meta     `json:"meta"`
	Timestamp   int64        `json:"timestamp"`
	Signature   []byte       `json:"signature"`
}

func NewInvariableNFT added in v1.0.3

func NewInvariableNFT(
	vnLead *VNLead,
	nftM *nft.NFT,
	vnGuardianPri ki.PRI,
) (*InvariableNFT, *errors.Error)

func (*InvariableNFT) GetSignature added in v1.0.3

func (i *InvariableNFT) GetSignature() []byte

func (*InvariableNFT) GetTimestamp added in v1.0.3

func (i *InvariableNFT) GetTimestamp() int64

func (*InvariableNFT) GetType added in v1.0.3

func (i *InvariableNFT) GetType() Type

func (*InvariableNFT) GetVN added in v1.0.3

func (i *InvariableNFT) GetVN() vn.ID

func (*InvariableNFT) GetVersion added in v1.0.3

func (i *InvariableNFT) GetVersion() Version

func (*InvariableNFT) Sign added in v1.0.3

func (i *InvariableNFT) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableNFT) SignVerify added in v1.0.3

func (i *InvariableNFT) SignVerify(vnGuardianPub ki.PUB) (bool, *errors.Error)

type InvariableSP added in v1.0.3

type InvariableSP struct {
	Type      Type    `json:"type"`
	Version   Version `json:"version"`
	Vn        *VNLead `json:"vn"`
	Sp        sp.ID   `json:"sp"`
	Guardian  *Ki     `json:"guardian"`
	Timestamp int64   `json:"timestamp"`
	Signature []byte  `json:"signature"`
}

func NewInvariableSP added in v1.0.3

func NewInvariableSP(vnLead *VNLead, spID sp.ID, guardian *ki.Ki, tag []Tag) (*InvariableSP, *errors.Error)

func (*InvariableSP) GetSP added in v1.0.3

func (i *InvariableSP) GetSP() sp.ID

func (*InvariableSP) GetSignature added in v1.0.3

func (i *InvariableSP) GetSignature() []byte

func (*InvariableSP) GetTimestamp added in v1.0.3

func (i *InvariableSP) GetTimestamp() int64

func (*InvariableSP) GetType added in v1.0.3

func (i *InvariableSP) GetType() Type

func (*InvariableSP) GetVN added in v1.0.3

func (i *InvariableSP) GetVN() vn.ID

func (*InvariableSP) GetVersion added in v1.0.3

func (i *InvariableSP) GetVersion() Version

func (*InvariableSP) Sign added in v1.0.3

func (i *InvariableSP) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableSP) SignVerify added in v1.0.3

func (i *InvariableSP) SignVerify(originPub ki.PUB) (bool, *errors.Error)

type InvariableTemplate added in v1.0.3

type InvariableTemplate struct {
	Type      Type    `json:"type"`
	Version   Version `json:"version"`
	Vn        vn.ID   `json:"vn"`
	Timestamp int64   `json:"timestamp"`
	Signature []byte  `json:"signature"`
}

func (*InvariableTemplate) GetSignature added in v1.0.3

func (i *InvariableTemplate) GetSignature() []byte

func (*InvariableTemplate) GetTimestamp added in v1.0.3

func (i *InvariableTemplate) GetTimestamp() int64

func (*InvariableTemplate) GetType added in v1.0.3

func (i *InvariableTemplate) GetType() Type

func (*InvariableTemplate) GetVN added in v1.0.3

func (i *InvariableTemplate) GetVN() vn.ID

func (*InvariableTemplate) GetVersion added in v1.0.3

func (i *InvariableTemplate) GetVersion() Version

type InvariableTx added in v1.0.3

type InvariableTx struct {
	Type      Type       `json:"type"`
	Version   Version    `json:"version"`
	Tx        string     `json:"tx"`
	Coin      *CoinLead  `json:"coin"`
	From      ki.ADR     `json:"from"`
	To        ki.ADR     `json:"to"`
	Amount    *uc.Amount `json:"amount"`
	Timestamp int64      `json:"timestamp"`
	Signature []byte     `json:"signature"`
}

func NewInvariableTx added in v1.0.3

func NewInvariableTx(
	coin *CoinLead,
	from ki.ADR,
	to ki.ADR,
	amount *uc.Amount,
	guardianPri ki.PRI,
) (*InvariableTx, *errors.Error)

func (*InvariableTx) GetSignature added in v1.0.3

func (i *InvariableTx) GetSignature() []byte

func (*InvariableTx) GetTimestamp added in v1.0.3

func (i *InvariableTx) GetTimestamp() int64

func (*InvariableTx) GetType added in v1.0.3

func (i *InvariableTx) GetType() Type

func (*InvariableTx) GetVersion added in v1.0.3

func (i *InvariableTx) GetVersion() Version

func (*InvariableTx) Sign added in v1.0.3

func (i *InvariableTx) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableTx) SignVerify added in v1.0.3

func (i *InvariableTx) SignVerify(guardianPub ki.PUB) (bool, *errors.Error)

type InvariableVN added in v1.0.3

type InvariableVN struct {
	Type      Type    `json:"type"`
	Version   Version `json:"version"`
	Vn        vn.ID   `json:"vn"`
	Guardian  *Ki     `json:"guardian"`
	Timestamp int64   `json:"timestamp"`
	Signature []byte  `json:"signature"`
}

func NewInvariableVN added in v1.0.3

func NewInvariableVN(originBID BID, vnID vn.ID, guardian *ki.Ki, tag []Tag) (*InvariableVN, *errors.Error)

func (*InvariableVN) GetSignature added in v1.0.3

func (i *InvariableVN) GetSignature() []byte

func (*InvariableVN) GetTimestamp added in v1.0.3

func (i *InvariableVN) GetTimestamp() int64

func (*InvariableVN) GetType added in v1.0.3

func (i *InvariableVN) GetType() Type

func (*InvariableVN) GetVN added in v1.0.3

func (i *InvariableVN) GetVN() vn.ID

func (*InvariableVN) GetVersion added in v1.0.3

func (i *InvariableVN) GetVersion() Version

func (*InvariableVN) Sign added in v1.0.3

func (i *InvariableVN) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableVN) SignVerify added in v1.0.3

func (i *InvariableVN) SignVerify() (bool, *errors.Error)

type InvariableYin added in v1.0.3

type InvariableYin struct {
	Type      Type        `json:"type"`
	Version   Version     `json:"version"`
	Vn        *VNLead     `json:"vn"`
	Sp        *SPLead     `json:"sp"`
	Tag       []Tag       `json:"tag"`
	Who       *yn.Who     `json:"who"`
	When      yn.When     `json:"when"`
	Act       yn.Act      `json:"act"`
	What      *yn.What    `json:"what"`
	Exp       *yn.Expense `json:"exp"`
	Title     yn.Title    `json:"title"`
	Data      []byte      `json:"data"`
	Timestamp int64       `json:"timestamp"`
	Signature []byte      `json:"signature"`
}

func NewInvariableYin added in v1.0.3

func NewInvariableYin(yin *yn.Yin, vnLead *VNLead, spLead *SPLead, vnGuardianPri ki.PRI) (*InvariableYin, *errors.Error)

func (*InvariableYin) GetSignature added in v1.0.3

func (i *InvariableYin) GetSignature() []byte

func (*InvariableYin) GetTimestamp added in v1.0.3

func (i *InvariableYin) GetTimestamp() int64

func (*InvariableYin) GetType added in v1.0.3

func (i *InvariableYin) GetType() Type

func (*InvariableYin) GetVN added in v1.0.3

func (i *InvariableYin) GetVN() vn.ID

func (*InvariableYin) GetVersion added in v1.0.3

func (i *InvariableYin) GetVersion() Version

func (*InvariableYin) Sign added in v1.0.3

func (i *InvariableYin) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*InvariableYin) SignVerify added in v1.0.3

func (i *InvariableYin) SignVerify(originPub ki.PUB) (bool, *errors.Error)

type Ki added in v1.0.3

type Ki struct {
	Addr ki.ADR `json:"addr"`
	Pub  []byte `json:"pub"`
}

func KiOf added in v1.0.3

func KiOf(guardian *ki.Ki) *Ki

func (*Ki) ToString added in v1.0.3

func (ki *Ki) ToString() string

type Knot added in v1.0.3

type Knot struct {
	Type       Type            `json:"type"`
	Version    Version         `json:"version"`
	Vn         vn.ID           `json:"vn"`
	Chain      Chain           `json:"chain"`
	Knot       KnotIDX         `json:"knot"`
	Invariable *InvariableLead `json:"invariable"`
	Previous   BID             `json:"previous"`
	Timestamp  int64           `json:"timestamp"`
	Signature  []byte          `json:"signature"`
}

func NewKnot added in v1.0.3

func NewKnot(rope Rope, tie *Tie) (*Knot, *errors.Error)

func (*Knot) GetChain added in v1.0.3

func (k *Knot) GetChain() Chain

func (*Knot) GetPrevious added in v1.0.3

func (k *Knot) GetPrevious() BID

func (*Knot) GetSignature added in v1.0.3

func (k *Knot) GetSignature() []byte

func (*Knot) GetTimestamp added in v1.0.3

func (k *Knot) GetTimestamp() int64

func (*Knot) GetType added in v1.0.3

func (k *Knot) GetType() Type

func (*Knot) GetVN added in v1.0.3

func (k *Knot) GetVN() vn.ID

func (*Knot) GetVersion added in v1.0.3

func (k *Knot) GetVersion() Version

type KnotIDX added in v1.0.3

type KnotIDX int64
const (
	GenesisKnotIDX KnotIDX = 0
)

func (KnotIDX) Next added in v1.0.3

func (knotIdx KnotIDX) Next() KnotIDX

func (KnotIDX) Previous added in v1.0.3

func (knotIdx KnotIDX) Previous() KnotIDX

func (KnotIDX) S added in v1.0.3

func (knotIdx KnotIDX) S() string

type Linkable

type Linkable interface {
	GetType() Type
	GetVersion() Version
	GetChain() Chain
	GetPrevious() BID
	GetTimestamp() int64
	GetSignature() []byte
}

type Rope added in v1.0.3

type Rope interface {
	GetChain() Chain
	GetTailKnotIDX() KnotIDX
	GetTailKnotBID() BID
}

type SPLead added in v1.0.3

type SPLead struct {
	Sp         sp.ID `json:"sp"`
	Invariable BID   `json:"invariable"`
}

func (*SPLead) S added in v1.0.3

func (lead *SPLead) S() string

type SignBuilder added in v1.0.3

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

func NewSignBuilder added in v1.0.3

func NewSignBuilder() *SignBuilder

func (*SignBuilder) Add added in v1.0.3

func (b *SignBuilder) Add(key string, val string) *SignBuilder

func (*SignBuilder) Build added in v1.0.3

func (b *SignBuilder) Build() string

func (*SignBuilder) Hash added in v1.0.3

func (b *SignBuilder) Hash() string

func (*SignBuilder) Sign added in v1.0.3

func (b *SignBuilder) Sign(privateKey ki.PRI) (string, *errors.Error)

func (*SignBuilder) Verify added in v1.0.3

func (b *SignBuilder) Verify(publicKey ki.PUB, signStr string) (bool, *errors.Error)

type Tag added in v1.0.3

type Tag = string

type Tie added in v1.0.3

type Tie struct {
	Tie        string          `json:"tie"`
	Type       Type            `json:"type"`
	Version    Version         `json:"version"`
	Vn         vn.ID           `json:"vn"`
	Chain      Chain           `json:"chain"`
	Invariable *InvariableLead `json:"invariable"`
	Timestamp  int64           `json:"timestamp"`
	Signature  []byte          `json:"signature"`
}

func NewTie added in v1.0.3

func NewTie(chain Chain, invariable Invariable, vnGuardianPri ki.PRI) (*Tie, *errors.Error)

func (*Tie) Sign added in v1.0.3

func (i *Tie) Sign(pri ki.PRI) ([]byte, *errors.Error)

func (*Tie) SignVerify added in v1.0.3

func (i *Tie) SignVerify(vnGuardianPub ki.PUB) (bool, *errors.Error)

type Type

type Type string
const (
	GenesisType Type = "genesis"
	ChainType   Type = "chain"
)
const (
	InvariableCoinType    Type = "hotu.coin"
	InvariableCoinVersion      = DefaultVersion
)
const (
	InvariableGenesisType    Type = "hotu.chain.genesis"
	InvariableGenesisVersion      = DefaultVersion
)
const (
	InvariableNFTType    Type = "hotu.nft"
	InvariableNFTVersion      = DefaultVersion
)
const (
	InvariableSPType    Type = "hotu.sp"
	InvariableSPVersion      = DefaultVersion
)
const (
	InvariableTxType    Type = "hotu.tx"
	InvariableTxVersion      = DefaultVersion
)
const (
	InvariableVNType    Type = "hotu.vn"
	InvariableVNVersion      = DefaultVersion
)
const (
	InvariableYinType    Type = "yin"
	InvariableYinVersion      = DefaultVersion
)
const (
	KnotType    Type = "knot"
	KnotVersion      = DefaultVersion
)
const (
	TieType    Type = "hotu.tie"
	TieVersion      = DefaultVersion
)

func (Type) S

func (t Type) S() string

type VNLead added in v1.0.3

type VNLead struct {
	Vn         vn.ID `json:"vn"`
	Invariable BID   `json:"invariable"`
}

func (*VNLead) S added in v1.0.3

func (lead *VNLead) S() string

type Version added in v1.0.3

type Version int64
const (
	DefaultVersion Version = 1
)

func (Version) S added in v1.0.3

func (v Version) S() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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