Skip to content

Commit 85b3928

Browse files
authored
Merge branch 'master' into release/11.2.1
2 parents f191d8f + f90602b commit 85b3928

File tree

3 files changed

+260
-42
lines changed

3 files changed

+260
-42
lines changed

rust/pkg/cardano_serialization_lib.js.flow

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,26 @@
55
* @flow
66
*/
77

8+
/**
9+
* @param {string} json
10+
* @param {number} schema
11+
* @returns {PlutusData}
12+
*/
13+
declare export function encode_json_str_to_plutus_datum(
14+
json: string,
15+
schema: number
16+
): PlutusData;
17+
18+
/**
19+
* @param {PlutusData} datum
20+
* @param {number} schema
21+
* @returns {string}
22+
*/
23+
declare export function decode_plutus_datum_to_json_str(
24+
datum: PlutusData,
25+
schema: number
26+
): string;
27+
828
/**
929
* @param {Uint8Array} bytes
1030
* @returns {TransactionMetadatum}
@@ -41,26 +61,6 @@ declare export function decode_metadatum_to_json_str(
4161
schema: number
4262
): string;
4363

44-
/**
45-
* @param {string} json
46-
* @param {number} schema
47-
* @returns {PlutusData}
48-
*/
49-
declare export function encode_json_str_to_plutus_datum(
50-
json: string,
51-
schema: number
52-
): PlutusData;
53-
54-
/**
55-
* @param {PlutusData} datum
56-
* @param {number} schema
57-
* @returns {string}
58-
*/
59-
declare export function decode_plutus_datum_to_json_str(
60-
datum: PlutusData,
61-
schema: number
62-
): string;
63-
6464
/**
6565
* @param {Transaction} tx
6666
* @param {LinearFee} linear_fee
@@ -333,26 +333,6 @@ declare export var NetworkIdKind: {|
333333
+Mainnet: 1, // 1
334334
|};
335335

336-
/**
337-
*/
338-
339-
declare export var TransactionMetadatumKind: {|
340-
+MetadataMap: 0, // 0
341-
+MetadataList: 1, // 1
342-
+Int: 2, // 2
343-
+Bytes: 3, // 3
344-
+Text: 4, // 4
345-
|};
346-
347-
/**
348-
*/
349-
350-
declare export var MetadataJsonSchema: {|
351-
+NoConversions: 0, // 0
352-
+BasicConversions: 1, // 1
353-
+DetailedSchema: 2, // 2
354-
|};
355-
356336
/**
357337
*/
358338

@@ -399,6 +379,26 @@ declare export var PlutusDatumSchema: {|
399379
+DetailedSchema: 1, // 1
400380
|};
401381

382+
/**
383+
*/
384+
385+
declare export var TransactionMetadatumKind: {|
386+
+MetadataMap: 0, // 0
387+
+MetadataList: 1, // 1
388+
+Int: 2, // 2
389+
+Bytes: 3, // 3
390+
+Text: 4, // 4
391+
|};
392+
393+
/**
394+
*/
395+
396+
declare export var MetadataJsonSchema: {|
397+
+NoConversions: 0, // 0
398+
+BasicConversions: 1, // 1
399+
+DetailedSchema: 2, // 2
400+
|};
401+
402402
/**
403403
*/
404404

@@ -4419,6 +4419,18 @@ declare export class NetworkInfo {
44194419
/**
44204420
* @returns {NetworkInfo}
44214421
*/
4422+
static testnet_preview(): NetworkInfo;
4423+
4424+
/**
4425+
* @returns {NetworkInfo}
4426+
*/
4427+
static testnet_preprod(): NetworkInfo;
4428+
4429+
/**
4430+
* !!! DEPRECATED !!!
4431+
* This network does not exist anymore. Use `.testnet_preview()` or `.testnet_preprod()`
4432+
* @returns {NetworkInfo}
4433+
*/
44224434
static testnet(): NetworkInfo;
44234435

44244436
/**

rust/src/address.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ impl NetworkInfo {
5353
self.protocol_magic
5454
}
5555

56+
pub fn testnet_preview() -> NetworkInfo {
57+
NetworkInfo {
58+
network_id: 0b0000,
59+
protocol_magic: 2,
60+
}
61+
}
62+
pub fn testnet_preprod() -> NetworkInfo {
63+
NetworkInfo {
64+
network_id: 0b0000,
65+
protocol_magic: 1,
66+
}
67+
}
68+
/// !!! DEPRECATED !!!
69+
/// This network does not exist anymore. Use `.testnet_preview()` or `.testnet_preprod()`
70+
#[deprecated(since = "11.2.0", note = "Use `.testnet_preview` or `.testnet_preprod`")]
5671
pub fn testnet() -> NetworkInfo {
5772
NetworkInfo {
5873
network_id: 0b0000,

rust/src/tx_builder.rs

Lines changed: 193 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ impl TransactionBuilder {
846846

847847
/// Returns the number of still missing input scripts (either native or plutus)
848848
/// Use `.add_required_native_input_scripts` or `.add_required_plutus_input_scripts` to add the missing scripts
849-
#[deprecated(since = "10.2.0", note = "Use `.set_inputs`")]
849+
#[deprecated(since = "10.2.0", note = "Use `.count_missing_input_scripts` from `TxInputsBuilder`")]
850850
pub fn count_missing_input_scripts(&self) -> usize {
851851
self.inputs.count_missing_input_scripts()
852852
}
@@ -1931,7 +1931,7 @@ mod tests {
19311931
use crate::fakes::{fake_base_address, fake_bytes_32, fake_key_hash, fake_policy_id, fake_tx_hash, fake_tx_input, fake_tx_input2, fake_value, fake_value2};
19321932
use crate::tx_builder_constants::TxBuilderConstants;
19331933
use fees::*;
1934-
use crate::tx_builder::tx_inputs_builder::PlutusScriptSource;
1934+
use crate::tx_builder::tx_inputs_builder::{InputsWithScriptWitness, InputWithScriptWitness, PlutusScriptSource};
19351935

19361936
const MAX_VALUE_SIZE: u32 = 4000;
19371937
const MAX_TX_SIZE: u32 = 8000; // might be out of date but suffices for our tests
@@ -7648,4 +7648,195 @@ mod tests {
76487648
assert!(tx.body.mint.is_some());
76497649
assert_eq!(tx.body.mint.unwrap().0.iter().next().unwrap().0, plutus_script.hash());
76507650
}
7651+
7652+
#[test]
7653+
fn multiple_plutus_inputs_test() {
7654+
let mut tx_builder = create_reallistic_tx_builder();
7655+
let plutus_script = plutus::PlutusScript::from_hex("5907d2010000332323232323232323232323232323322323232323222232325335332201b3333573466e1cd55ce9baa0044800080608c98c8060cd5ce00c80c00b1999ab9a3370e6aae7540092000233221233001003002323232323232323232323232323333573466e1cd55cea8062400046666666666664444444444442466666666666600201a01801601401201000e00c00a00800600466a02a02c6ae854030cd4054058d5d0a80599a80a80b9aba1500a3335501975ca0306ae854024ccd54065d7280c1aba1500833501502035742a00e666aa032042eb4d5d0a8031919191999ab9a3370e6aae75400920002332212330010030023232323333573466e1cd55cea8012400046644246600200600466a056eb4d5d0a80118161aba135744a004464c6405c66ae700bc0b80b04d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40add69aba15002302c357426ae8940088c98c80b8cd5ce01781701609aab9e5001137540026ae84d5d1280111931901519ab9c02b02a028135573ca00226ea8004d5d0a80299a80abae35742a008666aa03203a40026ae85400cccd54065d710009aba15002301f357426ae8940088c98c8098cd5ce01381301209aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba15002300f357426ae8940088c98c8060cd5ce00c80c00b080b89931900b99ab9c4910350543500017135573ca00226ea800448c88c008dd6000990009aa80a911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200723333573466e1d40092000212200123263200633573800e00c00800626aae74dd5000a4c24002920103505431001220021123230010012233003300200200133351222335122335004335500248811c2b194b7d10a3d2d3152c5f3a628ff50cb9fc11e59453e8ac7a1aea4500488104544e4654005005112212330010030021120011122002122122330010040031200101").unwrap();
7656+
let redeemer1 = Redeemer::from_json("\
7657+
{
7658+
\"tag\": \"Mint\",
7659+
\"index\": \"0\",
7660+
\"data\": \"{\\\"constructor\\\":0,\\\"fields\\\":[]}\",
7661+
\"ex_units\": {
7662+
\"mem\": \"1042996\",
7663+
\"steps\": \"446100241\"
7664+
}
7665+
}").unwrap();
7666+
7667+
let redeemer2 = Redeemer::from_json("\
7668+
{
7669+
\"tag\": \"Mint\",
7670+
\"index\": \"0\",
7671+
\"data\": \"{\\\"constructor\\\":0,\\\"fields\\\":[]}\",
7672+
\"ex_units\": {
7673+
\"mem\": \"1042996\",
7674+
\"steps\": \"446100241\"
7675+
}
7676+
}").unwrap();
7677+
7678+
let mut in_builder = TxInputsBuilder::new();
7679+
let input_1 = TransactionInput::new(
7680+
&TransactionHash::from_bytes(
7681+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7682+
.unwrap(),
7683+
)
7684+
.unwrap(),
7685+
1,
7686+
);
7687+
let input_2 = TransactionInput::new(
7688+
&TransactionHash::from_bytes(
7689+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7690+
.unwrap(),
7691+
)
7692+
.unwrap(),
7693+
2,
7694+
);
7695+
7696+
let colateral_adress = Address::from_bech32("addr_test1qpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5ewvxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qum8x5w").unwrap();
7697+
let colateral_input = TransactionInput::new(
7698+
&TransactionHash::from_bytes(
7699+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7700+
.unwrap(),
7701+
)
7702+
.unwrap(),
7703+
3
7704+
);
7705+
7706+
let output_adress = Address::from_bech32("addr_test1qpm5njmgzf4t7225v6j34wl30xfrufzt3jtqtdzf3en9ahpmnhtmynpasyc8fq75zv0uaj86vzsr7g3g8q5ypgu5fwtqr9zsgj").unwrap();
7707+
let output_value = Value::new(&Coin::from(500000u64));
7708+
let output = TransactionOutput::new(&output_adress, &output_value);
7709+
7710+
tx_builder.add_output(&output);
7711+
let mut col_builder = TxInputsBuilder::new();
7712+
col_builder.add_input(&colateral_adress, &colateral_input, &Value::new(&Coin::from(1000000000u64)));
7713+
tx_builder.set_collateral(&col_builder);
7714+
7715+
let datum = PlutusData::new_bytes(fake_bytes_32(11));
7716+
let plutus_wit1 = PlutusWitness::new(
7717+
&plutus_script,
7718+
&datum,
7719+
&redeemer1
7720+
);
7721+
7722+
let plutus_wit2 = PlutusWitness::new(
7723+
&plutus_script,
7724+
&datum,
7725+
&redeemer2
7726+
);
7727+
7728+
let value = Value::new(&Coin::from(100000000u64));
7729+
7730+
in_builder.add_plutus_script_input(&plutus_wit1, &input_1, &value);
7731+
in_builder.add_plutus_script_input(&plutus_wit2, &input_2, &value);
7732+
7733+
tx_builder.set_inputs(&in_builder);
7734+
tx_builder.calc_script_data_hash(&TxBuilderConstants::plutus_vasil_cost_models());
7735+
tx_builder.add_change_if_needed(&output_adress);
7736+
let build_res = tx_builder.build_tx();
7737+
assert!(&build_res.is_ok());
7738+
let tx = build_res.unwrap();
7739+
assert_eq!(tx.witness_set.plutus_scripts.unwrap().len(), 1usize);
7740+
assert_eq!(tx.witness_set.redeemers.unwrap().len(), 2usize);
7741+
}
7742+
7743+
#[test]
7744+
fn multiple_plutus_inputs_with_missed_wit_test() {
7745+
let mut tx_builder = create_reallistic_tx_builder();
7746+
let plutus_script = plutus::PlutusScript::from_hex("5907d2010000332323232323232323232323232323322323232323222232325335332201b3333573466e1cd55ce9baa0044800080608c98c8060cd5ce00c80c00b1999ab9a3370e6aae7540092000233221233001003002323232323232323232323232323333573466e1cd55cea8062400046666666666664444444444442466666666666600201a01801601401201000e00c00a00800600466a02a02c6ae854030cd4054058d5d0a80599a80a80b9aba1500a3335501975ca0306ae854024ccd54065d7280c1aba1500833501502035742a00e666aa032042eb4d5d0a8031919191999ab9a3370e6aae75400920002332212330010030023232323333573466e1cd55cea8012400046644246600200600466a056eb4d5d0a80118161aba135744a004464c6405c66ae700bc0b80b04d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40add69aba15002302c357426ae8940088c98c80b8cd5ce01781701609aab9e5001137540026ae84d5d1280111931901519ab9c02b02a028135573ca00226ea8004d5d0a80299a80abae35742a008666aa03203a40026ae85400cccd54065d710009aba15002301f357426ae8940088c98c8098cd5ce01381301209aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba15002300f357426ae8940088c98c8060cd5ce00c80c00b080b89931900b99ab9c4910350543500017135573ca00226ea800448c88c008dd6000990009aa80a911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200723333573466e1d40092000212200123263200633573800e00c00800626aae74dd5000a4c24002920103505431001220021123230010012233003300200200133351222335122335004335500248811c2b194b7d10a3d2d3152c5f3a628ff50cb9fc11e59453e8ac7a1aea4500488104544e4654005005112212330010030021120011122002122122330010040031200101").unwrap();
7747+
let redeemer1 = Redeemer::from_json("\
7748+
{
7749+
\"tag\": \"Mint\",
7750+
\"index\": \"0\",
7751+
\"data\": \"{\\\"constructor\\\":0,\\\"fields\\\":[]}\",
7752+
\"ex_units\": {
7753+
\"mem\": \"1042996\",
7754+
\"steps\": \"446100241\"
7755+
}
7756+
}").unwrap();
7757+
7758+
let redeemer2 = Redeemer::from_json("\
7759+
{
7760+
\"tag\": \"Mint\",
7761+
\"index\": \"0\",
7762+
\"data\": \"{\\\"constructor\\\":0,\\\"fields\\\":[]}\",
7763+
\"ex_units\": {
7764+
\"mem\": \"1042996\",
7765+
\"steps\": \"446100241\"
7766+
}
7767+
}").unwrap();
7768+
7769+
let mut in_builder = TxInputsBuilder::new();
7770+
let input_1 = TransactionInput::new(
7771+
&TransactionHash::from_bytes(
7772+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7773+
.unwrap(),
7774+
)
7775+
.unwrap(),
7776+
1,
7777+
);
7778+
let input_2 = TransactionInput::new(
7779+
&TransactionHash::from_bytes(
7780+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7781+
.unwrap(),
7782+
)
7783+
.unwrap(),
7784+
2,
7785+
);
7786+
7787+
let colateral_adress = Address::from_bech32("addr_test1qpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5ewvxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qum8x5w").unwrap();
7788+
let colateral_input = TransactionInput::new(
7789+
&TransactionHash::from_bytes(
7790+
hex::decode("3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7")
7791+
.unwrap(),
7792+
)
7793+
.unwrap(),
7794+
3
7795+
);
7796+
7797+
let output_adress = Address::from_bech32("addr_test1qpm5njmgzf4t7225v6j34wl30xfrufzt3jtqtdzf3en9ahpmnhtmynpasyc8fq75zv0uaj86vzsr7g3g8q5ypgu5fwtqr9zsgj").unwrap();
7798+
let output_value = Value::new(&Coin::from(500000u64));
7799+
let output = TransactionOutput::new(&output_adress, &output_value);
7800+
7801+
tx_builder.add_output(&output);
7802+
let mut col_builder = TxInputsBuilder::new();
7803+
col_builder.add_input(&colateral_adress, &colateral_input, &Value::new(&Coin::from(1000000000u64)));
7804+
tx_builder.set_collateral(&col_builder);
7805+
7806+
let datum = PlutusData::new_bytes(fake_bytes_32(11));
7807+
let plutus_wit1 = PlutusWitness::new(
7808+
&plutus_script,
7809+
&datum,
7810+
&redeemer1
7811+
);
7812+
7813+
let plutus_wit2 = PlutusWitness::new(
7814+
&plutus_script,
7815+
&datum,
7816+
&redeemer2
7817+
);
7818+
7819+
let value = Value::new(&Coin::from(100000000u64));
7820+
7821+
in_builder.add_plutus_script_input(&plutus_wit1, &input_1, &value);
7822+
let script_addr = create_base_address_from_script_hash(&plutus_script.hash());
7823+
in_builder.add_input(&script_addr, &input_2, &value);
7824+
7825+
assert_eq!(in_builder.count_missing_input_scripts(), 1usize);
7826+
let mut inputs_with_wit = InputsWithScriptWitness::new();
7827+
let in_with_wit = InputWithScriptWitness::new_with_plutus_witness(&input_2, &plutus_wit2);
7828+
inputs_with_wit.add(&in_with_wit);
7829+
in_builder.add_required_script_input_witnesses(&inputs_with_wit);
7830+
7831+
tx_builder.set_inputs(&in_builder);
7832+
7833+
7834+
tx_builder.calc_script_data_hash(&TxBuilderConstants::plutus_vasil_cost_models());
7835+
tx_builder.add_change_if_needed(&output_adress);
7836+
let build_res = tx_builder.build_tx();
7837+
assert!(&build_res.is_ok());
7838+
let tx = build_res.unwrap();
7839+
assert_eq!(tx.witness_set.plutus_scripts.unwrap().len(), 1usize);
7840+
assert_eq!(tx.witness_set.redeemers.unwrap().len(), 2usize);
7841+
}
76517842
}

0 commit comments

Comments
 (0)