types

package
v0.1.1-rc2 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// VTXOOwnerKeyFamily is the key family used for long-lived VTXO owner
	// keys. Owner keys are committed into the VTXO policy and must remain
	// stable across refreshes.
	VTXOOwnerKeyFamily keychain.KeyFamily = 44

	// VTXOSigningKeyFamily is the key family used for per-round VTXO
	// MuSig2 signing keys. It is intentionally distinct from LND's
	// internal multisig family and from the server operator family so a
	// client sharing an LND signer with the server cannot derive the
	// operator key as its first VTXO signing key.
	VTXOSigningKeyFamily keychain.KeyFamily = 45
)

Variables

View Source
var (
	// ErrOORBindingOutpointNotFound indicates that a binding references an
	// outpoint that is not present in the local VTXO store.
	ErrOORBindingOutpointNotFound = errors.New("oor binding outpoint not " +
		"found in local vtxo store")

	// ErrOORPackageDirectionConflict indicates that a session package was
	// already persisted with a different wallet-relative direction.
	ErrOORPackageDirectionConflict = errors.New("oor package direction " +
		"conflict")
)

Functions

func DeserializeTxProof

func DeserializeTxProof(data []byte) (*proof.TxProof, error)

DeserializeTxProof deserializes a proof.TxProof from TLV-encoded bytes.

func JoinRoundAuthMessage

func JoinRoundAuthMessage(req *JoinRoundRequest) ([]byte, error)

JoinRoundAuthMessage serializes a JoinRoundRequest into deterministic, versioned TLV bytes for BIP-322 signing and verification.

The resulting bytes are the message that the client signs with BIP-322 to prove authorization of the join request contents.

Top-level envelope (TLV stream):

+-------+-------------------------------------------+
| type  | field                                     |
+-------+-------------------------------------------+
|   1   | version   (uint64, currently 3)           |
|   2   | domain    ("wavelength-join-round-auth")   |
|   3   | identifier (33-byte compressed pubkey)    |
|   4   | boarding  (blob list)                     |
|   5   | vtxos     (blob list)                     |
|   6   | forfeits  (blob list)                     |
|   7   | leaves    (blob list)                     |
+-------+-------------------------------------------+

Each blob list is encoded as:

varint(count) || for each entry: varint(len) || entry_bytes

Boarding entry TLV:

1: outpoint hash  |  2: outpoint index
3: client key     |  4: operator key   |  5: exit delay

VTXO entry TLV:

1: amount      |  2: pkScript   |  3: expiry
4: client key  |  5: operator key  |  6: signing key

Forfeit entry TLV:

1: outpoint hash  |  2: outpoint index
3: auth spend     |  4: forfeit spend

Leave entry TLV:

1: value  |  2: pkScript

func MaxAncestryTreeDepth

func MaxAncestryTreeDepth(ancestry []Ancestry) int

MaxAncestryTreeDepth returns the largest TreeDepth across the given ancestry slice. Returns 0 for an empty slice. Drives expiry timing decisions for callers that need worst-case unilateral-exit timing.

func SerializeTxProof

func SerializeTxProof(p *proof.TxProof) ([]byte, error)

SerializeTxProof serializes a proof.TxProof to TLV-encoded bytes.

Types

type Ancestry

type Ancestry struct {
	// TreePath is the extracted commitment-tree path from the batch root
	// down to the input VTXO leaf served by this fragment.
	TreePath *tree.Tree

	// CommitmentTxID is the txid of the commitment tx anchoring this
	// fragment. Multiple entries within one Descriptor may share a
	// commitment txid (different leaves of the same commitment tree),
	// but no two entries may carry the same (CommitmentTxID, TreePath)
	// pair.
	CommitmentTxID chainhash.Hash

	// InputIndices lists the Ark tx input indices (within the OOR Ark tx
	// that produced the VTXO) that this fragment serves. Empty for
	// round-direct VTXOs (which are not produced by an OOR Ark tx).
	InputIndices []uint32

	// TreeDepth is the depth of the served leaf within this fragment's
	// tree. Worst-case unilateral-exit timing for the produced VTXO is
	// max(TreeDepth) across all entries.
	TreeDepth uint32

	// CommitmentHeight is the on-chain confirmation height of the
	// commitment tx anchoring this fragment. Zero means unknown (legacy
	// persisted VTXOs, or an unconfirmed/not-yet-resolved commitment), in
	// which case callers fall back to a bounded lookback floor rather than
	// trusting this value.
	CommitmentHeight int32
}

Ancestry describes one rooted commitment-tree fragment that contributes ancestry to a VTXO. A round-direct VTXO has exactly one entry; an OOR VTXO whose inputs descend from multiple commitment-tree paths has one entry per distinct (commitment tx, tree path) pair. Several entries may share a commitment txid: an OOR spend of two inputs that sit at different leaves of the same commitment tree carries one fragment per leaf, because each leaf needs its own root-to-leaf path for unilateral exit. The operator's indexer groups fragments the same way (one AncestryPath per batch-tree path within a commitment).

Per-entry tree fragments are minimal extracted paths (root → leaf), not whole batch trees, so size scales with depth, not fan-out. The unroller must broadcast every fragment's transactions on-chain before the OOR chain can be claimed.

This type lives in lib/types so that both round.ClientVTXO and vtxo.Descriptor can carry the same multi-fragment ancestry without an import cycle (vtxo already imports round).

type BatchOutputInfo

type BatchOutputInfo struct {
	// Idx is the index of this batch output in the batch transaction.
	Idx int

	// SignerKey is they key that the operator will use for the Musig2
	// signing sessions for this batch output.
	SignerKey *btcec.PublicKey

	// Tree is the VTXO tree for this batch output. The tree embeds the
	// per-round sweep key, sweep delay, and PrevOut.
	Tree *tree.Tree
}

BatchOutputInfo contains the information about a batch output in the batch transaction. A batch transaction can have multiple batch outputs, each with its own VTXO tree.

type BoardingInputSignature

type BoardingInputSignature struct {
	// InputIndex is the index of the input in the transaction
	InputIndex int

	// Outpoint identifies which boarding input this signature is for
	Outpoint wire.OutPoint

	// ClientSignature is the client's schnorr signature
	ClientSignature *schnorr.Signature
}

BoardingInputSignature represents the client's signature for a boarding input in the batch transaction.

type BoardingRequest

type BoardingRequest struct {
	// Outpoint represents the UTXO that will be used as input to the batch
	// transaction.
	Outpoint *wire.OutPoint

	// PolicyTemplate is the semantic arkscript policy for the boarding
	// output. This is the authoritative join-round representation.
	PolicyTemplate []byte

	// ClientKey is the public key used for the client in the boarding
	// tapscripts.
	ClientKey *btcec.PublicKey

	// OperatorKey is the public key used for the operator in the boarding
	// tapscript collaborative spend path.
	OperatorKey *btcec.PublicKey

	// ExitDelay is the CSV delay used in the unilateral timeout script
	// path of the boarding output. This must be at least the operator's
	// minimum boarding exit delay.
	ExitDelay uint32

	// TxProof is the SPV proof that the boarding UTXO exists in a
	// confirmed block. This allows the server to verify the UTXO without
	// querying its own chain source. The proof includes the transaction,
	// block header, merkle proof, and the taproot output construction
	// details (internal key and merkle root).
	//
	// None means "rely on the server's chain source." This is acceptable
	// when the operator runs a full bitcoind / btcd. Under standalone
	// (lwwallet) deployments the server has no chain source and rejects
	// join requests carrying TxProof=None with "TxProof is required when
	// server has no chain source". Clients SHOULD always populate this
	// field when they can; the wallet's first-confirmation pipeline
	// builds it inline (see wallet.processUtxo) and the
	// maybeRebuildBoardingProof recovery path reconstructs it from the
	// chain backend for any persisted intent that lacks one.
	TxProof fn.Option[proof.TxProof]
}

BoardingRequest represents a request to board the Ark via a UTXO.

func (*BoardingRequest) DecodePolicyTemplate

func (r *BoardingRequest) DecodePolicyTemplate() (*arkscript.PolicyTemplate,
	error)

DecodePolicyTemplate decodes the semantic boarding policy.

func (*BoardingRequest) DecodeStandardPolicyTemplate

func (r *BoardingRequest) DecodeStandardPolicyTemplate() (
	*arkscript.StandardVTXOParams, error)

DecodeStandardPolicyTemplate decodes the semantic boarding policy and extracts the standard Ark boarding parameters.

func (*BoardingRequest) EffectivePolicyTemplate

func (r *BoardingRequest) EffectivePolicyTemplate() ([]byte, error)

EffectivePolicyTemplate returns the semantic boarding policy.

type ClientBatchInfo

type ClientBatchInfo struct {
	// Transaction is the batch transaction.
	Transaction *wire.MsgTx

	// BatchOutputs contains the batch output info for each batch output
	// that is relevant to the client. The number of VTXO leaves should
	// match the number of VTXO requests made by the client.
	BatchOutputs []*BatchOutputInfo

	// ConnectorLeafMap maps each forfeited VTXO outpoint to its assigned
	// connector leaf information. This allows the client to determine which
	// connector leaf corresponds to each of their forfeit requests.
	ConnectorLeafMap map[wire.OutPoint]*ConnectorLeafInfo
}

ClientBatchInfo contains batch information specific to a client. It contains all the info the client needs in order to validate that their requests were included correctly in the batch transaction.

  • any boarding request will have a corresponding boarding input in the batch transaction.
  • any VTXO request will have a corresponding output in the batch transaction.
  • any forfeit request will have a corresponding connector leaf.
  • any leave request will have a corresponding output in the batch transaction.

type ConnectorLeafInfo

type ConnectorLeafInfo struct {
	// LeafOutpoint is the outpoint of the connector leaf that the forfeit
	// transaction should spend. This is the actual outpoint from the leaf
	// transaction in the connector tree.
	LeafOutpoint wire.OutPoint

	// LeafOutput is the transaction output for the connector leaf. This
	// contains the value and pkScript needed to construct the forfeit
	// transaction witness.
	LeafOutput *wire.TxOut

	// RootOutputIndex is the commitment-tx output index that this
	// connector tree's root transaction spends. It lets the client bind
	// the connector tree to the commitment tx it is about to sign into.
	RootOutputIndex uint32

	// NumLeaves is the total number of connector leaves in the tree this
	// leaf belongs to. Connector trees have identical leaves, so this plus
	// the radix and operator key fully determine the tree shape.
	NumLeaves uint32

	// Radix is the branching factor used to build the connector tree. It
	// is not derivable from the commitment tx, so the operator must supply
	// it for deterministic reconstruction.
	Radix uint32

	// LeafIndex is the position of this leaf within the connector tree's
	// flattened leaf list. Zero is a valid index.
	LeafIndex uint32
}

ConnectorLeafInfo contains information about a connector leaf assigned to a specific forfeit request.

type ForfeitParticipantSig

type ForfeitParticipantSig struct {
	// PubKey is the x-only key that produced Signature.
	PubKey *btcec.PublicKey

	// Signature authorizes the forfeit transaction under PubKey.
	Signature *schnorr.Signature
}

ForfeitParticipantSig is one non-operator participant's tapscript signature for a forfeited VTXO input.

type ForfeitRequest

type ForfeitRequest struct {
	// VTXOOutpoint is the outpoint of the VTXO to forfeit.
	VTXOOutpoint *wire.OutPoint

	// Amount is the local value of the forfeited VTXO in satoshis. This
	// is used by the client when validating a round before registration.
	// It is not part of the join-round wire encoding, where the outpoint
	// remains the source of truth.
	Amount btcutil.Amount

	// AuthSpend is the unilateral proof/auth spend path used for join-auth
	// when settling a custom-script output into a round. Standard wallet
	// VTXOs leave this nil and let the operator load the canonical
	// path from the VTXO registry. Custom VTXOs serialize it onto the
	// join-round wire so the operator can validate the caller-provided
	// path.
	AuthSpend *arkscript.SpendPath

	// ForfeitSpend is the operator-backed spend path used locally
	// to build the actual round forfeit transaction for a
	// custom-script output. Standard wallet VTXOs leave this nil and
	// let the operator derive the path from the registered VTXO
	// descriptor. Custom
	// VTXOs serialize it onto the join-round wire so the operator can build
	// the exact connector-bound forfeit request later.
	ForfeitSpend *arkscript.SpendPath
}

ForfeitRequest represents a request to forfeit a VTXO.

type ForfeitTxSig

type ForfeitTxSig struct {
	// UnsignedTx is the forfeit transaction without any witness data
	UnsignedTx *wire.MsgTx

	// ClientVTXOSig is the client's schnorr signature for the VTXO input
	ClientVTXOSig *schnorr.Signature

	// ParticipantVTXOSigs carries tapscript signatures from all
	// non-operator participants that must authorize the selected
	// spend path. Standard VTXO forfeits need only ClientVTXOSig;
	// custom policies such as vHTLC refund-style paths may require
	// multiple client-side signatures for one forfeited VTXO.
	ParticipantVTXOSigs []*ForfeitParticipantSig

	// SpendPath is the canonical arkscript spend path for the
	// forfeited VTXO input. This makes the custom or standard
	// tapscript leaf an explicit part of round messaging instead
	// of implicit witness metadata.
	SpendPath *arkscript.SpendPath
}

ForfeitTxSig represents an unsigned forfeit transaction with the client's VTXO signature.

type JoinRoundAuth

type JoinRoundAuth struct {
	// Message is the canonical join message signed by the client.
	Message []byte

	// ValidFrom is the first block height where this auth intent is
	// accepted.
	ValidFrom uint32

	// ValidUntil is the last block height where this auth intent is
	// accepted. A value of 0 means no upper bound.
	ValidUntil uint32

	// Signature is the serialized full-format BIP-322 signature
	// payload.
	Signature []byte
}

JoinRoundAuth contains the BIP-322 payload for a JoinRoundRequest.

Message stores the exact canonical bytes that were signed. Signature stores the full-format BIP-322 payload, which is the serialized to_sign transaction.

type JoinRoundRequest

type JoinRoundRequest struct {
	// Identifier is the participant's public key identifier associated with
	// this request.
	Identifier *btcec.PublicKey

	// VTXOReqs specifies the new VTXOs the client wants to receive.
	VTXOReqs []*VTXORequest

	// BoardingReqs specifies the boarding UTXOs the client wants to use
	// to board the Ark.
	BoardingReqs []*BoardingRequest

	// LeaveReqs specifies the requests to leave the Ark with on-chain
	// UTXOs.
	LeaveReqs []*LeaveRequest

	// ForfeitReqs specifies the requests to forfeit VTXOs.
	ForfeitReqs []*ForfeitRequest

	// Auth contains the BIP-322 payload that authorizes this join
	// request.
	Auth *JoinRoundAuth
}

JoinRoundRequest represents a participant's request to join a round.

func DecodeJoinRoundAuthMessage

func DecodeJoinRoundAuthMessage(raw []byte) (*JoinRoundRequest, error)

DecodeJoinRoundAuthMessage parses canonical join-auth message bytes back into a JoinRoundRequest while enforcing decode-time size limits.

type LeaveRequest

type LeaveRequest struct {
	// Output is the output that will be created to return funds to the
	// client when leaving the Ark. Its Value is the client's target
	// amount; server-filled when IsChange=true.
	Output *wire.TxOut

	// IsChange marks this LeaveRequest as the client's designated
	// fee-bearing change output for the intent.
	IsChange bool
}

LeaveRequest represents a request to leave the Ark with an on-chain UTXO.

Under the #270 seal-time fee handshake `Output.Value` is the client's target amount in satoshis. When `IsChange` is true the server overrides the value with the residual (`Σin − Σ(fixed outputs) − fee`) at seal time; exactly one output across the intent's VTXORequests + LeaveRequests list may have IsChange=true.

type OORPackageDirection

type OORPackageDirection int32

OORPackageDirection encodes transfer direction from this wallet's perspective.

const (
	// OORPackageDirectionIncoming marks a package received by this wallet.
	OORPackageDirectionIncoming OORPackageDirection = 0

	// OORPackageDirectionOutgoing marks a package sent by this wallet.
	OORPackageDirectionOutgoing OORPackageDirection = 1
)

func (OORPackageDirection) String

func (d OORPackageDirection) String() string

String returns the stable direction label used in logs/errors.

type OORPackageLinkKind

type OORPackageLinkKind int32

OORPackageLinkKind encodes local outpoint relation to a package.

const (
	// OORPackageLinkKindCreatedOutput marks bindings where local outpoints
	// are created by the package Ark transaction.
	OORPackageLinkKindCreatedOutput OORPackageLinkKind = 0

	// OORPackageLinkKindConsumedInput marks bindings where local outpoints
	// are consumed as inputs by the package Ark transaction.
	OORPackageLinkKindConsumedInput OORPackageLinkKind = 1
)

func (OORPackageLinkKind) String

func (k OORPackageLinkKind) String() string

String returns the stable link-kind label used in logs/errors.

type OperatorTerms

type OperatorTerms struct {
	// PubKey is the operator's main public key. This should be used for
	// constructing boarding scripts.
	PubKey *btcec.PublicKey

	// BoardingExitDelay is the minimum CSV delay to use for boarding
	// outputs that the operator expects.
	BoardingExitDelay uint32

	// VTXOExitDelay is the minimum CSV delay to use for VTXO outputs. This
	// delay will give the server time to respond to unilateral spends of
	// a VTXO that has been forfeit or spent.
	VTXOExitDelay uint32

	// DustLimit enforces minimum output value for boarding/funding flows.
	DustLimit btcutil.Amount

	// MinVTXOAmount is the operator-advertised minimum VTXO output
	// amount.
	MinVTXOAmount btcutil.Amount

	// MinBoardingAmount is the minimum amount clients must contribute.
	MinBoardingAmount btcutil.Amount

	// MaxVTXOAmount caps the amount accepted per VTXO (optional). The
	// operator applies the same cap to boarding requests, round outputs
	// and OOR recipient outputs.
	MaxVTXOAmount btcutil.Amount

	// MaxUserBalance caps the total balance a single user should hold
	// in the system (optional). The cap is enforced client-side on
	// receive and boarding flows before funds enter the system. Zero
	// means no cap.
	MaxUserBalance btcutil.Amount

	// FeeRate reflects the operator's target package feerate (sat/vByte).
	FeeRate btcutil.Amount

	// MinOperatorFee is the minimum fee (satoshis) the operator
	// requires per join request. The fee is the difference between
	// total input value and total output value.
	MinOperatorFee btcutil.Amount

	// FreeRefreshWindowBlocks is the number of blocks before batch expiry
	// in which a pure refresh qualifies for a complete fee waiver. Zero
	// disables the policy.
	FreeRefreshWindowBlocks uint32

	// MinConfirmations is the minimum confs required on boarding inputs.
	MinConfirmations uint32

	// MaxOORLineageVBytes is the operator-published cap on the
	// cumulative on-chain virtual bytes a recipient must publish to
	// claim a VTXO produced by an OOR submit unilaterally. Clients
	// mirror this cap when selecting OOR inputs so a submit that the
	// operator would reject is rejected pre-network. Zero means the
	// operator does not enforce a cap (the client should fall back to
	// its own conservative default before submitting).
	MaxOORLineageVBytes uint32
}

OperatorTerms holds the information that the operator will share with clients. It communicates the server's terms to the client.

func (*OperatorTerms) MinVTXOAmountFloor

func (t *OperatorTerms) MinVTXOAmountFloor() btcutil.Amount

MinVTXOAmountFloor returns the effective minimum for a VTXO output. The advertised VTXO minimum is authoritative when it is above dust, but dust remains the floor for older or misconfigured operator snapshots.

type VTXOOrigin

type VTXOOrigin uint8

VTXOOrigin classifies how a locally-owned round VTXO came into existence. The classification is decided at wallet intent- composition time because only the wallet knows whether a VTXO is funded by a boarding input, a forfeited VTXO, or a remote participant's directed send. It is used downstream by the round actor to route a correctly-classified VTXOReceivedMsg to the ledger actor (boarding vs refresh vs participant transfer book to different ledger account pairs).

The field is local-only and is NOT serialized on the join-round wire; remote peers never see it.

const (
	// VTXOOriginUnknown is the zero value. Used for requests
	// whose origin has not been set (e.g. remote recipient
	// outputs on a directed send where HasLocalOwner is false)
	// and as a defensive default. The round actor treats this
	// as "do not emit a ledger event" to avoid misclassifying.
	VTXOOriginUnknown VTXOOrigin = iota

	// VTXOOriginRoundBoarding means the VTXO is the on-round
	// output of a boarding input the client owns: funds moved
	// from wallet_balance into vtxo_balance. Emitted as
	// VTXOReceivedMsg{Source=SourceRoundBoarding}.
	VTXOOriginRoundBoarding

	// VTXOOriginRoundRefresh means the VTXO materialized as the
	// output side of a refresh or directed-send flow in which
	// the client also forfeited VTXOs of roughly equal value.
	// Emitted as VTXOReceivedMsg{Source=SourceRoundRefresh}
	// paired with a VTXOSentMsg for the gross forfeited amount;
	// the two legs cancel on transfers_out. Used both for
	// straight refreshes and for self-change on directed sends.
	VTXOOriginRoundRefresh

	// VTXOOriginRoundTransfer means the VTXO was produced in-
	// round by another participant's directed send to this
	// client. Emitted as
	// VTXOReceivedMsg{Source=SourceRoundTransfer}, crediting
	// transfers_in as a genuine counterparty revenue flow.
	VTXOOriginRoundTransfer
)

func (VTXOOrigin) String

func (o VTXOOrigin) String() string

String returns a short human-readable label for the origin, matching the underscore-separated ledger source strings so a log line can include the origin verbatim.

type VTXORequest

type VTXORequest struct {
	// Amount is the client's target amount in satoshis for this
	// output. Server-filled on the responding JoinRoundQuote when
	// IsChange=true.
	Amount btcutil.Amount

	// IsChange marks this request as the intent's designated
	// fee-bearing change output.
	IsChange bool

	// FixedAmount requires the operator quote to preserve Amount exactly.
	// It is used for contract outputs where shrinking the replacement
	// output would invalidate the higher-level protocol. A fixed single
	// output is not eligible for the implicit-change exception.
	FixedAmount bool

	// PolicyTemplate is the semantic arkscript policy for the requested
	// output. This is the authoritative join-round representation.
	PolicyTemplate []byte

	// PkScript is the output script of the VTXO. This will have
	// both a collaborative and unilateral spend path.
	PkScript []byte

	// Expiry is the CSV delay used in the unilateral timeout script path
	// of the VTXO.
	Expiry uint32

	// ClientKey is the public key of the client used in the construction
	// of the collaborative spend path of the VTXO.
	ClientKey *btcec.PublicKey

	// OwnerKey is the local key descriptor for the VTXO owner when this
	// client controls the resulting output. This is local-only
	// metadata and is not serialized onto the join-round wire.
	OwnerKey keychain.KeyDescriptor

	// OperatorKey is the public key of the operator used in the
	// construction of the collaborative spend path of the VTXO.
	OperatorKey *btcec.PublicKey

	// SigningKey is the key descriptor that the client will use in the
	// building of the VTXO tree during Musig2 signing sessions. We use
	// keychain.KeyDescriptor instead of just *btcec.PublicKey because we
	// need the key locator for signing operations.
	SigningKey keychain.KeyDescriptor

	// Origin classifies how a locally-owned VTXO came into
	// existence (boarding, refresh, or participant transfer). It
	// is set by the wallet at intent-composition time and flows
	// through the FSM so the round actor can emit a correctly-
	// typed VTXOReceivedMsg to the ledger actor. Local-only;
	// never serialized over the wire.
	Origin VTXOOrigin
}

VTXORequest describes a requested round output. The policy template is the authoritative join-round representation, while local owner metadata is kept only when this client controls the resulting VTXO.

Under the #270 seal-time fee handshake `Amount` carries the client's target amount and is honored verbatim except for the designated change output, whose amount the server computes as the residual (`Σin − Σ(fixed outputs) − fee`) at seal time. The per-intent invariant is exactly one output across VTXORequests + LeaveRequests with `IsChange=true`.

func (*VTXORequest) DecodePolicyTemplate

func (r *VTXORequest) DecodePolicyTemplate() (*arkscript.PolicyTemplate,
	error)

DecodePolicyTemplate decodes the semantic VTXO policy.

func (*VTXORequest) DecodeStandardPolicyTemplate

func (r *VTXORequest) DecodeStandardPolicyTemplate() (
	*arkscript.StandardVTXOParams, error)

DecodeStandardPolicyTemplate decodes the semantic VTXO policy and extracts the standard Ark VTXO parameters when the request uses the default output shape.

func (*VTXORequest) EffectivePkScript

func (r *VTXORequest) EffectivePkScript() ([]byte, error)

EffectivePkScript returns the requested output script derived from the semantic policy.

func (*VTXORequest) EffectivePolicyTemplate

func (r *VTXORequest) EffectivePolicyTemplate() ([]byte, error)

EffectivePolicyTemplate returns the semantic VTXO policy.

func (*VTXORequest) HasLocalOwner

func (r *VTXORequest) HasLocalOwner() bool

HasLocalOwner reports whether the request carries a local owner descriptor that should be preserved through confirmation and persistence. A nil owner pubkey, not a zero-valued key locator, is the sentinel for foreign outputs.

Jump to

Keyboard shortcuts

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