Skip to content

Commit

Permalink
Multichain Scripts: Deploy each sequence of transactions sequentially…
Browse files Browse the repository at this point in the history
… instead of in parallel. (#6271)

* deploy recorded txns sequentially

* remove println

* fmt fix

* remove unnecessary comment
  • Loading branch information
ArshanKhanifar authored Nov 10, 2023
1 parent 90d4dce commit 2df7306
Showing 1 changed file with 22 additions and 24 deletions.
46 changes: 22 additions & 24 deletions crates/forge/bin/cmd/script/multi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use super::{
ScriptArgs,
};
use ethers::signers::LocalWallet;
use eyre::{ContextCompat, Result, WrapErr};
use eyre::{ContextCompat, Report, Result, WrapErr};
use foundry_cli::utils::now;
use foundry_common::{fs, get_http_provider};
use foundry_compilers::{artifacts::Libraries, ArtifactId};
Expand Down Expand Up @@ -139,37 +139,35 @@ impl ScriptArgs {
join_all(futs).await.into_iter().filter(|res| res.is_err()).collect::<Vec<_>>();

if !errors.is_empty() {
return Err(eyre::eyre!("{errors:?}"))
return Err(eyre::eyre!("{errors:?}"));
}
}

trace!(target: "script", "broadcasting multi chain deployments");

let futs = deployments
.deployments
.iter_mut()
.map(|sequence| async {
match self
.send_transactions(
sequence,
&sequence.typed_transactions().first().unwrap().0.clone(),
&script_wallets,
)
.await
{
Ok(_) => {
if self.verify {
return sequence.verify_contracts(config, verify.clone()).await
}
Ok(())
let mut results: Vec<Result<(), Report>> = Vec::new();

for sequence in deployments.deployments.iter_mut() {
let result = match self
.send_transactions(
sequence,
&sequence.typed_transactions().first().unwrap().0.clone(),
&script_wallets,
)
.await
{
Ok(_) => {
if self.verify {
return sequence.verify_contracts(config, verify.clone()).await
}
Err(err) => Err(err),
Ok(())
}
})
.collect::<Vec<_>>();
Err(err) => Err(err),
};
results.push(result);
}

let errors =
join_all(futs).await.into_iter().filter(|res| res.is_err()).collect::<Vec<_>>();
let errors = results.into_iter().filter(|res| res.is_err()).collect::<Vec<_>>();

if !errors.is_empty() {
return Err(eyre::eyre!("{errors:?}"))
Expand Down

0 comments on commit 2df7306

Please sign in to comment.