Struct miden_objects::notes::Note

source ·
pub struct Note { /* private fields */ }
Expand description

A note with all the data required for it to be consumed by executing it against the transaction kernel.

Notes consist of note metadata and details. Note metadata is always public, but details may be either public, encrypted, or private, depending on the note type. Note details consist of note assets, script, inputs, and a serial number, the three latter grouped into a recipient object.

Note details can be reduced to two unique identifiers: NoteId and Nullifier. The former is publicly associated with a note, while the latter is known only to entities which have access to full note details.

Fungible and non-fungible asset transfers are done by moving assets to the note’s assets. The note’s script determines the conditions required for the note consumption, i.e. the target account of a P2ID or conditions of a SWAP, and the effects of the note. The serial number has a double duty of preventing double spend, and providing unlikability to the consumer of a note. The note’s inputs allow for customization of its script.

To create a note, the kernel does not require all the information above, a user can create a note only with the commitment to the script, inputs, the serial number (i.e., the recipient), and the kernel only verifies the source account has the assets necessary for the note creation. See NoteRecipient for more details.

Implementations§

source§

impl Note

source

pub fn new( assets: NoteAssets, metadata: NoteMetadata, recipient: NoteRecipient ) -> Self

Returns a new Note created with the specified parameters.

source

pub fn header(&self) -> &NoteHeader

Returns the note’s header.

source

pub fn id(&self) -> NoteId

Returns the note’s unique identifier.

This value is both an unique identifier and a commitment to the note.

source

pub fn metadata(&self) -> &NoteMetadata

Returns the note’s metadata.

source

pub fn assets(&self) -> &NoteAssets

Returns the note’s assets.

source

pub fn serial_num(&self) -> Word

Returns the note’s recipient serial_num, the secret required to consume the note.

source

pub fn script(&self) -> &NoteScript

Returns the note’s recipient script which locks the assets of this note.

source

pub fn inputs(&self) -> &NoteInputs

Returns the note’s recipient inputs which customizes the script’s behavior.

source

pub fn recipient(&self) -> &NoteRecipient

Returns the note’s recipient.

source

pub fn nullifier(&self) -> Nullifier

Returns the note’s nullifier.

This is public data, used to prevent double spend.

source

pub fn authentication_hash(&self) -> Digest

Returns the note’s authentication hash.

This value is used authenticate the note’s presence in the note tree, it is computed as:

hash(note_id, note_metadata)

Methods from Deref<Target = NoteDetails>§

source

pub fn id(&self) -> NoteId

Returns the note’s unique identifier.

This value is both an unique identifier and a commitment to the note.

source

pub fn assets(&self) -> &NoteAssets

Returns the note’s assets.

source

pub fn serial_num(&self) -> Word

Returns the note’s recipient serial_num, the secret required to consume the note.

source

pub fn script(&self) -> &NoteScript

Returns the note’s recipient script which locks the assets of this note.

source

pub fn inputs(&self) -> &NoteInputs

Returns the note’s recipient inputs which customizes the script’s behavior.

source

pub fn recipient(&self) -> &NoteRecipient

Returns the note’s recipient.

source

pub fn nullifier(&self) -> Nullifier

Returns the note’s nullifier.

This is public data, used to prevent double spend.

Trait Implementations§

source§

impl Clone for Note

source§

fn clone(&self) -> Note

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Note

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Deref for Note

§

type Target = NoteDetails

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl Deserializable for Note

source§

fn read_from<R: ByteReader>( source: &mut R ) -> Result<Self, DeserializationError>

Reads a sequence of bytes from the provided source, attempts to deserialize these bytes into Self, and returns the result. Read more
source§

fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>

Attempts to deserialize the provided bytes into Self and returns the result. Read more
source§

impl From<&Note> for NoteDetails

source§

fn from(note: &Note) -> Self

Converts to this type from the input type.
source§

impl From<&Note> for NoteHeader

source§

fn from(note: &Note) -> Self

Converts to this type from the input type.
source§

impl From<Note> for NoteDetails

source§

fn from(note: Note) -> Self

Converts to this type from the input type.
source§

impl From<Note> for NoteHeader

source§

fn from(note: Note) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Note

source§

fn eq(&self, other: &Note) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serializable for Note

source§

fn write_into<W: ByteWriter>(&self, target: &mut W)

Serializes self into bytes and writes these bytes into the target.
source§

fn to_bytes(&self) -> Vec<u8>

Serializes self into a vector of bytes.
source§

fn get_size_hint(&self) -> usize

Returns an estimate of how many bytes are needed to represent self. Read more
source§

impl Eq for Note

source§

impl StructuralPartialEq for Note

Auto Trait Implementations§

§

impl Freeze for Note

§

impl RefUnwindSafe for Note

§

impl Send for Note

§

impl Sync for Note

§

impl Unpin for Note

§

impl UnwindSafe for Note

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more