Skip to content

Commit 74bc1a5

Browse files
svyatoniktomusdrw
andauthored
Transactions resubmitter (paritytech#1083)
* resubmit transactions: start * resubmit transactions: continue * enable resubmitter in deployments * clippy * spellcheck * Update relays/client-substrate/src/chain.rs Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com> * fix compilation * fix compilation Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
1 parent 21ba001 commit 74bc1a5

File tree

31 files changed

+707
-154
lines changed

31 files changed

+707
-154
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployments/bridges/rialto-millau/docker-compose.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Exposed ports: 10016, 10116, 10216, 10316, 10416
1+
# Exposed ports: 10016, 10116, 10216, 10316, 10416, 10516
22

33
version: '3.5'
44
services:
@@ -60,14 +60,24 @@ services:
6060
depends_on:
6161
- relay-millau-rialto
6262

63+
relay-messages-millau-to-rialto-resubmitter:
64+
<<: *sub-bridge-relay
65+
environment:
66+
RUST_LOG: bridge=trace
67+
entrypoint: /entrypoints/relay-messages-to-rialto-resubmitter-entrypoint.sh
68+
ports:
69+
- "10316:9616"
70+
depends_on:
71+
- relay-messages-millau-to-rialto-generator
72+
6373
relay-messages-rialto-to-millau-lane-00000001:
6474
<<: *sub-bridge-relay
6575
environment:
6676
RUST_LOG: bridge=trace
6777
MSG_EXCHANGE_GEN_LANE: "00000001"
6878
entrypoint: /entrypoints/relay-messages-rialto-to-millau-entrypoint.sh
6979
ports:
70-
- "10316:9616"
80+
- "10416:9616"
7181
depends_on:
7282
- relay-millau-rialto
7383

@@ -77,7 +87,7 @@ services:
7787
MSG_EXCHANGE_GEN_SECONDARY_LANE: "00000001"
7888
entrypoint: /entrypoints/relay-messages-to-millau-generator-entrypoint.sh
7989
ports:
80-
- "10416:9616"
90+
- "10516:9616"
8191
depends_on:
8292
- relay-millau-rialto
8393

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
set -xeu
3+
4+
sleep 20
5+
curl -v http://millau-node-alice:9933/health
6+
7+
# //Dave is signing Millau -> Rialto message-send transactions, which are causing problems
8+
/home/user/substrate-relay resubmit-transactions millau \
9+
--target-host millau-node-alice \
10+
--target-port 9944 \
11+
--target-signer //Dave

primitives/polkadot-core/src/lib.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ pub type Balance = u128;
233233
pub type UncheckedExtrinsic<Call> =
234234
generic::UncheckedExtrinsic<MultiAddress<AccountId, ()>, Call, Signature, SignedExtensions<Call>>;
235235

236+
/// Account address, used by the Polkadot-like chain.
237+
pub type Address = MultiAddress<AccountId, ()>;
238+
236239
/// A type of the data encoded as part of the transaction.
237240
pub type SignedExtra = (
238241
(),
@@ -301,6 +304,18 @@ impl<Call> SignedExtensions<Call> {
301304
}
302305
}
303306

307+
impl<Call> SignedExtensions<Call> {
308+
/// Return signer nonce, used to craft transaction.
309+
pub fn nonce(&self) -> Nonce {
310+
self.encode_payload.4.into()
311+
}
312+
313+
/// Return transaction tip.
314+
pub fn tip(&self) -> Balance {
315+
self.encode_payload.6.into()
316+
}
317+
}
318+
304319
impl<Call> sp_runtime::traits::SignedExtension for SignedExtensions<Call>
305320
where
306321
Call: parity_scale_codec::Codec + sp_std::fmt::Debug + Sync + Send + Clone + Eq + PartialEq,

relays/bin-ethereum/src/rialto_client.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use codec::{Decode, Encode};
2424
use headers_relay::sync_types::SubmittedHeaders;
2525
use relay_ethereum_client::types::HeaderId as EthereumHeaderId;
2626
use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams};
27-
use relay_substrate_client::{Client as SubstrateClient, TransactionSignScheme};
27+
use relay_substrate_client::{Client as SubstrateClient, TransactionSignScheme, UnsignedTransaction};
2828
use relay_utils::HeaderId;
2929
use sp_core::{crypto::Pair, Bytes};
3030
use std::{collections::VecDeque, sync::Arc};
@@ -163,8 +163,7 @@ impl SubmitEthereumHeaders for SubstrateClient<Rialto> {
163163
genesis_hash,
164164
&params,
165165
relay_substrate_client::TransactionEra::immortal(),
166-
transaction_nonce,
167-
instance.build_signed_header_call(headers),
166+
UnsignedTransaction::new(instance.build_signed_header_call(headers), transaction_nonce),
168167
)
169168
.encode(),
170169
)
@@ -266,8 +265,7 @@ impl SubmitEthereumExchangeTransactionProof for SubstrateClient<Rialto> {
266265
genesis_hash,
267266
&params,
268267
relay_substrate_client::TransactionEra::immortal(),
269-
transaction_nonce,
270-
instance.build_currency_exchange_call(proof),
268+
UnsignedTransaction::new(instance.build_currency_exchange_call(proof), transaction_nonce),
271269
)
272270
.encode(),
273271
)

relays/bin-substrate/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ futures = "0.3.12"
1313
hex = "0.4"
1414
log = "0.4.14"
1515
num-format = "0.4"
16+
num-traits = "0.2"
1617
paste = "1.0"
1718
structopt = "0.3"
1819
strum = { version = "0.21.0", features = ["derive"] }

relays/bin-substrate/src/chains/millau_headers_to_rialto.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use sp_core::{Bytes, Pair};
2222
use bp_header_chain::justification::GrandpaJustification;
2323
use relay_millau_client::{Millau, SyncHeader as MillauSyncHeader};
2424
use relay_rialto_client::{Rialto, SigningParams as RialtoSigningParams};
25-
use relay_substrate_client::{Chain, Client, TransactionSignScheme};
25+
use relay_substrate_client::{Chain, Client, TransactionSignScheme, UnsignedTransaction};
2626
use substrate_relay_helper::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate};
2727

2828
/// Millau-to-Rialto finality sync pipeline.
@@ -66,8 +66,7 @@ impl SubstrateFinalitySyncPipeline for MillauFinalityToRialto {
6666
genesis_hash,
6767
&self.finality_pipeline.target_sign,
6868
era,
69-
transaction_nonce,
70-
call,
69+
UnsignedTransaction::new(call, transaction_nonce),
7170
);
7271

7372
Bytes(transaction.encode())

relays/bin-substrate/src/chains/millau_messages_to_rialto.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use frame_support::weights::Weight;
2828
use messages_relay::message_lane::MessageLane;
2929
use relay_millau_client::{HeaderId as MillauHeaderId, Millau, SigningParams as MillauSigningParams};
3030
use relay_rialto_client::{HeaderId as RialtoHeaderId, Rialto, SigningParams as RialtoSigningParams};
31-
use relay_substrate_client::{Chain, Client, TransactionSignScheme};
31+
use relay_substrate_client::{Chain, Client, TransactionSignScheme, UnsignedTransaction};
3232
use relay_utils::metrics::MetricsParams;
3333
use substrate_relay_helper::messages_lane::{
3434
select_delivery_transaction_limits, MessagesRelayParams, StandaloneMessagesMetrics, SubstrateMessageLane,
@@ -89,8 +89,7 @@ impl SubstrateMessageLane for MillauMessagesToRialto {
8989
genesis_hash,
9090
&self.message_lane.source_sign,
9191
relay_substrate_client::TransactionEra::immortal(),
92-
transaction_nonce,
93-
call,
92+
UnsignedTransaction::new(call, transaction_nonce),
9493
);
9594
log::trace!(
9695
target: "bridge",
@@ -134,8 +133,7 @@ impl SubstrateMessageLane for MillauMessagesToRialto {
134133
genesis_hash,
135134
&self.message_lane.target_sign,
136135
relay_substrate_client::TransactionEra::immortal(),
137-
transaction_nonce,
138-
call,
136+
UnsignedTransaction::new(call, transaction_nonce),
139137
);
140138
log::trace!(
141139
target: "bridge",
@@ -274,13 +272,15 @@ pub(crate) async fn update_rialto_to_millau_conversion_rate(
274272
genesis_hash,
275273
&signer,
276274
relay_substrate_client::TransactionEra::immortal(),
277-
transaction_nonce,
278-
millau_runtime::MessagesCall::update_pallet_parameter(
279-
millau_runtime::rialto_messages::MillauToRialtoMessagesParameter::RialtoToMillauConversionRate(
280-
sp_runtime::FixedU128::from_float(updated_rate),
281-
),
282-
)
283-
.into(),
275+
UnsignedTransaction::new(
276+
millau_runtime::MessagesCall::update_pallet_parameter(
277+
millau_runtime::rialto_messages::MillauToRialtoMessagesParameter::RialtoToMillauConversionRate(
278+
sp_runtime::FixedU128::from_float(updated_rate),
279+
),
280+
)
281+
.into(),
282+
transaction_nonce,
283+
),
284284
)
285285
.encode(),
286286
)

relays/bin-substrate/src/chains/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ mod tests {
6767
use frame_support::dispatch::GetDispatchInfo;
6868
use relay_millau_client::Millau;
6969
use relay_rialto_client::Rialto;
70-
use relay_substrate_client::TransactionSignScheme;
70+
use relay_substrate_client::{TransactionSignScheme, UnsignedTransaction};
7171
use sp_core::Pair;
7272
use sp_runtime::traits::{IdentifyAccount, Verify};
7373

@@ -215,8 +215,7 @@ mod tests {
215215
Default::default(),
216216
&sp_keyring::AccountKeyring::Alice.pair(),
217217
relay_substrate_client::TransactionEra::immortal(),
218-
0,
219-
rialto_call.clone(),
218+
UnsignedTransaction::new(rialto_call.clone(), 0),
220219
);
221220
let extra_bytes_in_transaction = rialto_tx.encode().len() - rialto_call.encode().len();
222221
assert!(
@@ -234,8 +233,7 @@ mod tests {
234233
Default::default(),
235234
&sp_keyring::AccountKeyring::Alice.pair(),
236235
relay_substrate_client::TransactionEra::immortal(),
237-
0,
238-
millau_call.clone(),
236+
UnsignedTransaction::new(millau_call.clone(), 0),
239237
);
240238
let extra_bytes_in_transaction = millau_tx.encode().len() - millau_call.encode().len();
241239
assert!(

relays/bin-substrate/src/chains/rialto_headers_to_millau.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use sp_core::{Bytes, Pair};
2222
use bp_header_chain::justification::GrandpaJustification;
2323
use relay_millau_client::{Millau, SigningParams as MillauSigningParams};
2424
use relay_rialto_client::{Rialto, SyncHeader as RialtoSyncHeader};
25-
use relay_substrate_client::{Chain, Client, TransactionSignScheme};
25+
use relay_substrate_client::{Chain, Client, TransactionSignScheme, UnsignedTransaction};
2626
use substrate_relay_helper::finality_pipeline::{SubstrateFinalitySyncPipeline, SubstrateFinalityToSubstrate};
2727

2828
/// Rialto-to-Millau finality sync pipeline.
@@ -71,8 +71,7 @@ impl SubstrateFinalitySyncPipeline for RialtoFinalityToMillau {
7171
genesis_hash,
7272
&self.finality_pipeline.target_sign,
7373
era,
74-
transaction_nonce,
75-
call,
74+
UnsignedTransaction::new(call, transaction_nonce),
7675
);
7776

7877
Bytes(transaction.encode())

0 commit comments

Comments
 (0)