Documentation
¶
Index ¶
- Variables
- func DefaultUnauthorizedCoinTransactionExceptionCallback(tx modules.ConsensusTransaction, dedupAddresses []types.UnlockHash, ...) (bool, error)
- type AuthAddressUpdateTransaction
- type AuthAddressUpdateTransactionController
- func (autc AuthAddressUpdateTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
- func (autc AuthAddressUpdateTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
- func (autc AuthAddressUpdateTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
- func (autc AuthAddressUpdateTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
- func (autc AuthAddressUpdateTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
- func (autc AuthAddressUpdateTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
- func (autc AuthAddressUpdateTransactionController) SignExtension(extension interface{}, ...) (interface{}, error)
- func (autc AuthAddressUpdateTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
- type AuthAddressUpdateTransactionExtension
- type AuthConditionUpdateTransaction
- type AuthConditionUpdateTransactionController
- func (cutc AuthConditionUpdateTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
- func (cutc AuthConditionUpdateTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
- func (cutc AuthConditionUpdateTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
- func (cutc AuthConditionUpdateTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
- func (cutc AuthConditionUpdateTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
- func (cutc AuthConditionUpdateTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
- func (cutc AuthConditionUpdateTransactionController) SignExtension(extension interface{}, ...) (interface{}, error)
- func (cutc AuthConditionUpdateTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
- type AuthConditionUpdateTransactionExtension
- type AuthInfoGetter
- type Plugin
- func (p *Plugin) ApplyBlock(block modules.ConsensusBlock, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) ApplyTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) Close() error
- func (p *Plugin) GetActiveAuthCondition() (types.UnlockConditionProxy, error)
- func (p *Plugin) GetAddressesAuthStateAt(height types.BlockHeight, addresses []types.UnlockHash, ...) ([]bool, error)
- func (p *Plugin) GetAddressesAuthStateNow(addresses []types.UnlockHash, exitEarlyFn func(index int, state bool) bool) ([]bool, error)
- func (p *Plugin) GetAuthConditionAt(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) RevertTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
- func (p *Plugin) TransactionValidatorVersionFunctionMapping() map[types.TransactionVersion][]modules.PluginTransactionValidationFunction
- func (p *Plugin) TransactionValidators() []modules.PluginTransactionValidationFunction
- type PluginOpts
- type UnauthorizedCoinTransactionExceptionCallback
Constants ¶
This section is empty.
Variables ¶
var ( SpecifierAuthAddressUpdateTransaction = types.Specifier{'a', 'u', 't', 'h', ' ', 'a', 'd', 'd', 'r', ' ', 'u', 'p', 'd', 'a', 't', 'e'} SpecifierAuthConditionUpdateTransaction = types.Specifier{'a', 'u', 't', 'h', ' ', 'c', 'o', 'n', 'd', ' ', 'u', 'p', 'd', 'a', 't', 'e'} )
These Specifiers are used internally when calculating a Transaction's ID. See Rivine's Specifier for more details.
Functions ¶
func DefaultUnauthorizedCoinTransactionExceptionCallback ¶
func DefaultUnauthorizedCoinTransactionExceptionCallback(tx modules.ConsensusTransaction, dedupAddresses []types.UnlockHash, ctx types.TransactionValidationContext) (bool, error)
DefaultUnauthorizedCoinTransactionExceptionCallback is the default callback that is used in ase the auth coin plugin does not define a custom callback.
Types ¶
type AuthAddressUpdateTransaction ¶
type AuthAddressUpdateTransaction struct {
// Nonce used to ensure the uniqueness of a AuthAddressUpdateTransaction's ID and signature.
Nonce types.TransactionNonce `json:"nonce"`
// AuthAddresses contains a list of addresses to be authorized,
// it is also considered valid to authorize an address that is already authorized.
AuthAddresses []types.UnlockHash `json:"authaddresses"`
// AuthAddresses contains a list of addresses to be authorized,
// it is also considered valid to deauthorize an address that has no authorization.
DeauthAddresses []types.UnlockHash `json:"deauthaddresses"`
// ArbitraryData can be used for any purpose
ArbitraryData []byte `json:"arbitrarydata,omitempty"`
// AuthFulfillment defines the fulfillment which is used in order to
// fulfill the globally defined AuthCondition.
AuthFulfillment types.UnlockFulfillmentProxy `json:"authfulfillment"`
}
AuthAddressUpdateTransaction is to be used by the owner(s) of the Authorized Condition, as a medium in order to (de)authorize address(es).
/!\ This transaction requires NO Miner Fee.
func AuthAddressUpdateTransactionFromTransaction ¶
func AuthAddressUpdateTransactionFromTransaction(tx types.Transaction, expectedVersion types.TransactionVersion) (AuthAddressUpdateTransaction, error)
AuthAddressUpdateTransactionFromTransaction creates a AuthAddressUpdateTransaction, using a regular in-memory rivine transaction.
Past the (tx) Version validation it piggy-backs onto the `AuthAddressUpdateTransactionFromTransactionData` constructor.
func AuthAddressUpdateTransactionFromTransactionData ¶
func AuthAddressUpdateTransactionFromTransactionData(txData types.TransactionData) (AuthAddressUpdateTransaction, error)
AuthAddressUpdateTransactionFromTransactionData creates a AuthAddressUpdateTransaction, using the TransactionData from a regular in-memory rivine transaction.
func (*AuthAddressUpdateTransaction) Transaction ¶
func (autx *AuthAddressUpdateTransaction) Transaction(version types.TransactionVersion) types.Transaction
Transaction returns this AuthAddressUpdateTransaction as regular rivine transaction, using AuthAddressUpdateTransaction as the type.
func (*AuthAddressUpdateTransaction) TransactionData ¶
func (autx *AuthAddressUpdateTransaction) TransactionData() types.TransactionData
TransactionData returns this AuthAddressUpdateTransaction as regular rivine transaction data.
type AuthAddressUpdateTransactionController ¶
type AuthAddressUpdateTransactionController struct {
// AuthInfoGetter is used to get (coin) authorization information.
AuthInfoGetter AuthInfoGetter
// TransactionVersion is used to validate/set the transaction version
// of an auth address update transaction.
TransactionVersion types.TransactionVersion
}
AuthAddressUpdateTransactionController defines a custom transaction controller, for an Auth AddressUpdate Transaction. It allows the modification of the set of addresses that are authorizes in order to receive or send coins.
func (AuthAddressUpdateTransactionController) DecodeTransactionData ¶
func (autc AuthAddressUpdateTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
DecodeTransactionData implements TransactionController.DecodeTransactionData
func (AuthAddressUpdateTransactionController) EncodeTransactionData ¶
func (autc AuthAddressUpdateTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
EncodeTransactionData implements TransactionController.EncodeTransactionData
func (AuthAddressUpdateTransactionController) EncodeTransactionIDInput ¶
func (autc AuthAddressUpdateTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
EncodeTransactionIDInput implements TransactionIDEncoder.EncodeTransactionIDInput
func (AuthAddressUpdateTransactionController) GetCommonExtensionData ¶
func (autc AuthAddressUpdateTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
GetCommonExtensionData implements TransactionCommonExtensionDataGetter.GetCommonExtensionData
func (AuthAddressUpdateTransactionController) JSONDecodeTransactionData ¶
func (autc AuthAddressUpdateTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
JSONDecodeTransactionData implements TransactionController.JSONDecodeTransactionData
func (AuthAddressUpdateTransactionController) JSONEncodeTransactionData ¶
func (autc AuthAddressUpdateTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
JSONEncodeTransactionData implements TransactionController.JSONEncodeTransactionData
func (AuthAddressUpdateTransactionController) SignExtension ¶
func (autc AuthAddressUpdateTransactionController) SignExtension(extension interface{}, sign func(*types.UnlockFulfillmentProxy, types.UnlockConditionProxy, ...interface{}) error) (interface{}, error)
SignExtension implements TransactionExtensionSigner.SignExtension
func (AuthAddressUpdateTransactionController) SignatureHash ¶
func (autc AuthAddressUpdateTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
SignatureHash implements TransactionSignatureHasher.SignatureHash
type AuthAddressUpdateTransactionExtension ¶
type AuthAddressUpdateTransactionExtension struct {
Nonce types.TransactionNonce
AuthAddresses []types.UnlockHash
DeauthAddresses []types.UnlockHash
AuthFulfillment types.UnlockFulfillmentProxy
}
AuthAddressUpdateTransactionExtension defines the AuthAddressUpdateTransaction Extension Data
type AuthConditionUpdateTransaction ¶
type AuthConditionUpdateTransaction struct {
// Nonce used to ensure the uniqueness of a AuthConditionUpdateTransaction's ID and signature.
Nonce types.TransactionNonce `json:"nonce"`
// ArbitraryData can be used for any purpose
ArbitraryData []byte `json:"arbitrarydata,omitempty"`
// AuthCondition defines the condition which will have to fulfilled
// in order to prove powers of authority when changing power (again) or using those powers to update
// the set of authorized addresses.
AuthCondition types.UnlockConditionProxy `json:"authcondition"`
// AuthFulfillment defines the fulfillment which is used in order to
// fulfill the globally defined AuthCondition.
AuthFulfillment types.UnlockFulfillmentProxy `json:"authfulfillment"`
}
AuthConditionUpdateTransaction is to be used by the owner(s) of the Authorized Condition, as a medium in order transfer the authorization power to a new condition.
/!\ This transaction requires NO Miner Fee.
func AuthConditionUpdateTransactionFromTransaction ¶
func AuthConditionUpdateTransactionFromTransaction(tx types.Transaction, expectedVersion types.TransactionVersion) (AuthConditionUpdateTransaction, error)
AuthConditionUpdateTransactionFromTransaction creates a AuthConditionUpdateTransaction, using a regular in-memory rivine transaction.
Past the (tx) Version validation it piggy-backs onto the `AuthAddressUpdateTransactionFromTransactionData` constructor.
func AuthConditionUpdateTransactionFromTransactionData ¶
func AuthConditionUpdateTransactionFromTransactionData(txData types.TransactionData) (AuthConditionUpdateTransaction, error)
AuthConditionUpdateTransactionFromTransactionData creates a AuthConditionUpdateTransaction, using the TransactionData from a regular in-memory rivine transaction.
func (*AuthConditionUpdateTransaction) Transaction ¶
func (autx *AuthConditionUpdateTransaction) Transaction(version types.TransactionVersion) types.Transaction
Transaction returns this AuthAddressUpdateTransaction as regular rivine transaction, using AuthAddressUpdateTransaction as the type.
func (*AuthConditionUpdateTransaction) TransactionData ¶
func (autx *AuthConditionUpdateTransaction) TransactionData() types.TransactionData
TransactionData returns this AuthAddressUpdateTransaction as regular rivine transaction data.
type AuthConditionUpdateTransactionController ¶
type AuthConditionUpdateTransactionController struct {
// AuthInfoGetter is used to get (coin) authorization information.
AuthInfoGetter AuthInfoGetter
// TransactionVersion is used to validate/set the transaction version
// of an auth address update transaction.
TransactionVersion types.TransactionVersion
}
AuthConditionUpdateTransactionController defines a custom transaction controller, for an Auth ConditionUpdate Transaction. It allows the modification of the set of addresses that are authorizes in order to receive or send coins.
func (AuthConditionUpdateTransactionController) DecodeTransactionData ¶
func (cutc AuthConditionUpdateTransactionController) DecodeTransactionData(r io.Reader) (types.TransactionData, error)
DecodeTransactionData implements TransactionController.DecodeTransactionData
func (AuthConditionUpdateTransactionController) EncodeTransactionData ¶
func (cutc AuthConditionUpdateTransactionController) EncodeTransactionData(w io.Writer, txData types.TransactionData) error
EncodeTransactionData implements TransactionController.EncodeTransactionData
func (AuthConditionUpdateTransactionController) EncodeTransactionIDInput ¶
func (cutc AuthConditionUpdateTransactionController) EncodeTransactionIDInput(w io.Writer, txData types.TransactionData) error
EncodeTransactionIDInput implements TransactionIDEncoder.EncodeTransactionIDInput
func (AuthConditionUpdateTransactionController) GetCommonExtensionData ¶
func (cutc AuthConditionUpdateTransactionController) GetCommonExtensionData(extension interface{}) (types.CommonTransactionExtensionData, error)
GetCommonExtensionData implements TransactionCommonExtensionDataGetter.GetCommonExtensionData
func (AuthConditionUpdateTransactionController) JSONDecodeTransactionData ¶
func (cutc AuthConditionUpdateTransactionController) JSONDecodeTransactionData(data []byte) (types.TransactionData, error)
JSONDecodeTransactionData implements TransactionController.JSONDecodeTransactionData
func (AuthConditionUpdateTransactionController) JSONEncodeTransactionData ¶
func (cutc AuthConditionUpdateTransactionController) JSONEncodeTransactionData(txData types.TransactionData) ([]byte, error)
JSONEncodeTransactionData implements TransactionController.JSONEncodeTransactionData
func (AuthConditionUpdateTransactionController) SignExtension ¶
func (cutc AuthConditionUpdateTransactionController) SignExtension(extension interface{}, sign func(*types.UnlockFulfillmentProxy, types.UnlockConditionProxy, ...interface{}) error) (interface{}, error)
SignExtension implements TransactionExtensionSigner.SignExtension
func (AuthConditionUpdateTransactionController) SignatureHash ¶
func (cutc AuthConditionUpdateTransactionController) SignatureHash(t types.Transaction, extraObjects ...interface{}) (crypto.Hash, error)
SignatureHash implements TransactionSignatureHasher.SignatureHash
type AuthConditionUpdateTransactionExtension ¶
type AuthConditionUpdateTransactionExtension struct {
Nonce types.TransactionNonce
AuthCondition types.UnlockConditionProxy
AuthFulfillment types.UnlockFulfillmentProxy
}
AuthConditionUpdateTransactionExtension defines the AuthConditionUpdateTransaction Extension Data
type AuthInfoGetter ¶
type AuthInfoGetter interface {
// GetActiveAuthCondition returns the active auth condition.
// In other words, the auth condition at the current block height.
GetActiveAuthCondition() (types.UnlockConditionProxy, error)
// GetAuthConditionAt returns the auth condition at a given block height.
GetAuthConditionAt(height types.BlockHeight) (types.UnlockConditionProxy, error)
// GetAddressesAuthStateNow rerturns for each requested address, in order as given,
// the current auth state for that address as a boolean: true if authed, false otherwise.
// If exitEarlyFn is given GetAddressesAuthStateNow can stop earlier in case exitEarlyFn returns true for an iteration.
GetAddressesAuthStateNow(addresses []types.UnlockHash, exitEarlyFn func(index int, state bool) bool) ([]bool, error)
// GetAddressesAuthStateAt rerturns for each requested address, in order as given,
// the auth state at the given height for that address as a boolean: true if authed, false otherwise.
// If exitEarlyFn is given GetAddressesAuthStateNow can stop earlier in case exitEarlyFn returns true for an iteration.
GetAddressesAuthStateAt(height types.BlockHeight, addresses []types.UnlockHash, exitEarlyFn func(index int, state bool) bool) ([]bool, error)
}
AuthInfoGetter allows you to check if a list of addresses are authorized, as well as what the auth condition is at a given (as well as current) [block] height.
type Plugin ¶
type Plugin struct {
// contains filtered or unexported fields
}
Plugin is a struct defines the Auth. Coin Transfer plugin
func NewPlugin ¶
func NewPlugin(genesisAuthCondition types.UnlockConditionProxy, authAddressUpdateTransactionVersion, authConditionUpdateTransactionVersion types.TransactionVersion, opts *PluginOpts) *Plugin
NewPlugin creates a new Plugin with a genesisAuthCondition and correct transaction versions. NOTE: do not register the default rivine transaction versions (0x00 and 0x01) if you use this plugin!!!
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) ApplyTransaction ¶
func (p *Plugin) ApplyTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
ApplyTransaction applies a minting transactions to the minting bucket.
func (*Plugin) GetActiveAuthCondition ¶
func (p *Plugin) GetActiveAuthCondition() (types.UnlockConditionProxy, error)
GetActiveAuthCondition implements types.AuthInfoGetter.GetActiveAuthCondition
func (*Plugin) GetAddressesAuthStateAt ¶
func (p *Plugin) GetAddressesAuthStateAt(height types.BlockHeight, addresses []types.UnlockHash, exitEarlyFn func(index int, state bool) bool) ([]bool, error)
GetAddressesAuthStateAt rerturns for each requested address, in order as given, the auth state at the given height for that address as a boolean: true if authed, false otherwise. If exitEarlyFn is given GetAddressesAuthStateNow can stop earlier in case exitEarlyFn returns true for an iteration.
func (*Plugin) GetAddressesAuthStateNow ¶
func (p *Plugin) GetAddressesAuthStateNow(addresses []types.UnlockHash, exitEarlyFn func(index int, state bool) bool) ([]bool, error)
GetAddressesAuthStateNow rerturns for each requested address, in order as given, the current auth state for that address as a boolean: true if authed, false otherwise. If exitEarlyFn is given GetAddressesAuthStateNow can stop earlier in case exitEarlyFn returns true for an iteration.
func (*Plugin) GetAuthConditionAt ¶
func (p *Plugin) GetAuthConditionAt(height types.BlockHeight) (types.UnlockConditionProxy, error)
GetAuthConditionAt implements types.AuthInfoGetter.GetAuthConditionAt
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) RevertTransaction ¶
func (p *Plugin) RevertTransaction(txn modules.ConsensusTransaction, bucket *persist.LazyBoltBucket) error
RevertTransaction reverts a minting transaction from the minting bucket
func (*Plugin) TransactionValidatorVersionFunctionMapping ¶
func (p *Plugin) TransactionValidatorVersionFunctionMapping() map[types.TransactionVersion][]modules.PluginTransactionValidationFunction
TransactionValidatorVersionFunctionMapping returns all tx validators for specific tx versions linked to this plugin
func (*Plugin) TransactionValidators ¶
func (p *Plugin) TransactionValidators() []modules.PluginTransactionValidationFunction
TransactionValidators returns all tx validators linked to this plugin
type PluginOpts ¶
type PluginOpts struct {
// in case your chain requires custom logic to define what transaction can be considered valid for
// coin transfers with unauthorized addresses due to whatever rules (e.g. version, pure refund coin flow, ...)
UnauthorizedCoinTransactionExceptionCallback UnauthorizedCoinTransactionExceptionCallback
}
PluginOpts are extra optional configurations one can make to the AuthCoin Plugin
type UnauthorizedCoinTransactionExceptionCallback ¶
type UnauthorizedCoinTransactionExceptionCallback func(tx modules.ConsensusTransaction, dedupAddresses []types.UnlockHash, ctx types.TransactionValidationContext) (bool, error)
UnauthorizedCoinTransactionExceptionCallback is the function signature for the callback that can be used for chains that requires custom logic to define what transaction can be considered valid for coin transfers with unauthorized addresses due to whatever rules (e.g. version, pure refund coin flow, ...) True is returned in case this tx does not require an authorization check, False otherwise.