Struct kaspa_wasm::ScriptBuilder
source · pub struct ScriptBuilder { /* private fields */ }
Expand description
ScriptBuilder provides a facility for building custom scripts. It allows you to push opcodes, ints, and data while respecting canonical encoding. In general it does not ensure the script will execute correctly, however any data pushes which would exceed the maximum allowed script engine limits and are therefore guaranteed not to execute will not be pushed and will result in the Script function returning an error.
Implementations§
source§impl ScriptBuilder
impl ScriptBuilder
pub fn inner(&self) -> MutexGuard<'_, ScriptBuilder>
source§impl ScriptBuilder
impl ScriptBuilder
sourcepub fn drain(&self) -> String
pub fn drain(&self) -> String
Drains (empties) the script builder, returning the script bytes represented by a hex string.
sourcepub fn add_op(&self, opcode: u8) -> Result<ScriptBuilder, Error>
pub fn add_op(&self, opcode: u8) -> Result<ScriptBuilder, Error>
Pushes the passed opcode to the end of the script. The script will not be modified if pushing the opcode would cause the script to exceed the maximum allowed script engine size.
pub fn add_ops(&self, opcodes: JsValue) -> Result<ScriptBuilder, Error>
sourcepub fn add_data(&self, data: JsValue) -> Result<ScriptBuilder, Error>
pub fn add_data(&self, data: JsValue) -> Result<ScriptBuilder, Error>
AddData pushes the passed data to the end of the script. It automatically chooses canonical opcodes depending on the length of the data.
A zero length buffer will lead to a push of empty data onto the stack (Op0 = OpFalse)
and any push of data greater than MAX_SCRIPT_ELEMENT_SIZE
will not modify
the script since that is not allowed by the script engine.
Also, the script will not be modified if pushing the data would cause the script to
exceed the maximum allowed script engine size MAX_SCRIPTS_SIZE
.
pub fn add_i64(&self, val: i64) -> Result<ScriptBuilder, Error>
pub fn add_lock_time(&self, lock_time: u64) -> Result<ScriptBuilder, Error>
pub fn add_sequence(&self, sequence: u64) -> Result<ScriptBuilder, Error>
Trait Implementations§
source§impl Clone for ScriptBuilder
impl Clone for ScriptBuilder
source§fn clone(&self) -> ScriptBuilder
fn clone(&self) -> ScriptBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl From<ScriptBuilder> for JsValue
impl From<ScriptBuilder> for JsValue
source§fn from(value: ScriptBuilder) -> JsValue
fn from(value: ScriptBuilder) -> JsValue
source§impl FromWasmAbi for ScriptBuilder
impl FromWasmAbi for ScriptBuilder
source§impl IntoWasmAbi for ScriptBuilder
impl IntoWasmAbi for ScriptBuilder
source§impl LongRefFromWasmAbi for ScriptBuilder
impl LongRefFromWasmAbi for ScriptBuilder
§type Anchor = Ref<'static, ScriptBuilder>
type Anchor = Ref<'static, ScriptBuilder>
RefFromWasmAbi::Anchor
source§unsafe fn long_ref_from_abi(
js: <ScriptBuilder as LongRefFromWasmAbi>::Abi
) -> <ScriptBuilder as LongRefFromWasmAbi>::Anchor
unsafe fn long_ref_from_abi( js: <ScriptBuilder as LongRefFromWasmAbi>::Abi ) -> <ScriptBuilder as LongRefFromWasmAbi>::Anchor
RefFromWasmAbi::ref_from_abi
source§impl OptionFromWasmAbi for ScriptBuilder
impl OptionFromWasmAbi for ScriptBuilder
source§fn is_none(abi: &<ScriptBuilder as FromWasmAbi>::Abi) -> bool
fn is_none(abi: &<ScriptBuilder as FromWasmAbi>::Abi) -> bool
None
, and otherwise it will be passed to
FromWasmAbi
.source§impl OptionIntoWasmAbi for ScriptBuilder
impl OptionIntoWasmAbi for ScriptBuilder
source§fn none() -> <ScriptBuilder as IntoWasmAbi>::Abi
fn none() -> <ScriptBuilder as IntoWasmAbi>::Abi
None
branch of this option. Read moresource§impl RefFromWasmAbi for ScriptBuilder
impl RefFromWasmAbi for ScriptBuilder
§type Anchor = Ref<'static, ScriptBuilder>
type Anchor = Ref<'static, ScriptBuilder>
Self
for the duration of the
invocation of the function that has an &Self
parameter. This is
required to ensure that the lifetimes don’t persist beyond one function
call, and so that they remain anonymous.source§unsafe fn ref_from_abi(
js: <ScriptBuilder as RefFromWasmAbi>::Abi
) -> <ScriptBuilder as RefFromWasmAbi>::Anchor
unsafe fn ref_from_abi( js: <ScriptBuilder as RefFromWasmAbi>::Abi ) -> <ScriptBuilder as RefFromWasmAbi>::Anchor
source§impl RefMutFromWasmAbi for ScriptBuilder
impl RefMutFromWasmAbi for ScriptBuilder
§type Anchor = RefMut<'static, ScriptBuilder>
type Anchor = RefMut<'static, ScriptBuilder>
RefFromWasmAbi::Anchor
source§unsafe fn ref_mut_from_abi(
js: <ScriptBuilder as RefMutFromWasmAbi>::Abi
) -> <ScriptBuilder as RefMutFromWasmAbi>::Anchor
unsafe fn ref_mut_from_abi( js: <ScriptBuilder as RefMutFromWasmAbi>::Abi ) -> <ScriptBuilder as RefMutFromWasmAbi>::Anchor
RefFromWasmAbi::ref_from_abi
Auto Trait Implementations§
impl RefUnwindSafe for ScriptBuilder
impl Send for ScriptBuilder
impl Sync for ScriptBuilder
impl Unpin for ScriptBuilder
impl UnwindSafe for ScriptBuilder
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T, U> ExactFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> ExactFrom<T> for Uwhere
U: TryFrom<T>,
fn exact_from(value: T) -> U
§impl<T, U> ExactInto<U> for Twhere
U: ExactFrom<T>,
impl<T, U> ExactInto<U> for Twhere
U: ExactFrom<T>,
fn exact_into(self) -> U
§impl<T, U> OverflowingInto<U> for Twhere
U: OverflowingFrom<T>,
impl<T, U> OverflowingInto<U> for Twhere
U: OverflowingFrom<T>,
fn overflowing_into(self) -> (U, bool)
source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::Abi
source§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi
, except that it may throw and never
return in the case of Err
.