mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-20 22:05:42 +00:00
Use timestamp to calc block time; Misc. review resp.
This commit is contained in:
+5
-4
@@ -162,8 +162,8 @@ impl<T: Runtime> ClientBuilder<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Set the mortal period. Must be set if `Metadata::derive_mortal_period` results in an error.
|
/// Set the mortal period. Must be set if `Metadata::derive_mortal_period` results in an error.
|
||||||
pub fn set_mortal_period(mut self, mortal_period: u64) -> Self {
|
pub fn set_mortal_period(mut self, mortal_period: Option<u64>) -> Self {
|
||||||
self.mortal_period = Some(Some(mortal_period));
|
self.mortal_period = Some(mortal_period);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +193,8 @@ impl<T: Runtime> ClientBuilder<T> {
|
|||||||
} else {
|
} else {
|
||||||
match metadata.derive_mortal_period() {
|
match metadata.derive_mortal_period() {
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!("`Metadata::derive_mortal_period` failed. Set `mortal_period` prior to invoking `Client::build`.");
|
log::error!("{}", e);
|
||||||
|
log::error!("`Metadata::derive_mortal_period` failed. You may need to set `mortal_period` prior to invoking `Client::build`");
|
||||||
return Err(e.into())
|
return Err(e.into())
|
||||||
}
|
}
|
||||||
Ok(period) => Some(period),
|
Ok(period) => Some(period),
|
||||||
@@ -318,7 +319,7 @@ impl<T: Runtime> Client<T> {
|
|||||||
&self.signed_options.mortal_period
|
&self.signed_options.mortal_period
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the mortal period for signed extrinsics
|
/// Set the mortal period
|
||||||
pub fn set_mortal_period(mut self, mortal_period: Option<u64>) -> Self {
|
pub fn set_mortal_period(mut self, mortal_period: Option<u64>) -> Self {
|
||||||
self.signed_options.mortal_period = mortal_period;
|
self.signed_options.mortal_period = mortal_period;
|
||||||
self
|
self
|
||||||
|
|||||||
+15
-7
@@ -79,9 +79,9 @@ pub enum MetadataError {
|
|||||||
/// Constant is not in metadata.
|
/// Constant is not in metadata.
|
||||||
#[error("Constant {0} not found")]
|
#[error("Constant {0} not found")]
|
||||||
ConstantNotFound(&'static str),
|
ConstantNotFound(&'static str),
|
||||||
/// A value was 0 when a non-zero value was expected.
|
/// Failed trying to derive mortal period
|
||||||
#[error("A value was unexpectedly 0: {0}")]
|
#[error("Failed trying to derive mortal period: {0}")]
|
||||||
ZeroValue(&'static str),
|
MortalPeriodError(&'static str),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Runtime metadata.
|
/// Runtime metadata.
|
||||||
@@ -180,12 +180,20 @@ impl Metadata {
|
|||||||
.and_then(|count| count.value::<u32>())
|
.and_then(|count| count.value::<u32>())
|
||||||
.map(Into::into)?;
|
.map(Into::into)?;
|
||||||
let expected_block_time = self
|
let expected_block_time = self
|
||||||
.module("Babe")
|
.module("Timestamp")
|
||||||
.and_then(|babe| babe.constant("ExpectedBlockTime"))
|
.and_then(|babe| babe.constant("MinimumPeriod"))
|
||||||
.and_then(|e| e.value::<u64>())?;
|
.and_then(|e| e.value::<u64>())?
|
||||||
|
.checked_mul(2)
|
||||||
|
.ok_or(MetadataError::MortalPeriodError(
|
||||||
|
"Underflow or overflow attempting `TimeStamp::MinimumPeriod.checked_mul(2)`",
|
||||||
|
))?;
|
||||||
|
|
||||||
match expected_block_time {
|
match expected_block_time {
|
||||||
0 => Err(MetadataError::ZeroValue("Babe::ExpectedBlockTime")),
|
0 => {
|
||||||
|
Err(MetadataError::MortalPeriodError(
|
||||||
|
"`Babe::ExpectedBlockTime` was 0 when a value > 0 was expected",
|
||||||
|
))
|
||||||
|
}
|
||||||
expected_block_time => {
|
expected_block_time => {
|
||||||
Ok((BASELINE_MORTAL_PERIOD / expected_block_time)
|
Ok((BASELINE_MORTAL_PERIOD / expected_block_time)
|
||||||
.next_power_of_two()
|
.next_power_of_two()
|
||||||
|
|||||||
Reference in New Issue
Block a user