Struct Transaction

Source
pub struct Transaction<'a> {
    pub blockchain_rid: Vec<u8>,
    pub operations: Option<Vec<Operation<'a>>>,
    pub signers: Option<Vec<Vec<u8>>>,
    pub signatures: Option<Vec<Vec<u8>>>,
    pub merkle_hash_version: u8,
}
Expand description

Represents a blockchain transaction with operations and signatures.

A transaction contains a list of operations to be executed, along with the necessary signatures to authorize these operations. It supports both single and multi-signature scenarios.

Fields§

§blockchain_rid: Vec<u8>

Unique identifier of the blockchain this transaction belongs to

§operations: Option<Vec<Operation<'a>>>

List of operations to be executed in this transaction

§signers: Option<Vec<Vec<u8>>>

List of public keys of the signers

§signatures: Option<Vec<Vec<u8>>>

List of signatures corresponding to the signers

§merkle_hash_version: u8

Implementations§

Source§

impl<'a> Transaction<'a>

Source

pub fn new( blockchain_rid: Vec<u8>, operations: Option<Vec<Operation<'a>>>, signers: Option<Vec<Vec<u8>>>, signatures: Option<Vec<Vec<u8>>>, ) -> Self

Creates a new transaction with the specified parameters.

§Arguments
  • blockchain_rid - Unique identifier of the blockchain
  • operations - Optional list of operations to be executed
  • signers - Optional list of public keys of the signers
  • signatures - Optional list of signatures
§Returns

A new Transaction instance

Source

pub fn gvt_hex_encoded(&self) -> String

Returns the hex-encoded GTV (Generic Tree Value) representation of the transaction.

This method encodes the transaction into GTV format and returns it as a hexadecimal string.

§Returns

Hex-encoded string of the GTV-encoded transaction

Source

pub fn tx_rid(&self) -> Result<[u8; 32], HashError>

Computes the unique identifier (RID) of this transaction.

The transaction RID is computed by hashing the GTV representation of the transaction using the GTX hash function.

§Returns

A fixed-size 32 bytes containing the transaction RID

Source

pub fn tx_rid_hex(&self) -> Result<String, HashError>

Returns the hex-encoded transaction RID.

This is a convenience method that returns the transaction RID as a hexadecimal string.

§Returns

Hex-encoded string of the transaction RID

Source

pub fn sign_from_raw_priv_key(&mut self, private_key: &str) -> Result<(), Error>

Signs the transaction using a raw private key string.

§Arguments
  • private_key - Private key as a string
§Returns

Result indicating success or a secp256k1 error

§Errors

Returns an error if the private key is invalid or signing fails

Source

pub fn multi_sign_from_raw_priv_keys( &mut self, private_keys: &[&str], ) -> Result<(), Error>

Signs the transaction with multiple raw private key strings.

This method iteratively signs the transaction with each provided private key string, enabling multi-signature transactions.

§Arguments
  • private_keys - Slice of raw private key strings
§Returns

Result indicating success or a secp256k1 error

§Errors

Returns an error if any private key is invalid or signing fails

Source

pub fn sign(&mut self, private_key: &[u8; 32]) -> Result<(), Error>

Signs the transaction using a private key.

This method:

  1. Derives the public key from the private key
  2. Adds the public key to the signers list
  3. Signs the transaction RID
  4. Adds the signature to the signatures list
§Arguments
  • private_key - 32-byte private key
§Returns

Result indicating success or a secp256k1 error

§Errors

Returns an error if the private key is invalid or signing fails

Source

pub fn multi_sign(&mut self, private_keys: &[&[u8; 32]]) -> Result<(), Error>

Signs the transaction with multiple private keys.

This method iteratively signs the transaction with each provided private key, enabling multi-signature transactions.

§Arguments
  • private_keys - Slice of 32-byte private keys
§Returns

Result indicating success or a secp256k1 error

§Errors

Returns an error if any private key is invalid or signing fails

Trait Implementations§

Source§

impl<'a> Debug for Transaction<'a>

Source§

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

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

impl<'a> Default for Transaction<'a>

Source§

fn default() -> Self

Creates a new Transaction with default values and performs automatic initialization.

§Example
let mut tx = Transaction {
    blockchain_rid: hex::decode(brid).unwrap(),
    operations: Some(ops),
    ..Default::default()  // This will trigger auto initialization
};

Auto Trait Implementations§

§

impl<'a> Freeze for Transaction<'a>

§

impl<'a> RefUnwindSafe for Transaction<'a>

§

impl<'a> Send for Transaction<'a>

§

impl<'a> Sync for Transaction<'a>

§

impl<'a> Unpin for Transaction<'a>

§

impl<'a> UnwindSafe for Transaction<'a>

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,