Documentation
¶
Index ¶
- Variables
- type CoinCreationTransaction
- type CoinCreationTransactionController
- func (cctc CoinCreationTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
- func (cctc CoinCreationTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
- func (cctc CoinCreationTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
- func (cctc CoinCreationTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
- func (cctc CoinCreationTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
- func (cctc CoinCreationTransactionController) SignExtension(extension interface{}, ...) (interface{}, error)
- func (cctc CoinCreationTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
- type CoinCreationTransactionExtension
- type CoinDestructionTransaction
- type CoinDestructionTransactionController
- func (cdtc CoinDestructionTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
- func (cdtc CoinDestructionTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
- func (cdtc CoinDestructionTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
- func (cdtc CoinDestructionTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
- func (cdtc CoinDestructionTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
- func (cdtc CoinDestructionTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
- type MintConditionGetter
- type MinterDefinitionTransaction
- type MinterDefinitionTransactionController
- func (mdtc MinterDefinitionTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
- func (mdtc MinterDefinitionTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
- func (mdtc MinterDefinitionTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
- func (mdtc MinterDefinitionTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
- func (mdtc MinterDefinitionTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
- func (mdtc MinterDefinitionTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
- func (mdtc MinterDefinitionTransactionController) SignExtension(extension interface{}, ...) (interface{}, error)
- func (mdtc MinterDefinitionTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
- type MinterDefinitionTransactionExtension
- type MintingBaseTransactionController
- type MintingMinerFeeBaseTransactionController
- type Plugin
- func (p *Plugin) ApplyBlock(block modules.ConsensusBlock, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) ApplyBlockHeader(modules.ConsensusBlockHeader, *persist.LazyBoltBucket) error
- func (p *Plugin) ApplyTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) Close() error
- func (p *Plugin) GetActiveMintCondition() (types.UnlockConditionProxy, error)
- func (p *Plugin) GetMintConditionAt(height types.BlockHeight) (types.UnlockConditionProxy, error)
- func (p *Plugin) InitPlugin(metadata *persist.Metadata, bucket *bolt.Bucket, ...) (persist.Metadata, error)
- func (p *Plugin) RevertBlock(block modules.ConsensusBlock, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) RevertBlockHeader(modules.ConsensusBlockHeader, *persist.LazyBoltBucket) error
- func (p *Plugin) RevertTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) TransactionValidatorVersionFunctionMapping() map[types.TransactionVersion][]modules.PluginTransactionValidationFunction
- func (p *Plugin) TransactionValidators() []modules.PluginTransactionValidationFunction
- type PluginOptions
Constants ¶
This section is empty.
Variables ¶
var ( SpecifierMintDefinitionTransaction = types.Specifier{'m', 'i', 'n', 't', 'e', 'r', ' ', 'd', 'e', 'f', 'i', 'n', ' ', 't', 'x'} SpecifierCoinCreationTransaction = types.Specifier{'c', 'o', 'i', 'n', ' ', 'm', 'i', 'n', 't', ' ', 't', 'x'} SpecifierCoinDestructionTransaction = types.Specifier{'c', 'o', 'i', 'n', ' ', 'd', 'e', 's', 't', 'r', 'o', 'y', ' ', 't', 'x'} )
These Specifiers are used internally when calculating a Transaction's ID. See Rivine's Specifier for more details.
Functions ¶
This section is empty.
Types ¶
type CoinCreationTransaction ¶
type CoinCreationTransaction struct { // Nonce used to ensure the uniqueness of a CoinCreationTransaction's ID and signature. Nonce types.TransactionNonce `json:"nonce"` // MintFulfillment defines the fulfillment which is used in order to // fulfill the globally defined MintCondition. MintFulfillment types.UnlockFulfillmentProxy `json:"mintfulfillment"` // CoinOutputs defines the coin outputs, // which contain the freshly created coins, adding to the total pool of coins // available in the rivine network. CoinOutputs []types.CoinOutput `json:"coinoutputs"` // Minerfees, a fee paid for this coin creation transaction. MinerFees []types.Currency `json:"minerfees,omitempty"` // ArbitraryData can be used for any purpose, // but is mostly to be used in order to define the reason/origins // of the coin creation. ArbitraryData []byte `json:"arbitrarydata,omitempty"` }
CoinCreationTransaction is to be created only by the defined Coin Minters, as a medium in order to create coins (coin outputs), without backing them (so without having to spend previously unspend coin outputs, see: coin inputs).
func CoinCreationTransactionFromTransaction ¶
func CoinCreationTransactionFromTransaction(tx types.Transaction, expectedVersion types.TransactionVersion, requireMinerFees bool) (CoinCreationTransaction, error)
CoinCreationTransactionFromTransaction creates a CoinCreationTransaction, using a regular in-memory rivine transaction.
Past the (tx) Version validation it piggy-backs onto the `CoinCreationTransactionFromTransactionData` constructor.
func CoinCreationTransactionFromTransactionData ¶
func CoinCreationTransactionFromTransactionData(txData types.TransactionData, requireMinerFees bool) (CoinCreationTransaction, error)
CoinCreationTransactionFromTransactionData creates a CoinCreationTransaction, using the TransactionData from a regular in-memory rivine transaction.
func (*CoinCreationTransaction) Transaction ¶
func (cctx *CoinCreationTransaction) Transaction(version types.TransactionVersion) types.Transaction
Transaction returns this CoinCreationTransaction as regular rivine transaction, using TransactionVersionCoinCreation as the type.
func (*CoinCreationTransaction) TransactionData ¶
func (cctx *CoinCreationTransaction) TransactionData() types.TransactionData
TransactionData returns this CoinCreationTransaction as regular rivine transaction data.
type CoinCreationTransactionController ¶
type CoinCreationTransactionController struct { MintingMinerFeeBaseTransactionController // MintConditionGetter is used to get a mint condition at the context-defined block height. // // The found MintCondition defines the condition that has to be fulfilled // in order to mint new coins into existence (in the form of non-backed coin outputs). MintConditionGetter MintConditionGetter // TransactionVersion is used to validate/set the transaction version // of a coin creation transaction. TransactionVersion types.TransactionVersion }
CoinCreationTransactionController defines a rivine-specific transaction controller, for a CoinCreation Transaction. It allows for the creation of Coin Outputs, without requiring coin inputs, but can only be used by the defined Coin Minters.
func (CoinCreationTransactionController) DecodeTransactionData ¶
func (cctc CoinCreationTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
DecodeTransactionData implements TransactionController.DecodeTransactionData
func (CoinCreationTransactionController) EncodeTransactionData ¶
func (cctc CoinCreationTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
EncodeTransactionData implements TransactionController.EncodeTransactionData
func (CoinCreationTransactionController) EncodeTransactionIDInput ¶
func (cctc CoinCreationTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
EncodeTransactionIDInput implements TransactionIDEncoder.EncodeTransactionIDInput
func (CoinCreationTransactionController) JSONDecodeTransactionData ¶
func (cctc CoinCreationTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
JSONDecodeTransactionData implements TransactionController.JSONDecodeTransactionData
func (CoinCreationTransactionController) JSONEncodeTransactionData ¶
func (cctc CoinCreationTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
JSONEncodeTransactionData implements TransactionController.JSONEncodeTransactionData
func (CoinCreationTransactionController) SignExtension ¶
func (cctc CoinCreationTransactionController) SignExtension(extension interface{}, sign func(*types.UnlockFulfillmentProxy, types.UnlockConditionProxy, ...interface{}) error) (interface{}, error)
SignExtension implements TransactionExtensionSigner.SignExtension
func (CoinCreationTransactionController) SignatureHash ¶
func (cctc CoinCreationTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
SignatureHash implements TransactionSignatureHasher.SignatureHash
type CoinCreationTransactionExtension ¶
type CoinCreationTransactionExtension struct { Nonce types.TransactionNonce MintFulfillment types.UnlockFulfillmentProxy }
CoinCreationTransactionExtension defines the CoinCreationTx Extension Data
type CoinDestructionTransaction ¶
type CoinDestructionTransaction struct { // CoinInputs defines the coin outputs that are being spent. CoinInputs []types.CoinInput `json:"coininputs"` // CoinOutputs defines the coin outputs, // which contain the freshly created coins, adding to the total pool of coins // available in the rivine network. CoinOutputs []types.CoinOutput `json:"coinoutputs"` // Minerfees, a fee paid for this coin destruction transaction. MinerFees []types.Currency `json:"minerfees,omitempty"` // ArbitraryData can be used for any purpose, // but is mostly to be used in order to define the reason/origins // of the coin creation. ArbitraryData []byte `json:"arbitrarydata,omitempty"` }
CoinDestructionTransaction is to to be used by anyone as a medium in order to destroy coins (coin outputs), partially or complete.
func CoinDestructionTransactionFromTransaction ¶
func CoinDestructionTransactionFromTransaction(tx types.Transaction, expectedVersion types.TransactionVersion) (CoinDestructionTransaction, error)
CoinDestructionTransactionFromTransaction creates a CoinDestructionTransaction, using a regular in-memory rivine transaction.
Past the (tx) Version validation it piggy-backs onto the `CoinCreationTransactionFromTransactionData` constructor.
func CoinDestructionTransactionFromTransactionData ¶
func CoinDestructionTransactionFromTransactionData(txData types.TransactionData) (CoinDestructionTransaction, error)
CoinDestructionTransactionFromTransactionData creates a CoinDestructionTransaction, using the TransactionData from a regular in-memory rivine transaction.
func (*CoinDestructionTransaction) Transaction ¶
func (cdtx *CoinDestructionTransaction) Transaction(version types.TransactionVersion) types.Transaction
Transaction returns this CoinDestructionTransaction as regular rivine transaction, using TransactionVersionCoinCreation as the type.
func (*CoinDestructionTransaction) TransactionData ¶
func (cdtx *CoinDestructionTransaction) TransactionData() types.TransactionData
TransactionData returns this CoinDestructionTransaction as regular rivine transaction data.
type CoinDestructionTransactionController ¶
type CoinDestructionTransactionController struct { MintingBaseTransactionController // TransactionVersion is used to validate/set the transaction version // of a coin destruction transaction. TransactionVersion types.TransactionVersion }
CoinDestructionTransactionController defines a rivine-specific transaction controller, for a CoinDestruction Transaction. It allows the destruction of coins.
func (CoinDestructionTransactionController) DecodeTransactionData ¶
func (cdtc CoinDestructionTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
DecodeTransactionData implements TransactionController.DecodeTransactionData
func (CoinDestructionTransactionController) EncodeTransactionData ¶
func (cdtc CoinDestructionTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
EncodeTransactionData implements TransactionController.EncodeTransactionData
func (CoinDestructionTransactionController) EncodeTransactionIDInput ¶
func (cdtc CoinDestructionTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
EncodeTransactionIDInput implements TransactionIDEncoder.EncodeTransactionIDInput
func (CoinDestructionTransactionController) JSONDecodeTransactionData ¶
func (cdtc CoinDestructionTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
JSONDecodeTransactionData implements TransactionController.JSONDecodeTransactionData
func (CoinDestructionTransactionController) JSONEncodeTransactionData ¶
func (cdtc CoinDestructionTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
JSONEncodeTransactionData implements TransactionController.JSONEncodeTransactionData
func (CoinDestructionTransactionController) SignatureHash ¶
func (cdtc CoinDestructionTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
SignatureHash implements TransactionSignatureHasher.SignatureHash
type MintConditionGetter ¶
type MintConditionGetter interface { // GetActiveMintCondition returns the active active mint condition. GetActiveMintCondition() (types.UnlockConditionProxy, error) // GetMintConditionAt returns the mint condition at a given block height. GetMintConditionAt(height types.BlockHeight) (types.UnlockConditionProxy, error) }
MintConditionGetter allows you to get the mint condition at a given block height.
For the daemon this interface could be implemented directly by the DB object that keeps track of the mint condition state, while for a client this could come via the REST API from a rivine daemon in a more indirect way.
type MinterDefinitionTransaction ¶
type MinterDefinitionTransaction struct { // Nonce used to ensure the uniqueness of a MinterDefinitionTransaction's ID and signature. Nonce types.TransactionNonce `json:"nonce"` // MintFulfillment defines the fulfillment which is used in order to // fulfill the globally defined MintCondition. MintFulfillment types.UnlockFulfillmentProxy `json:"mintfulfillment"` // MintCondition defines a new condition that defines who become(s) the new minter(s), // and thus defines who can create coins as well as update who is/are the current minter(s) // // UnlockHash (unlockhash type 1) and MultiSigConditions are allowed, // as well as TimeLocked conditions which have UnlockHash- and MultiSigConditions as // internal condition. MintCondition types.UnlockConditionProxy `json:"mintcondition"` // Minerfees, a fee paid for this minter definition transaction. MinerFees []types.Currency `json:"minerfees,omitempty"` // ArbitraryData can be used for any purpose, // but is mostly to be used in order to define the reason/origins // of the transfer of minting power. ArbitraryData []byte `json:"arbitrarydata,omitempty"` }
MinterDefinitionTransaction is to be created only by the defined Coin Minters, as a medium in order to transfer minting powers.
func MinterDefinitionTransactionFromTransaction ¶
func MinterDefinitionTransactionFromTransaction(tx types.Transaction, expectedVersion types.TransactionVersion, requireMinerFees bool) (MinterDefinitionTransaction, error)
MinterDefinitionTransactionFromTransaction creates a MinterDefinitionTransaction, using a regular in-memory rivine transaction.
Past the (tx) Version validation it piggy-backs onto the `MinterDefinitionTransactionFromTransactionData` constructor.
func MinterDefinitionTransactionFromTransactionData ¶
func MinterDefinitionTransactionFromTransactionData(txData types.TransactionData, requireMinerFees bool) (MinterDefinitionTransaction, error)
MinterDefinitionTransactionFromTransactionData creates a MinterDefinitionTransaction, using the TransactionData from a regular in-memory rivine transaction.
func (*MinterDefinitionTransaction) Transaction ¶
func (cctx *MinterDefinitionTransaction) Transaction(version types.TransactionVersion) types.Transaction
Transaction returns this CoinCreationTransaction as regular rivine transaction, using TransactionVersionCoinCreation as the type.
func (*MinterDefinitionTransaction) TransactionData ¶
func (cctx *MinterDefinitionTransaction) TransactionData() types.TransactionData
TransactionData returns this CoinCreationTransaction as regular rivine transaction data.
type MinterDefinitionTransactionController ¶
type MinterDefinitionTransactionController struct { MintingMinerFeeBaseTransactionController // MintConditionGetter is used to get a mint condition at the context-defined block height. // // The found MintCondition defines the condition that has to be fulfilled // in order to mint new coins into existence (in the form of non-backed coin outputs). MintConditionGetter MintConditionGetter // TransactionVersion is used to validate/set the transaction version // of a minter definitiontransaction. TransactionVersion types.TransactionVersion }
MinterDefinitionTransactionController defines a rivine-specific transaction controller, for a MinterDefinition Transaction. It allows the transfer of coin minting powers.
func (MinterDefinitionTransactionController) DecodeTransactionData ¶
func (mdtc MinterDefinitionTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
DecodeTransactionData implements TransactionController.DecodeTransactionData
func (MinterDefinitionTransactionController) EncodeTransactionData ¶
func (mdtc MinterDefinitionTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
EncodeTransactionData implements TransactionController.EncodeTransactionData
func (MinterDefinitionTransactionController) EncodeTransactionIDInput ¶
func (mdtc MinterDefinitionTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
EncodeTransactionIDInput implements TransactionIDEncoder.EncodeTransactionIDInput
func (MinterDefinitionTransactionController) GetCommonExtensionData ¶
func (mdtc MinterDefinitionTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
GetCommonExtensionData implements TransactionCommonExtensionDataGetter.GetCommonExtensionData
func (MinterDefinitionTransactionController) JSONDecodeTransactionData ¶
func (mdtc MinterDefinitionTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
JSONDecodeTransactionData implements TransactionController.JSONDecodeTransactionData
func (MinterDefinitionTransactionController) JSONEncodeTransactionData ¶
func (mdtc MinterDefinitionTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
JSONEncodeTransactionData implements TransactionController.JSONEncodeTransactionData
func (MinterDefinitionTransactionController) SignExtension ¶
func (mdtc MinterDefinitionTransactionController) SignExtension(extension interface{}, sign func(*types.UnlockFulfillmentProxy, types.UnlockConditionProxy, ...interface{}) error) (interface{}, error)
SignExtension implements TransactionExtensionSigner.SignExtension
func (MinterDefinitionTransactionController) SignatureHash ¶
func (mdtc MinterDefinitionTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
SignatureHash implements TransactionSignatureHasher.SignatureHash
type MinterDefinitionTransactionExtension ¶
type MinterDefinitionTransactionExtension struct { Nonce types.TransactionNonce MintFulfillment types.UnlockFulfillmentProxy MintCondition types.UnlockConditionProxy }
MinterDefinitionTransactionExtension defines the MinterDefinitionTx Extension Data
type MintingBaseTransactionController ¶
type MintingBaseTransactionController struct {
UseLegacySiaEncoding bool
}
MintingBaseTransactionController is the base controller for all minting controllers
type MintingMinerFeeBaseTransactionController ¶
type MintingMinerFeeBaseTransactionController struct { MintingBaseTransactionController RequireMinerFees bool }
MintingMinerFeeBaseTransactionController is the base controller for all minting controllers, that require miner fees.
type Plugin ¶
type Plugin struct {
// contains filtered or unexported fields
}
Plugin is a struct defines the minting plugin
func NewMintingPlugin ¶
func NewMintingPlugin(genesisMintCondition types.UnlockConditionProxy, minterDefinitionTransactionVersion, coinCreationTransactionVersion types.TransactionVersion, opts *PluginOptions) *Plugin
NewMintingPlugin creates a new Plugin with a genesisMintCondition and correct transaction versions
func (*Plugin) ApplyBlock ¶
func (p *Plugin) ApplyBlock(block modules.ConsensusBlock, bucket *persist.LazyBoltBucket) error
ApplyBlock applies a block's minting transactions to the minting bucket.
func (*Plugin) ApplyBlockHeader ¶ added in v1.3.1
func (p *Plugin) ApplyBlockHeader(modules.ConsensusBlockHeader, *persist.LazyBoltBucket) error
ApplyBlockHeader applies nothing and has no effect on this plugin.
func (*Plugin) ApplyTransaction ¶
func (p *Plugin) ApplyTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
ApplyTransaction applies a minting transactions to the minting bucket.
func (*Plugin) GetActiveMintCondition ¶
func (p *Plugin) GetActiveMintCondition() (types.UnlockConditionProxy, error)
GetActiveMintCondition implements types.MintConditionGetter.GetActiveMintCondition
func (*Plugin) GetMintConditionAt ¶
func (p *Plugin) GetMintConditionAt(height types.BlockHeight) (types.UnlockConditionProxy, error)
GetMintConditionAt implements types.MintConditionGetter.GetMintConditionAt
func (*Plugin) InitPlugin ¶
func (p *Plugin) InitPlugin(metadata *persist.Metadata, bucket *bolt.Bucket, storage modules.PluginViewStorage, unregisterCallback modules.PluginUnregisterCallback) (persist.Metadata, error)
InitPlugin initializes the Bucket for the first time
func (*Plugin) RevertBlock ¶
func (p *Plugin) RevertBlock(block modules.ConsensusBlock, bucket *persist.LazyBoltBucket) error
RevertBlock reverts a block's minting transaction from the minting bucket
func (*Plugin) RevertBlockHeader ¶ added in v1.3.1
func (p *Plugin) RevertBlockHeader(modules.ConsensusBlockHeader, *persist.LazyBoltBucket) error
RevertBlockHeader reverts nothing and has no effect on this plugin.
func (*Plugin) RevertTransaction ¶
func (p *Plugin) RevertTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
RevertTransaction reverts a minting transactions to the minting bucket.
func (*Plugin) TransactionValidatorVersionFunctionMapping ¶
func (p *Plugin) TransactionValidatorVersionFunctionMapping() map[types.TransactionVersion][]modules.PluginTransactionValidationFunction
TransactionValidatorVersionFunctionMapping returns all tx validators linked to this plugin
func (*Plugin) TransactionValidators ¶
func (p *Plugin) TransactionValidators() []modules.PluginTransactionValidationFunction
TransactionValidators returns all tx validators linked to this plugin
type PluginOptions ¶
type PluginOptions struct { CoinDestructionTransactionVersion types.TransactionVersion UseLegacySiaEncoding bool RequireMinerFees bool }
PluginOptions allows optional parameters to be defined for the minting plugin.