Documentation
¶
Index ¶
- Constants
- Variables
- func BuildExtraNFO(extra []byte) []byte
- func BuildMintNFO(collection string, token []byte, hash crypto.Hash) []byte
- func DecodeMixinExtra(memo string) *mixinExtraPack
- func EncodeMixinExtra(groupId, traceId, memo string) string
- func MsgpackMarshalPanic(val interface{}) []byte
- func MsgpackUnmarshal(data []byte, val interface{}) error
- type Action
- type Clock
- type CollectibleOutput
- type CollectibleTransaction
- type Configuration
- type Group
- func (grp *Group) AddNode(id string, threshold int, timestamp time.Time) error
- func (grp *Group) AddWorker(wkr Worker)
- func (grp *Group) BuildCollectibleMintTransaction(ctx context.Context, receivers []string, threshold int, nfo []byte) error
- func (grp *Group) BuildCollectibleTransferTransaction(ctx context.Context, receivers []string, threshold int, memo string, ...) error
- func (grp *Group) BuildTransaction(ctx context.Context, assetId string, receivers []string, threshold int, ...) error
- func (grp *Group) GenesisId() string
- func (grp *Group) GetMembers() []string
- func (grp *Group) GetThreshold() int
- func (grp *Group) ListActiveNodes() ([]string, int, time.Time, error)
- func (grp *Group) ListOutputsForAsset(groupId, assetId, state string, limit int) ([]*Output, error)
- func (grp *Group) RemoveNode(id string, threshold int, timestamp time.Time) error
- func (grp *Group) Run(ctx context.Context)
- func (grp *Group) SetOutputGrouper(per func(out *Output) string)
- type Iteration
- type NFOMemo
- type Output
- type Store
- type Transaction
- type UnifiedOutput
- type Worker
Constants ¶
View Source
const ( ActionStateInitial = 10 ActionStateDone = 11 )
View Source
const ( CollectibleMetaTokenId = "2f8aa18a-3cb8-31d5-95bc-5a4f2e25dc2f" CollectibleMixinAssetId = "1700941284a95f31b25ec8c546008f208f88eee4419ccdcdbe6e3195e60128ca" )
View Source
const ( IterationActionAdd = 11 IterationActionRemove = 12 )
View Source
const ( NMPrefix = "NFO" NMVersion = 0x00 )
View Source
const ( OutputStateUnspent = 10 OutputStateSigned = 11 OutputStateSpent = 12 OutputTypeMultisig = "multisig_utxo" OutputTypeCollectible = "non_fungible_output" )
View Source
const ( TransactionStateInitial = 10 TransactionStateSigning = 11 TransactionStateSigned = 12 TransactionStateSnapshot = 13 OutputsBatchSize = 36 )
Variables ¶
Functions ¶
func BuildExtraNFO ¶ added in v0.1.2
func BuildMintNFO ¶ added in v0.1.2
func DecodeMixinExtra ¶ added in v0.0.7
func DecodeMixinExtra(memo string) *mixinExtraPack
func EncodeMixinExtra ¶ added in v0.1.3
func MsgpackMarshalPanic ¶ added in v0.1.3
func MsgpackMarshalPanic(val interface{}) []byte
func MsgpackUnmarshal ¶ added in v0.1.3
Types ¶
type CollectibleOutput ¶
type CollectibleOutput struct {
Type string
UserId string
OutputId string
TokenId string
TransactionHash crypto.Hash
OutputIndex int
Amount decimal.Decimal
SendersThreshold int64
Senders []string
ReceiversThreshold int64
Receivers []string
Memo string
CreatedAt time.Time
UpdatedAt time.Time
SignedBy string
SignedTx string
State int
}
func (*CollectibleOutput) StateName ¶
func (out *CollectibleOutput) StateName() string
func (*CollectibleOutput) Unified ¶ added in v0.1.2
func (o *CollectibleOutput) Unified() *UnifiedOutput
type CollectibleTransaction ¶
type Configuration ¶
type Configuration struct {
App struct {
ClientId string `toml:"client-id"`
SessionId string `toml:"session-id"`
PrivateKey string `toml:"private-key"`
PinToken string `toml:"pin-token"`
PIN string `toml:"pin"`
} `toml:"app"`
Genesis struct {
Members []string `toml:"members"`
Threshold int `toml:"threshold"`
Timestamp int64 `toml:"timestamp"`
} `toml:"genesis"`
GroupSize int `toml:"group-size"`
}
func Setup ¶
func Setup(path string) (*Configuration, error)
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
func BuildGroup ¶
func (*Group) BuildCollectibleMintTransaction ¶
func (*Group) BuildCollectibleTransferTransaction ¶ added in v0.1.2
func (*Group) BuildTransaction ¶
func (grp *Group) BuildTransaction(ctx context.Context, assetId string, receivers []string, threshold int, amount, memo string, traceId, groupId string) error
the app should decide a unique trace id so that the MTG will not double spend
func (*Group) GetMembers ¶
func (*Group) GetThreshold ¶
func (*Group) ListActiveNodes ¶
func (*Group) ListOutputsForAsset ¶ added in v0.2.0
func (*Group) RemoveNode ¶
func (*Group) SetOutputGrouper ¶ added in v0.0.6
type Iteration ¶
a node joins or leaves the group with an iteration this is for the evolution mechanism of MTG TODO not implemented yet
type NFOMemo ¶ added in v0.1.2
type NFOMemo struct {
Prefix string
Version byte
Mask uint64
Chain uuid.UUID // 16 bytes
Class []byte // 64 bytes contract address
Collection uuid.UUID // 16 bytes
Token []byte // 64 bytes hash of content
Extra []byte
}
func DecodeNFOMemo ¶ added in v0.1.2
type Output ¶
type Output struct {
GroupId string
UserID string
UTXOID string
AssetID string
TransactionHash crypto.Hash
OutputIndex int
Sender string
Amount decimal.Decimal
Threshold uint8
Members []string
Memo string
State int
CreatedAt time.Time
UpdatedAt time.Time
SignedBy string
SignedTx string
}
func (*Output) Unified ¶ added in v0.1.2
func (o *Output) Unified() *UnifiedOutput
type Store ¶
type Store interface {
WriteProperty(key, val []byte) error
ReadProperty(key []byte) ([]byte, error)
WriteIteration(ir *Iteration) error
ListIterations() ([]*Iteration, error)
WriteOutput(utxo *Output, traceId string) error
WriteOutputs(utxos []*Output, traceId string) error
ListOutputsForTransaction(traceId string) ([]*Output, error)
ListOutputsForAsset(groupId string, state, assetId string, limit int) ([]*Output, error)
WriteAction(act *Action) error
ListActions(limit int) ([]*UnifiedOutput, error)
WriteTransaction(tx *Transaction) error
ReadTransactionByTraceId(traceId string) (*Transaction, error)
ReadTransactionByHash(hash crypto.Hash) (*Transaction, error)
ListTransactions(state int, limit int) ([]*Transaction, error)
WriteCollectibleOutput(utxo *CollectibleOutput, traceId string) error
WriteCollectibleOutputs(utxos []*CollectibleOutput, traceId string) error
ListCollectibleOutputsForTransaction(traceId string) ([]*CollectibleOutput, error)
ListCollectibleOutputsForToken(state, tokenId string, limit int) ([]*CollectibleOutput, error)
WriteCollectibleTransaction(traceId string, tx *CollectibleTransaction) error
ReadCollectibleTransaction(traceId string) (*CollectibleTransaction, error)
ReadCollectibleTransactionByHash(hash crypto.Hash) (*CollectibleTransaction, error)
ListCollectibleTransactions(state int, limit int) ([]*CollectibleTransaction, error)
}
type Transaction ¶
type UnifiedOutput ¶ added in v0.1.2
type UnifiedOutput struct {
Type string `json:"type"`
UserId string `json:"user_id"`
TransactionHash crypto.Hash `json:"transaction_hash"`
OutputIndex int `json:"output_index"`
Amount decimal.Decimal `json:"amount"`
Memo string `json:"memo"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
SignedBy string `json:"signed_by"`
SignedTx string `json:"signed_tx"`
State string `json:"state"`
UnifiedOutputId string `json:"output_id"`
UnifiedTokenId string `json:"token_id"`
UnifiedSendersThreshold int64 `json:"senders_threshold"`
UnifiedSenders []string `json:"senders"`
UnifiedReceiversThreshold int64 `json:"receivers_threshold"`
UnifiedReceivers []string `json:"receivers"`
UnifiedUTXOID string `json:"utxo_id"`
UnifiedAssetId string `json:"asset_id"`
UnifiedThreshold int64 `json:"threshold"`
UnifiedMembers []string `json:"members"`
UnifiedSender string `json:"sender"`
}
func (*UnifiedOutput) AsCollectible ¶ added in v0.1.2
func (o *UnifiedOutput) AsCollectible() *CollectibleOutput
func (*UnifiedOutput) AsMultisig ¶ added in v0.1.2
func (o *UnifiedOutput) AsMultisig() *Output
func (*UnifiedOutput) UniqueId ¶ added in v0.1.2
func (o *UnifiedOutput) UniqueId() string
Click to show internal directories.
Click to hide internal directories.