// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . use ethereum_types::{U256, Address}; use bytes::Bytes; use v1::types::{Origin, TransactionCondition}; /// Transaction request coming from RPC #[derive(Debug, Clone, Default, Eq, PartialEq, Hash)] pub struct TransactionRequest { /// Sender pub from: Option
, /// Recipient pub to: Option
, /// Gas Price pub gas_price: Option, /// Gas pub gas: Option, /// Value of transaction in wei pub value: Option, /// Additional data sent with transaction pub data: Option, /// Transaction's nonce pub nonce: Option, /// Delay until this condition is met. pub condition: Option, } /// Transaction request coming from RPC with default values filled in. #[derive(Debug, Clone, Default, Eq, PartialEq, Hash)] pub struct FilledTransactionRequest { /// Sender pub from: Address, /// Indicates if the sender was filled by default value. pub used_default_from: bool, /// Recipient pub to: Option
, /// Gas Price pub gas_price: U256, /// Gas pub gas: U256, /// Value of transaction in wei pub value: U256, /// Additional data sent with transaction pub data: Bytes, /// Transaction's nonce pub nonce: Option, /// Delay until this condition is met. pub condition: Option, } impl From for TransactionRequest { fn from(r: FilledTransactionRequest) -> Self { TransactionRequest { from: Some(r.from), to: r.to, gas_price: Some(r.gas_price), gas: Some(r.gas), value: Some(r.value), data: Some(r.data), nonce: r.nonce, condition: r.condition, } } } /// Call request #[derive(Debug, Default, PartialEq)] pub struct CallRequest { /// From pub from: Option
, /// To pub to: Option
, /// Gas Price pub gas_price: Option, /// Gas pub gas: Option, /// Value pub value: Option, /// Data pub data: Option>, /// Nonce pub nonce: Option, } /// Confirmation object #[derive(Debug, Clone, Eq, PartialEq, Hash)] pub struct ConfirmationRequest { /// Id of this confirmation pub id: U256, /// Payload to confirm pub payload: ConfirmationPayload, /// Request origin pub origin: Origin, } /// Payload to confirm in Trusted Signer #[derive(Debug, Clone, Eq, PartialEq, Hash)] pub enum ConfirmationPayload { /// Transaction SendTransaction(FilledTransactionRequest), /// Sign Transaction SignTransaction(FilledTransactionRequest), /// Sign a message with an Ethereum specific security prefix. EthSignMessage(Address, Bytes), /// Decrypt request Decrypt(Address, Bytes), } impl ConfirmationPayload { pub fn sender(&self) -> Address { match *self { ConfirmationPayload::SendTransaction(ref request) => request.from, ConfirmationPayload::SignTransaction(ref request) => request.from, ConfirmationPayload::EthSignMessage(ref address, _) => *address, ConfirmationPayload::Decrypt(ref address, _) => *address, } } }