Skip to content

Commit 3aff81a

Browse files
fewensabkchr
authored andcommitted
Change submit transaction spec_version and transaction_version query from chain (#1248)
* The `spec_version` and `transaction_version` query from chain * fix compile * Lint * Custom spec_version and transaction_version * runtime version params struct opt * runtime version cli * cli params * Add missing types defined * fix compile * debug cli * clippy * clippy * Query spec_version and transaction_version same times * Fix vars * Wrap option * Wrap option * Try fix ci * Change follow suggestions
1 parent ecd7687 commit 3aff81a

File tree

29 files changed

+600
-274
lines changed

29 files changed

+600
-274
lines changed

bridges/primitives/polkadot-core/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,8 @@ impl<Call> parity_scale_codec::Decode for SignedExtensions<Call> {
265265

266266
impl<Call> SignedExtensions<Call> {
267267
pub fn new(
268-
version: sp_version::RuntimeVersion,
268+
spec_version: u32,
269+
transaction_version: u32,
269270
era: bp_runtime::TransactionEraOf<PolkadotLike>,
270271
genesis_hash: Hash,
271272
nonce: Nonce,
@@ -282,8 +283,8 @@ impl<Call> SignedExtensions<Call> {
282283
tip.into(), // transaction payment / tip (compact encoding)
283284
),
284285
additional_signed: (
285-
version.spec_version,
286-
version.transaction_version,
286+
spec_version,
287+
transaction_version,
287288
genesis_hash,
288289
era.signed_payload(genesis_hash),
289290
(),

bridges/relays/bin-substrate/src/chains/kusama_messages_to_polkadot.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use sp_core::{Bytes, Pair};
2323
use messages_relay::relay_strategy::MixStrategy;
2424
use relay_kusama_client::Kusama;
2525
use relay_polkadot_client::Polkadot;
26-
use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction};
26+
use relay_substrate_client::{Client, SignParam, TransactionSignScheme, UnsignedTransaction};
2727
use substrate_relay_helper::messages_lane::SubstrateMessageLane;
2828

2929
/// Description of Kusama -> Polkadot messages bridge.
@@ -69,14 +69,17 @@ pub(crate) async fn update_polkadot_to_kusama_conversion_rate(
6969
) -> anyhow::Result<()> {
7070
let genesis_hash = *client.genesis_hash();
7171
let signer_id = (*signer.public().as_array_ref()).into();
72+
let (spec_version, transaction_version) = client.simple_runtime_version().await?;
7273
client
7374
.submit_signed_extrinsic(signer_id, move |_, transaction_nonce| {
7475
Bytes(
75-
Kusama::sign_transaction(
76+
Kusama::sign_transaction(SignParam {
77+
spec_version,
78+
transaction_version,
7679
genesis_hash,
77-
&signer,
78-
relay_substrate_client::TransactionEra::immortal(),
79-
UnsignedTransaction::new(
80+
signer,
81+
era: relay_substrate_client::TransactionEra::immortal(),
82+
unsigned: UnsignedTransaction::new(
8083
relay_kusama_client::runtime::Call::BridgePolkadotMessages(
8184
relay_kusama_client::runtime::BridgePolkadotMessagesCall::update_pallet_parameter(
8285
relay_kusama_client::runtime::BridgePolkadotMessagesParameter::PolkadotToKusamaConversionRate(
@@ -86,8 +89,8 @@ pub(crate) async fn update_polkadot_to_kusama_conversion_rate(
8689
),
8790
transaction_nonce,
8891
),
89-
)
90-
.encode(),
92+
})
93+
.encode(),
9194
)
9295
})
9396
.await

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use sp_core::{Bytes, Pair};
2222
use messages_relay::relay_strategy::MixStrategy;
2323
use relay_millau_client::Millau;
2424
use relay_rialto_client::Rialto;
25-
use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction};
25+
use relay_substrate_client::{Client, SignParam, TransactionSignScheme, UnsignedTransaction};
2626
use substrate_relay_helper::messages_lane::{
2727
DirectReceiveMessagesDeliveryProofCallBuilder, DirectReceiveMessagesProofCallBuilder,
2828
SubstrateMessageLane,
@@ -66,23 +66,26 @@ pub(crate) async fn update_rialto_to_millau_conversion_rate(
6666
) -> anyhow::Result<()> {
6767
let genesis_hash = *client.genesis_hash();
6868
let signer_id = (*signer.public().as_array_ref()).into();
69+
let (spec_version, transaction_version) = client.simple_runtime_version().await?;
6970
client
7071
.submit_signed_extrinsic(signer_id, move |_, transaction_nonce| {
7172
Bytes(
72-
Millau::sign_transaction(
73+
Millau::sign_transaction(SignParam {
74+
spec_version,
75+
transaction_version,
7376
genesis_hash,
74-
&signer,
75-
relay_substrate_client::TransactionEra::immortal(),
76-
UnsignedTransaction::new(
77+
signer,
78+
era: relay_substrate_client::TransactionEra::immortal(),
79+
unsigned: UnsignedTransaction::new(
7780
millau_runtime::MessagesCall::update_pallet_parameter {
7881
parameter: millau_runtime::rialto_messages::MillauToRialtoMessagesParameter::RialtoToMillauConversionRate(
7982
sp_runtime::FixedU128::from_float(updated_rate),
8083
),
8184
}
82-
.into(),
85+
.into(),
8386
transaction_nonce,
8487
),
85-
)
88+
})
8689
.encode(),
8790
)
8891
})

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

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ mod tests {
4848
use frame_support::dispatch::GetDispatchInfo;
4949
use relay_millau_client::Millau;
5050
use relay_rialto_client::Rialto;
51-
use relay_substrate_client::{TransactionSignScheme, UnsignedTransaction};
51+
use relay_substrate_client::{SignParam, TransactionSignScheme, UnsignedTransaction};
5252
use sp_core::Pair;
5353
use sp_runtime::traits::{IdentifyAccount, Verify};
5454

@@ -204,12 +204,14 @@ mod tests {
204204
fn rialto_tx_extra_bytes_constant_is_correct() {
205205
let rialto_call =
206206
rialto_runtime::Call::System(rialto_runtime::SystemCall::remark { remark: vec![] });
207-
let rialto_tx = Rialto::sign_transaction(
208-
Default::default(),
209-
&sp_keyring::AccountKeyring::Alice.pair(),
210-
relay_substrate_client::TransactionEra::immortal(),
211-
UnsignedTransaction::new(rialto_call.clone(), 0),
212-
);
207+
let rialto_tx = Rialto::sign_transaction(SignParam {
208+
spec_version: 1,
209+
transaction_version: 1,
210+
genesis_hash: Default::default(),
211+
signer: sp_keyring::AccountKeyring::Alice.pair(),
212+
era: relay_substrate_client::TransactionEra::immortal(),
213+
unsigned: UnsignedTransaction::new(rialto_call.clone(), 0),
214+
});
213215
let extra_bytes_in_transaction = rialto_tx.encode().len() - rialto_call.encode().len();
214216
assert!(
215217
bp_rialto::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction,
@@ -223,12 +225,14 @@ mod tests {
223225
fn millau_tx_extra_bytes_constant_is_correct() {
224226
let millau_call =
225227
millau_runtime::Call::System(millau_runtime::SystemCall::remark { remark: vec![] });
226-
let millau_tx = Millau::sign_transaction(
227-
Default::default(),
228-
&sp_keyring::AccountKeyring::Alice.pair(),
229-
relay_substrate_client::TransactionEra::immortal(),
230-
UnsignedTransaction::new(millau_call.clone(), 0),
231-
);
228+
let millau_tx = Millau::sign_transaction(SignParam {
229+
spec_version: 0,
230+
transaction_version: 0,
231+
genesis_hash: Default::default(),
232+
signer: sp_keyring::AccountKeyring::Alice.pair(),
233+
era: relay_substrate_client::TransactionEra::immortal(),
234+
unsigned: UnsignedTransaction::new(millau_call.clone(), 0),
235+
});
232236
let extra_bytes_in_transaction = millau_tx.encode().len() - millau_call.encode().len();
233237
assert!(
234238
bp_millau::TX_EXTRA_BYTES as usize >= extra_bytes_in_transaction,

bridges/relays/bin-substrate/src/chains/polkadot_messages_to_kusama.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use frame_support::weights::Weight;
2323
use messages_relay::relay_strategy::MixStrategy;
2424
use relay_kusama_client::Kusama;
2525
use relay_polkadot_client::Polkadot;
26-
use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction};
26+
use relay_substrate_client::{Client, SignParam, TransactionSignScheme, UnsignedTransaction};
2727
use substrate_relay_helper::messages_lane::SubstrateMessageLane;
2828

2929
/// Description of Polkadot -> Kusama messages bridge.
@@ -69,14 +69,17 @@ pub(crate) async fn update_kusama_to_polkadot_conversion_rate(
6969
) -> anyhow::Result<()> {
7070
let genesis_hash = *client.genesis_hash();
7171
let signer_id = (*signer.public().as_array_ref()).into();
72+
let (spec_version, transaction_version) = client.simple_runtime_version().await?;
7273
client
7374
.submit_signed_extrinsic(signer_id, move |_, transaction_nonce| {
7475
Bytes(
75-
Polkadot::sign_transaction(
76+
Polkadot::sign_transaction(SignParam {
77+
spec_version,
78+
transaction_version,
7679
genesis_hash,
77-
&signer,
78-
relay_substrate_client::TransactionEra::immortal(),
79-
UnsignedTransaction::new(
80+
signer,
81+
era: relay_substrate_client::TransactionEra::immortal(),
82+
unsigned: UnsignedTransaction::new(
8083
relay_polkadot_client::runtime::Call::BridgeKusamaMessages(
8184
relay_polkadot_client::runtime::BridgeKusamaMessagesCall::update_pallet_parameter(
8285
relay_polkadot_client::runtime::BridgeKusamaMessagesParameter::KusamaToPolkadotConversionRate(
@@ -85,8 +88,8 @@ pub(crate) async fn update_kusama_to_polkadot_conversion_rate(
8588
)
8689
),
8790
transaction_nonce,
88-
),
89-
)
91+
)
92+
})
9093
.encode(),
9194
)
9295
})

bridges/relays/bin-substrate/src/chains/rialto_messages_to_millau.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use sp_core::{Bytes, Pair};
2222
use messages_relay::relay_strategy::MixStrategy;
2323
use relay_millau_client::Millau;
2424
use relay_rialto_client::Rialto;
25-
use relay_substrate_client::{Client, TransactionSignScheme, UnsignedTransaction};
25+
use relay_substrate_client::{Client, SignParam, TransactionSignScheme, UnsignedTransaction};
2626
use substrate_relay_helper::messages_lane::{
2727
DirectReceiveMessagesDeliveryProofCallBuilder, DirectReceiveMessagesProofCallBuilder,
2828
SubstrateMessageLane,
@@ -66,23 +66,26 @@ pub(crate) async fn update_millau_to_rialto_conversion_rate(
6666
) -> anyhow::Result<()> {
6767
let genesis_hash = *client.genesis_hash();
6868
let signer_id = (*signer.public().as_array_ref()).into();
69+
let (spec_version, transaction_version) = client.simple_runtime_version().await?;
6970
client
7071
.submit_signed_extrinsic(signer_id, move |_, transaction_nonce| {
7172
Bytes(
72-
Rialto::sign_transaction(
73+
Rialto::sign_transaction(SignParam {
74+
spec_version,
75+
transaction_version,
7376
genesis_hash,
74-
&signer,
75-
relay_substrate_client::TransactionEra::immortal(),
76-
UnsignedTransaction::new(
77+
signer,
78+
era: relay_substrate_client::TransactionEra::immortal(),
79+
unsigned: UnsignedTransaction::new(
7780
rialto_runtime::MessagesCall::update_pallet_parameter {
7881
parameter: rialto_runtime::millau_messages::RialtoToMillauMessagesParameter::MillauToRialtoConversionRate(
7982
sp_runtime::FixedU128::from_float(updated_rate),
8083
),
8184
}
8285
.into(),
8386
transaction_nonce,
84-
),
85-
)
87+
)
88+
})
8689
.encode(),
8790
)
8891
})

bridges/relays/bin-substrate/src/cli/bridge.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ macro_rules! select_full_bridge {
7777
#[allow(unused_imports)]
7878
use millau_runtime::millau_to_rialto_account_ownership_digest as account_ownership_digest;
7979

80+
#[allow(dead_code)]
81+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(millau_runtime::VERSION);
82+
#[allow(dead_code)]
83+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(rialto_runtime::VERSION);
84+
8085
$generic
8186
}
8287
FullBridge::RialtoToMillau => {
@@ -100,6 +105,11 @@ macro_rules! select_full_bridge {
100105
#[allow(unused_imports)]
101106
use rialto_runtime::rialto_to_millau_account_ownership_digest as account_ownership_digest;
102107

108+
#[allow(dead_code)]
109+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(rialto_runtime::VERSION);
110+
#[allow(dead_code)]
111+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(millau_runtime::VERSION);
112+
103113
$generic
104114
}
105115
FullBridge::RococoToWococo => {
@@ -122,6 +132,11 @@ macro_rules! select_full_bridge {
122132
#[allow(unused_imports)]
123133
use relay_rococo_client::runtime::rococo_to_wococo_account_ownership_digest as account_ownership_digest;
124134

135+
#[allow(dead_code)]
136+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_rococo::VERSION);
137+
#[allow(dead_code)]
138+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_wococo::VERSION);
139+
125140
$generic
126141
}
127142
FullBridge::WococoToRococo => {
@@ -144,6 +159,11 @@ macro_rules! select_full_bridge {
144159
#[allow(unused_imports)]
145160
use relay_wococo_client::runtime::wococo_to_rococo_account_ownership_digest as account_ownership_digest;
146161

162+
#[allow(dead_code)]
163+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_wococo::VERSION);
164+
#[allow(dead_code)]
165+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_rococo::VERSION);
166+
147167
$generic
148168
}
149169
FullBridge::KusamaToPolkadot => {
@@ -166,6 +186,11 @@ macro_rules! select_full_bridge {
166186
#[allow(unused_imports)]
167187
use relay_kusama_client::runtime::kusama_to_polkadot_account_ownership_digest as account_ownership_digest;
168188

189+
#[allow(dead_code)]
190+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_kusama::VERSION);
191+
#[allow(dead_code)]
192+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_polkadot::VERSION);
193+
169194
$generic
170195
}
171196
FullBridge::PolkadotToKusama => {
@@ -188,6 +213,11 @@ macro_rules! select_full_bridge {
188213
#[allow(unused_imports)]
189214
use relay_polkadot_client::runtime::polkadot_to_kusama_account_ownership_digest as account_ownership_digest;
190215

216+
#[allow(dead_code)]
217+
const SOURCE_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_polkadot::VERSION);
218+
#[allow(dead_code)]
219+
const TARGET_RUNTIME_VERSION: Option<sp_version::RuntimeVersion> = Some(bp_kusama::VERSION);
220+
191221
$generic
192222
}
193223
}

bridges/relays/bin-substrate/src/cli/estimate_fee.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ impl EstimateFee {
4646
let Self { source, bridge, lane, payload } = self;
4747

4848
select_full_bridge!(bridge, {
49-
let source_client = source.to_client::<Source>().await?;
49+
let source_client = source.to_client::<Source>(SOURCE_RUNTIME_VERSION).await?;
5050
let lane = lane.into();
5151
let payload =
5252
Source::encode_message(payload).map_err(|e| anyhow::format_err!("{:?}", e))?;
@@ -86,7 +86,7 @@ pub(crate) async fn estimate_message_delivery_and_dispatch_fee<Fee: Decode, C: C
8686
#[cfg(test)]
8787
mod tests {
8888
use super::*;
89-
use crate::cli::encode_call;
89+
use crate::cli::{encode_call, RuntimeVersionType, SourceRuntimeVersionParams};
9090
use sp_core::crypto::Ss58Codec;
9191

9292
#[test]
@@ -118,6 +118,11 @@ mod tests {
118118
source_host: "127.0.0.1".into(),
119119
source_port: 1234,
120120
source_secure: false,
121+
source_runtime_version: SourceRuntimeVersionParams {
122+
source_version_mode: RuntimeVersionType::Bundle,
123+
source_spec_version: None,
124+
source_transaction_version: None,
125+
}
121126
},
122127
payload: crate::cli::encode_message::MessagePayload::Call {
123128
sender: alice.parse().unwrap(),

0 commit comments

Comments
 (0)