Documentation ¶
Index ¶
- Constants
- Variables
- type Credential
- type Factory
- type Fx
- func (fx *Fx) Bootstrapped() error
- func (*Fx) Bootstrapping() error
- func (*Fx) CreateOutput(amount uint64, ownerIntf interface{}) (interface{}, error)
- func (fx *Fx) Initialize(vmIntf interface{}) error
- func (fx *Fx) InitializeVM(vmIntf interface{}) error
- func (fx *Fx) VerifyCredentials(utx UnsignedTx, in *Input, cred *Credential, out *OutputOwners) error
- func (fx *Fx) VerifyOperation(txIntf, opIntf, credIntf interface{}, utxosIntf []interface{}) error
- func (fx *Fx) VerifyPermission(txIntf, inIntf, credIntf, ownerIntf interface{}) error
- func (fx *Fx) VerifySpend(utx UnsignedTx, in *TransferInput, cred *Credential, utxo *TransferOutput) error
- func (fx *Fx) VerifyTransfer(txIntf, inIntf, credIntf, utxoIntf interface{}) error
- type Input
- type Keychain
- func (kc *Keychain) Add(key *secp256k1.PrivateKey)
- func (kc Keychain) Addresses() set.Set[ids.ShortID]
- func (kc Keychain) Get(id ids.ShortID) (keychain.Signer, bool)
- func (kc *Keychain) Match(owners *OutputOwners, time uint64) ([]uint32, []*secp256k1.PrivateKey, bool)
- func (kc *Keychain) New() (*secp256k1.PrivateKey, error)
- func (kc *Keychain) PrefixedString(prefix string) string
- func (kc *Keychain) Spend(out verify.Verifiable, time uint64) (verify.Verifiable, []*secp256k1.PrivateKey, error)
- func (kc *Keychain) String() string
- type MintOperation
- type MintOutput
- type OutputOwners
- func (out *OutputOwners) Addresses() [][]byte
- func (out *OutputOwners) AddressesSet() set.Set[ids.ShortID]
- func (out *OutputOwners) Equals(other *OutputOwners) bool
- func (out *OutputOwners) Fields() (map[string]interface{}, error)
- func (out *OutputOwners) InitCtx(ctx *snow.Context)
- func (out *OutputOwners) MarshalJSON() ([]byte, error)
- func (out *OutputOwners) Sort()
- func (out *OutputOwners) Verify() error
- func (out *OutputOwners) VerifyState() error
- type TestTx
- type TestVM
- type TransferInput
- type TransferOutput
- type UnsignedTx
- type VM
Constants ¶
const (
CostPerSignature uint64 = 1000
)
Variables ¶
var ( // ID that this Fx uses when labeled ID = ids.ID{'s', 'e', 'c', 'p', '2', '5', '6', 'k', '1', 'f', 'x'} )
Functions ¶
This section is empty.
Types ¶
type Credential ¶
type Credential struct {
Sigs [][secp256k1.SignatureLen]byte `serialize:"true" json:"signatures"`
}
func (*Credential) MarshalJSON ¶ added in v0.8.0
func (cr *Credential) MarshalJSON() ([]byte, error)
MarshalJSON marshals [cr] to JSON The string representation of each signature is created using the hex formatter
func (*Credential) Verify ¶
func (cr *Credential) Verify() error
type Fx ¶
Fx describes the secp256k1 feature extension
func (*Fx) Bootstrapped ¶ added in v0.8.0
func (*Fx) Bootstrapping ¶ added in v0.8.0
func (*Fx) CreateOutput ¶ added in v0.8.0
CreateOutput creates a new output with the provided control group worth the specified amount
func (*Fx) Initialize ¶
func (*Fx) InitializeVM ¶
func (*Fx) VerifyCredentials ¶
func (fx *Fx) VerifyCredentials(utx UnsignedTx, in *Input, cred *Credential, out *OutputOwners) error
VerifyCredentials ensures that the output can be spent by the input with the credential. A nil return values means the output can be spent.
func (*Fx) VerifyOperation ¶
func (*Fx) VerifyPermission ¶ added in v0.8.0
VerifyPermission returns nil iff [credIntf] proves that [controlGroup] assents to [txIntf]
func (*Fx) VerifySpend ¶
func (fx *Fx) VerifySpend(utx UnsignedTx, in *TransferInput, cred *Credential, utxo *TransferOutput) error
VerifySpend ensures that the utxo can be sent to any address
func (*Fx) VerifyTransfer ¶
type Input ¶
type Input struct { // This input consumes an output, which has an owner list. // This input will be spent with a list of signatures. // SignatureList[i] is the signature of OwnerList[i] SigIndices []uint32 `serialize:"true" json:"signatureIndices"` }
type Keychain ¶
type Keychain struct { // These can be used to iterate over. However, they should not be modified externally. Addrs set.Set[ids.ShortID] Keys []*secp256k1.PrivateKey // contains filtered or unexported fields }
Keychain is a collection of keys that can be used to spend outputs
func NewKeychain ¶
func NewKeychain(keys ...*secp256k1.PrivateKey) *Keychain
NewKeychain returns a new keychain containing [keys]
func (*Keychain) Add ¶
func (kc *Keychain) Add(key *secp256k1.PrivateKey)
Add a new key to the key chain
func (Keychain) Get ¶
Get a key from the keychain. If the key is unknown, return a pointer to an empty key. In both cases also return a boolean telling whether the key is known.
func (*Keychain) Match ¶
func (kc *Keychain) Match(owners *OutputOwners, time uint64) ([]uint32, []*secp256k1.PrivateKey, bool)
Match attempts to match a list of addresses up to the provided threshold
func (*Keychain) New ¶
func (kc *Keychain) New() (*secp256k1.PrivateKey, error)
New returns a newly generated private key
func (*Keychain) PrefixedString ¶
PrefixedString returns the key chain as a string representation with [prefix] added before every line.
func (*Keychain) Spend ¶
func (kc *Keychain) Spend(out verify.Verifiable, time uint64) (verify.Verifiable, []*secp256k1.PrivateKey, error)
Spend attempts to create an input
type MintOperation ¶
type MintOperation struct { MintInput Input `serialize:"true" json:"mintInput"` MintOutput MintOutput `serialize:"true" json:"mintOutput"` TransferOutput TransferOutput `serialize:"true" json:"transferOutput"` }
func (*MintOperation) Cost ¶ added in v1.5.0
func (op *MintOperation) Cost() (uint64, error)
func (*MintOperation) InitCtx ¶ added in v1.4.12
func (op *MintOperation) InitCtx(ctx *snow.Context)
func (*MintOperation) Outs ¶
func (op *MintOperation) Outs() []verify.State
func (*MintOperation) Verify ¶
func (op *MintOperation) Verify() error
type MintOutput ¶
type MintOutput struct {
OutputOwners `serialize:"true"`
}
func (*MintOutput) Verify ¶
func (out *MintOutput) Verify() error
func (*MintOutput) VerifyState ¶ added in v0.8.0
func (out *MintOutput) VerifyState() error
type OutputOwners ¶
type OutputOwners struct { Locktime uint64 `serialize:"true" json:"locktime"` Threshold uint32 `serialize:"true" json:"threshold"` Addrs []ids.ShortID `serialize:"true" json:"addresses"` // contains filtered or unexported fields }
func (*OutputOwners) Addresses ¶
func (out *OutputOwners) Addresses() [][]byte
Addresses returns the addresses that manage this output
func (*OutputOwners) AddressesSet ¶ added in v0.8.0
func (out *OutputOwners) AddressesSet() set.Set[ids.ShortID]
AddressesSet returns addresses as a set
func (*OutputOwners) Equals ¶
func (out *OutputOwners) Equals(other *OutputOwners) bool
Equals returns true if the provided owners create the same condition
func (*OutputOwners) Fields ¶ added in v1.5.1
func (out *OutputOwners) Fields() (map[string]interface{}, error)
Fields returns JSON keys in a map that can be used with marshal JSON to serialise OutputOwners struct
func (*OutputOwners) InitCtx ¶ added in v1.4.12
func (out *OutputOwners) InitCtx(ctx *snow.Context)
InitCtx assigns the OutputOwners.ctx object to given [ctx] object Must be called at least once for MarshalJSON to work successfully
func (*OutputOwners) MarshalJSON ¶ added in v1.4.12
func (out *OutputOwners) MarshalJSON() ([]byte, error)
MarshalJSON marshals OutputOwners as JSON with human readable addresses. OutputOwners.InitCtx must be called before marshalling this or one of the parent objects to json. Uses the OutputOwners.ctx method to format the addresses. Returns errMarshal error if OutputOwners.ctx is not set.
func (*OutputOwners) Sort ¶
func (out *OutputOwners) Sort()
func (*OutputOwners) Verify ¶
func (out *OutputOwners) Verify() error
func (*OutputOwners) VerifyState ¶ added in v0.8.0
func (out *OutputOwners) VerifyState() error
type TestVM ¶
TestVM is a minimal implementation of a VM
func (*TestVM) CodecRegistry ¶ added in v1.0.6
type TransferInput ¶
func (*TransferInput) Amount ¶
func (in *TransferInput) Amount() uint64
Amount returns the quantity of the asset this input produces
func (*TransferInput) InitCtx ¶ added in v1.4.12
func (*TransferInput) InitCtx(*snow.Context)
func (*TransferInput) Verify ¶
func (in *TransferInput) Verify() error
Verify this input is syntactically valid
type TransferOutput ¶
type TransferOutput struct { Amt uint64 `serialize:"true" json:"amount"` OutputOwners `serialize:"true"` }
func (*TransferOutput) Amount ¶
func (out *TransferOutput) Amount() uint64
Amount returns the quantity of the asset this output consumes
func (*TransferOutput) MarshalJSON ¶ added in v1.5.1
func (out *TransferOutput) MarshalJSON() ([]byte, error)
MarshalJSON marshals Amt and the embedded OutputOwners struct into a JSON readable format If OutputOwners cannot be serialised then this will return error
func (*TransferOutput) Owners ¶ added in v0.8.0
func (out *TransferOutput) Owners() interface{}
func (*TransferOutput) Verify ¶
func (out *TransferOutput) Verify() error
func (*TransferOutput) VerifyState ¶ added in v0.8.0
func (out *TransferOutput) VerifyState() error
type UnsignedTx ¶ added in v1.7.14
type UnsignedTx interface {
Bytes() []byte
}
UnsignedTx that this Fx is supporting