Skip to content

Commit

Permalink
feat: attach inline datum to change output
Browse files Browse the repository at this point in the history
  • Loading branch information
twwu123 committed Feb 21, 2024
1 parent 8bad8bb commit cc6a10d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
31 changes: 27 additions & 4 deletions src/builder/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ impl MeshTxBuilderCore {
reference_inputs: vec![],
mints: vec![],
change_address: "".to_string(),
change_datum: None,
metadata: vec![],
validity_range: ValidityRange {
invalid_before: None,
Expand Down Expand Up @@ -559,6 +560,14 @@ impl MeshTxBuilderCore {
self
}

pub fn change_output_datum(&mut self, data: String) -> &mut MeshTxBuilderCore {
self.mesh_tx_builder_body.change_datum = Some(Datum {
type_: "Inline".to_string(),
data,
});
self
}

pub fn invalid_before(&mut self, slot: u64) -> &mut MeshTxBuilderCore {
self.mesh_tx_builder_body.validity_range.invalid_before = Some(slot);
self
Expand Down Expand Up @@ -962,10 +971,24 @@ impl MeshTxBuilderCore {
}

fn add_change(&mut self, change_address: String) {
let _ = self
.tx_builder
.add_change_if_needed(&csl::address::Address::from_bech32(&change_address).unwrap())
.unwrap();
if self.mesh_tx_builder_body.change_datum.clone().is_some() {
self.tx_builder
.add_change_if_needed_with_datum(
&csl::address::Address::from_bech32(&change_address).unwrap(),
&csl::OutputDatum::new_data(
&csl::plutus::PlutusData::from_json(
&self.mesh_tx_builder_body.change_datum.clone().unwrap().data,
csl::plutus::PlutusDatumSchema::DetailedSchema,
)
.unwrap(),
),
)
.unwrap();
} else {
self.tx_builder
.add_change_if_needed(&csl::address::Address::from_bech32(&change_address).unwrap())
.unwrap();
}
}

// fn add_collateral_return(&mut self, change_address: String) {
Expand Down
1 change: 1 addition & 0 deletions src/model/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pub struct MeshTxBuilderBody {
pub reference_inputs: Vec<RefTxIn>,
pub mints: Vec<MintItem>,
pub change_address: String,
pub change_datum: Option<Datum>,
pub metadata: Vec<Metadata>,
pub validity_range: ValidityRange,
pub signing_key: Vec<String>,
Expand Down

0 comments on commit cc6a10d

Please sign in to comment.