pub struct ScriptSpend { /* private fields */ }Expand description
A Seedelf script spend, before its execution budgets are known. See the section comment above.
Implementations§
Source§impl ScriptSpend
impl ScriptSpend
Sourcepub fn new(
chain: &Chain,
inputs: &[UtxoResponse],
change_owner: &Register,
signer: Hash<28>,
) -> Result<Self>
pub fn new( chain: &Chain, inputs: &[UtxoResponse], change_owner: &Register, signer: Hash<28>, ) -> Result<Self>
Spends inputs, owned wallet-contract UTxOs (each datum is a
register). What’s left after the outputs and the fee goes back into
the contract under fresh re-randomizations of change_owner. signer
is the one-time key’s hash: every proof is bound to it, and it must
sign.
Sourcepub fn with_account(
self,
account: Hash<28>,
inputs: &[UtxoResponse],
collateral: &UtxoResponse,
) -> Result<Self>
pub fn with_account( self, account: Hash<28>, inputs: &[UtxoResponse], collateral: &UtxoResponse, ) -> Result<Self>
Spends inputs too, UTxOs under the key account’s key account, and
puts up collateral, an ADA-only UTxO of the same account, in place of
giveme.my’s (it may be one of inputs: the ledger takes a UTxO as
both). The account’s key and the one-time key sign; giveme.my doesn’t.
What the account holds goes with the change. account can’t be the
one-time key: the proofs must stay bound to a key used once.
Sourcepub fn change_to(self, addr: &Address) -> Self
pub fn change_to(self, addr: &Address) -> Self
Sends what’s left after the outputs and the fee to addr, a key
address, instead of back into the contract: everything, for sending
the lot, or a removed seedelf’s ADA. Tokens go 20 to an output.
Sourcepub fn output(self, output: Output, tokens: &Assets) -> Result<Self>
pub fn output(self, output: Output, tokens: &Assets) -> Result<Self>
Adds an output. tokens must be what the output holds.
Sourcepub fn mint(
self,
token_name: Vec<u8>,
amount: i64,
redeemer: Vec<u8>,
) -> Result<Self>
pub fn mint( self, token_name: Vec<u8>, amount: i64, redeemer: Vec<u8>, ) -> Result<Self>
Mints amount of token_name under the seedelf policy (burns it
when negative), with the policy’s redeemer.
Sourcepub fn proven(
self,
prove: impl FnMut(&Register, &str) -> Result<(String, String)>,
) -> Result<Self>
pub fn proven( self, prove: impl FnMut(&Register, &str) -> Result<(String, String)>, ) -> Result<Self>
Proves every input: prove(register, vkh) returns the Schnorr proof
(z, g_r) for a register, bound to vkh, the one-time key’s hash in
hex. The caller holds the secret; this never sees it.
Sourcepub fn inputs(&self) -> Vec<UtxoResponse>
pub fn inputs(&self) -> Vec<UtxoResponse>
The UTxOs spent, in the order given.
Sourcepub fn draft(&self) -> Result<BuiltTransaction>
pub fn draft(&self) -> Result<BuiltTransaction>
The draft for Ogmios to evaluate: every redeemer carries
DRAFT_BUDGET. Needs Self::proven first, or the scripts fail.
Sourcepub fn finalize(&self, budgets: &Budgets) -> Result<FinalSpend>
pub fn finalize(&self, budgets: &Budgets) -> Result<FinalSpend>
The unsigned transaction, with the budgets Ogmios measured on the draft and the fee they and the signed size need.
Sourcepub fn estimate(&self) -> Result<FinalSpend>
pub fn estimate(&self) -> Result<FinalSpend>
Self::finalize with guessed budgets and stand-in proofs: whether
these inputs can pay, before anything is proven or measured.
Sourcepub fn measure_locally(&self, known: &[Resolved]) -> Result<FinalSpend>
pub fn measure_locally(&self, known: &[Resolved]) -> Result<FinalSpend>
Measures the scripts in the wallet (crate::eval) rather than
through Ogmios, and finishes the spend: the draft, then the finished
transaction measured again as it will be sent. known are UTxOs it
spends that aren’t on chain yet (a chain’s own outputs); the rest
come from the rows given, and the Seedelf references are bundled.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ScriptSpend
impl RefUnwindSafe for ScriptSpend
impl Send for ScriptSpend
impl Sync for ScriptSpend
impl Unpin for ScriptSpend
impl UnsafeUnpin for ScriptSpend
impl UnwindSafe for ScriptSpend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.