Allow modifications of gas when confirming in signer (#3798)
This commit is contained in:
parent
a6fcd8a0d9
commit
08a47ea2d4
@ -89,11 +89,13 @@ impl<C: 'static, M: 'static> Signer for SignerClient<C, M> where C: MiningBlockC
|
||||
signer.peek(&id).map(|confirmation| {
|
||||
let mut payload = confirmation.payload.clone();
|
||||
// Modify payload
|
||||
match (&mut payload, modification.gas_price) {
|
||||
(&mut ConfirmationPayload::SendTransaction(ref mut request), Some(gas_price)) => {
|
||||
if let ConfirmationPayload::SendTransaction(ref mut request) = payload {
|
||||
if let Some(gas_price) = modification.gas_price {
|
||||
request.gas_price = gas_price.into();
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
if let Some(gas) = modification.gas {
|
||||
request.gas = gas.into();
|
||||
}
|
||||
}
|
||||
// Execute
|
||||
let result = dispatch::execute(&*client, &*miner, &*accounts, payload, Some(pass));
|
||||
|
@ -183,7 +183,7 @@ fn should_confirm_transaction_and_dispatch() {
|
||||
let t = Transaction {
|
||||
nonce: U256::zero(),
|
||||
gas_price: U256::from(0x1000),
|
||||
gas: U256::from(10_000_000),
|
||||
gas: U256::from(0x50505),
|
||||
action: Action::Call(recipient),
|
||||
value: U256::from(0x1),
|
||||
data: vec![]
|
||||
@ -198,7 +198,7 @@ fn should_confirm_transaction_and_dispatch() {
|
||||
let request = r#"{
|
||||
"jsonrpc":"2.0",
|
||||
"method":"signer_confirmRequest",
|
||||
"params":["0x1", {"gasPrice":"0x1000"}, "test"],
|
||||
"params":["0x1", {"gasPrice":"0x1000","gas":"0x50505"}, "test"],
|
||||
"id":1
|
||||
}"#;
|
||||
let response = r#"{"jsonrpc":"2.0","result":""#.to_owned() + format!("0x{:?}", t.hash()).as_ref() + r#"","id":1}"#;
|
||||
|
@ -142,6 +142,8 @@ pub struct TransactionModification {
|
||||
/// Modified gas price
|
||||
#[serde(rename="gasPrice")]
|
||||
pub gas_price: Option<U256>,
|
||||
/// Modified gas
|
||||
pub gas: Option<U256>,
|
||||
}
|
||||
|
||||
/// Represents two possible return values.
|
||||
@ -275,18 +277,26 @@ mod tests {
|
||||
let s1 = r#"{
|
||||
"gasPrice":"0xba43b7400"
|
||||
}"#;
|
||||
let s2 = r#"{}"#;
|
||||
let s2 = r#"{"gas": "0x1233"}"#;
|
||||
let s3 = r#"{}"#;
|
||||
|
||||
// when
|
||||
let res1: TransactionModification = serde_json::from_str(s1).unwrap();
|
||||
let res2: TransactionModification = serde_json::from_str(s2).unwrap();
|
||||
let res3: TransactionModification = serde_json::from_str(s3).unwrap();
|
||||
|
||||
// then
|
||||
assert_eq!(res1, TransactionModification {
|
||||
gas_price: Some(U256::from_str("0ba43b7400").unwrap()),
|
||||
gas: None,
|
||||
});
|
||||
assert_eq!(res2, TransactionModification {
|
||||
gas_price: None,
|
||||
gas: Some(U256::from_str("1233").unwrap()),
|
||||
});
|
||||
assert_eq!(res3, TransactionModification {
|
||||
gas_price: None,
|
||||
gas: None,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user