Skip to content

Commit cb6eee1

Browse files
committed
Update to fuel-abi-types version 0.15.2.
1 parent 4f1af43 commit cb6eee1

File tree

6 files changed

+127
-27
lines changed

6 files changed

+127
-27
lines changed

Cargo.lock

Lines changed: 64 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ sway-ir-macros = { path = "sway-ir/sway-ir-macros", version = "0.69.1" }
7474
#
7575

7676
# Dependencies from the `fuel-abi-types` repository:
77-
fuel-abi-types = "0.12"
77+
fuel-abi-types = "0.15.2"
7878

7979
# Dependencies from the `fuel-core` repository:
8080
#

forc-plugins/forc-client/src/op/call/call_function.rs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@ use crate::{
88
};
99
use anyhow::{anyhow, bail, Result};
1010
use fuel_abi_types::abi::unified_program::UnifiedProgramABI;
11-
use fuel_core_client::client::types::TransactionStatus;
11+
use fuel_core_client::client::{types::TransactionStatus, FuelClient};
1212
use fuel_core_types::services::executor::{TransactionExecutionResult, TransactionExecutionStatus};
1313
use fuels::{
14-
accounts::ViewOnlyAccount,
15-
client::FuelClient,
1614
programs::calls::{
1715
receipt_parser::ReceiptParser,
1816
traits::{ContractDependencyConfigurator, TransactionTuner},
1917
ContractCall,
2018
},
2119
types::transaction::Transaction,
2220
};
21+
use fuels_accounts::ViewOnlyAccount;
2322
use fuels_core::{
2423
codec::{
2524
encode_fn_selector, log_formatters_lookup, ABIDecoder, ABIEncoder, DecoderConfig,
@@ -157,16 +156,31 @@ pub async fn call_function(
157156
};
158157

159158
// Execute the call based on execution mode
160-
let client = FuelClient::new(wallet.provider().url())
161-
.map_err(|e| anyhow!("Failed to create client: {e}"))?;
162-
let consensus_params = wallet.provider().consensus_parameters().await?;
159+
let provider = wallet.provider();
160+
let client =
161+
FuelClient::new(provider.url()).map_err(|e| anyhow!("Failed to create client: {e}"))?;
162+
let consensus_params = provider.consensus_parameters().await?;
163163
let chain_id = consensus_params.chain_id();
164164

165+
let required_asset_amounts = call.required_assets(*consensus_params.base_asset_id());
166+
let mut asset_inputs = Vec::new();
167+
for &(asset_id, amount) in &required_asset_amounts {
168+
let resources = wallet
169+
.get_asset_inputs_for_amount(asset_id, amount, None)
170+
.await?;
171+
asset_inputs.extend(resources);
172+
}
173+
165174
let tb = call
166175
.clone()
167176
.with_external_contracts(external_contracts)
168-
.transaction_builder(tx_policies, variable_output_policy, &wallet)
169-
.await
177+
.transaction_builder(
178+
tx_policies,
179+
variable_output_policy,
180+
&consensus_params,
181+
asset_inputs,
182+
&wallet,
183+
)
170184
.map_err(|e| anyhow!("Failed to initialize transaction builder: {e}"))?;
171185

172186
#[cfg_attr(test, allow(unused_variables))]
@@ -305,7 +319,7 @@ pub async fn call_function(
305319
let trace_events = {
306320
use crate::op::call::trace::interpret_execution_trace;
307321
interpret_execution_trace(
308-
wallet.provider(),
322+
provider,
309323
&mode,
310324
&consensus_params,
311325
script,

forc-plugins/forc-client/src/op/call/missing_contracts.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use fuels_accounts::{
77
provider::Provider,
88
signers::private_key::PrivateKeySigner,
99
wallet::{Unlocked, Wallet},
10+
ViewOnlyAccount,
1011
};
1112
use fuels_core::types::{transaction::TxPolicies, transaction_builders::VariableOutputPolicy};
1213

@@ -21,10 +22,26 @@ pub async fn determine_missing_contracts(
2122
log_decoder: &fuels_core::codec::LogDecoder,
2223
account: &Wallet<Unlocked<PrivateKeySigner>>,
2324
) -> Result<Vec<ContractId>> {
24-
let tb = call
25-
.transaction_builder(*tx_policies, *variable_output_policy, account)
26-
.await
27-
.expect("Failed to initialize transaction builder");
25+
let consensus_parameters = account.provider().consensus_parameters().await?;
26+
27+
let required_asset_amounts = call.required_assets(*consensus_parameters.base_asset_id());
28+
29+
// Find the spendable resources required for those calls
30+
let mut asset_inputs = vec![];
31+
for &(asset_id, amount) in &required_asset_amounts {
32+
let resources = account
33+
.get_asset_inputs_for_amount(asset_id, amount, None)
34+
.await?;
35+
asset_inputs.extend(resources);
36+
}
37+
38+
let tb = call.transaction_builder(
39+
*tx_policies,
40+
*variable_output_policy,
41+
&consensus_parameters,
42+
asset_inputs,
43+
account,
44+
)?;
2845

2946
let tx = call
3047
.build_tx(tb, account)

forc-plugins/forc-client/src/op/run/mod.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,16 @@ pub async fn run_pkg(
152152
external_contracts,
153153
};
154154
let tx_policies = tx_policies_from_cmd(command);
155-
let mut tb = call
156-
.transaction_builder(tx_policies, VariableOutputPolicy::EstimateMinimum, &account)
157-
.await?;
155+
let provider = account.try_provider()?;
156+
let consensus_parameters = provider.consensus_parameters().await?;
157+
158+
let mut tb = call.transaction_builder(
159+
tx_policies,
160+
VariableOutputPolicy::EstimateMinimum,
161+
&consensus_parameters,
162+
vec![],
163+
&account,
164+
)?;
158165

159166
account.add_witnesses(&mut tb)?;
160167
account.adjust_for_fee(&mut tb, 0).await?;

sway-core/src/abi_generation/fuel_abi.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ pub fn generate_program_abi(
324324
generate_configurables(handler, ctx, engines, metadata_types, concrete_types)?;
325325
let error_codes = generate_error_codes(ctx.panic_occurrences);
326326
Ok(program_abi::ProgramABI {
327+
panicking_calls: None,
327328
program_type: "contract".to_string(),
328329
spec_version,
329330
encoding_version,
@@ -353,6 +354,7 @@ pub fn generate_program_abi(
353354
generate_configurables(handler, ctx, engines, metadata_types, concrete_types)?;
354355
let error_codes = generate_error_codes(ctx.panic_occurrences);
355356
Ok(program_abi::ProgramABI {
357+
panicking_calls: None,
356358
program_type: "script".to_string(),
357359
spec_version,
358360
encoding_version,
@@ -382,6 +384,7 @@ pub fn generate_program_abi(
382384
generate_configurables(handler, ctx, engines, metadata_types, concrete_types)?;
383385
let error_codes = generate_error_codes(ctx.panic_occurrences);
384386
Ok(program_abi::ProgramABI {
387+
panicking_calls: None,
385388
program_type: "predicate".to_string(),
386389
spec_version,
387390
encoding_version,
@@ -401,6 +404,7 @@ pub fn generate_program_abi(
401404
generate_messages_types(handler, ctx, engines, metadata_types, concrete_types)?;
402405
let error_codes = generate_error_codes(ctx.panic_occurrences);
403406
Ok(program_abi::ProgramABI {
407+
panicking_calls: None,
404408
program_type: "library".to_string(),
405409
spec_version,
406410
encoding_version,
@@ -650,6 +654,7 @@ fn generate_concrete_type_declaration(
650654
let (type_field, concrete_type_id) =
651655
type_id.get_abi_type_field_and_concrete_id(handler, ctx, engines, resolved_type_id)?;
652656
let concrete_type_decl = TypeConcreteDeclaration {
657+
alias_of: None,
653658
type_field,
654659
concrete_type_id: concrete_type_id.clone(),
655660
metadata_type_id,
@@ -818,6 +823,7 @@ fn generate_error_codes(panic_occurrences: &PanicOccurrences) -> BTreeMap<u64, E
818823
file: panic_occurrence.loc.file.clone(),
819824
line: panic_occurrence.loc.loc.line as u64,
820825
column: panic_occurrence.loc.loc.col as u64,
826+
function: String::default(),
821827
},
822828
log_id: panic_occurrence
823829
.log_id
@@ -918,6 +924,7 @@ impl TypeId {
918924
type_id: program_abi::TypeId::Metadata(MetadataTypeId(
919925
x.type_argument.initial_type_id().index(),
920926
)),
927+
offset: None,
921928
error_message: x.attributes.error_message().cloned(),
922929
type_arguments: x
923930
.type_argument
@@ -972,6 +979,7 @@ impl TypeId {
972979
x.type_argument.initial_type_id().index(),
973980
)),
974981
error_message: None,
982+
offset: None,
975983
type_arguments: x
976984
.type_argument
977985
.initial_type_id()

0 commit comments

Comments
 (0)