utxo

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2023 License: BSD-3-Clause Imports: 19 Imported by: 0

Documentation

Overview

Package utxo is a generated GoMock package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Consume

func Consume(utxoDB state.UTXODeleter, ins []*djtx.TransferableInput)

Removes the UTXOs consumed by [ins] from the UTXO set

func Produce

func Produce(
	utxoDB state.UTXOAdder,
	txID ids.ID,
	outs []*djtx.TransferableOutput,
)

Adds the UTXOs created by [outs] to the UTXO set. [txID] is the ID of the tx that created [outs].

Types

type Handler

type Handler interface {
	Spender
	Verifier
}

func NewHandler

func NewHandler(
	ctx *snow.Context,
	clk *mockable.Clock,
	utxoReader djtx.UTXOReader,
	fx fx.Fx,
) Handler

type MockVerifier

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

MockVerifier is a mock of Verifier interface.

func NewMockVerifier

func NewMockVerifier(ctrl *gomock.Controller) *MockVerifier

NewMockVerifier creates a new mock instance.

func (*MockVerifier) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockVerifier) VerifySpend

func (m *MockVerifier) VerifySpend(arg0 txs.UnsignedTx, arg1 state.UTXOGetter, arg2 []*djtx.TransferableInput, arg3 []*djtx.TransferableOutput, arg4 []verify.Verifiable, arg5 map[ids.ID]uint64) error

VerifySpend mocks base method.

func (*MockVerifier) VerifySpendUTXOs

func (m *MockVerifier) VerifySpendUTXOs(arg0 txs.UnsignedTx, arg1 []*djtx.UTXO, arg2 []*djtx.TransferableInput, arg3 []*djtx.TransferableOutput, arg4 []verify.Verifiable, arg5 map[ids.ID]uint64) error

VerifySpendUTXOs mocks base method.

type MockVerifierMockRecorder

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

MockVerifierMockRecorder is the mock recorder for MockVerifier.

func (*MockVerifierMockRecorder) VerifySpend

func (mr *MockVerifierMockRecorder) VerifySpend(arg0, arg1, arg2, arg3, arg4, arg5 interface{}) *gomock.Call

VerifySpend indicates an expected call of VerifySpend.

func (*MockVerifierMockRecorder) VerifySpendUTXOs

func (mr *MockVerifierMockRecorder) VerifySpendUTXOs(arg0, arg1, arg2, arg3, arg4, arg5 interface{}) *gomock.Call

VerifySpendUTXOs indicates an expected call of VerifySpendUTXOs.

type Spender

type Spender interface {
	// Spend the provided amount while deducting the provided fee.
	// Arguments:
	// - [keys] are the owners of the funds
	// - [amount] is the amount of funds that are trying to be staked
	// - [fee] is the amount of DJTX that should be burned
	// - [changeAddr] is the address that change, if there is any, is sent to
	// Returns:
	// - [inputs] the inputs that should be consumed to fund the outputs
	// - [returnedOutputs] the outputs that should be immediately returned to
	//                     the UTXO set
	// - [stakedOutputs] the outputs that should be locked for the duration of
	//                   the staking period
	// - [signers] the proof of ownership of the funds being moved
	Spend(
		keys []*crypto.PrivateKeySECP256K1R,
		amount uint64,
		fee uint64,
		changeAddr ids.ShortID,
	) (
		[]*djtx.TransferableInput,
		[]*djtx.TransferableOutput,
		[]*djtx.TransferableOutput,
		[][]*crypto.PrivateKeySECP256K1R,
		error,
	)

	// Authorize an operation on behalf of the named subnet with the provided
	// keys.
	Authorize(
		state state.Chain,
		subnetID ids.ID,
		keys []*crypto.PrivateKeySECP256K1R,
	) (
		verify.Verifiable,
		[]*crypto.PrivateKeySECP256K1R,
		error,
	)
}

TODO: Stake and Authorize should be replaced by similar methods in the

P-chain wallet

type Verifier

type Verifier interface {
	// Verify that [tx] is semantically valid.
	// [ins] and [outs] are the inputs and outputs of [tx].
	// [creds] are the credentials of [tx], which allow [ins] to be spent.
	// [unlockedProduced] is the map of assets that were produced and their
	// amounts.
	// The [ins] must have at least [unlockedProduced] than the [outs].
	//
	// Precondition: [tx] has already been syntactically verified.
	//
	// Note: [unlockedProduced] is modified by this method.
	VerifySpend(
		tx txs.UnsignedTx,
		utxoDB state.UTXOGetter,
		ins []*djtx.TransferableInput,
		outs []*djtx.TransferableOutput,
		creds []verify.Verifiable,
		unlockedProduced map[ids.ID]uint64,
	) error

	// Verify that [tx] is semantically valid.
	// [utxos[i]] is the UTXO being consumed by [ins[i]].
	// [ins] and [outs] are the inputs and outputs of [tx].
	// [creds] are the credentials of [tx], which allow [ins] to be spent.
	// [unlockedProduced] is the map of assets that were produced and their
	// amounts.
	// The [ins] must have at least [unlockedProduced] more than the [outs].
	//
	// Precondition: [tx] has already been syntactically verified.
	//
	// Note: [unlockedProduced] is modified by this method.
	VerifySpendUTXOs(
		tx txs.UnsignedTx,
		utxos []*djtx.UTXO,
		ins []*djtx.TransferableInput,
		outs []*djtx.TransferableOutput,
		creds []verify.Verifiable,
		unlockedProduced map[ids.ID]uint64,
	) error
}

Jump to

Keyboard shortcuts

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