Skip to content

Commit 4f7e566

Browse files
authored
Merge pull request rust-ethereum#14 from PureStake/jeremy-precompile-handle
PrecompileHandle trait
2 parents 0662af4 + d24b525 commit 4f7e566

File tree

3 files changed

+13
-21
lines changed

3 files changed

+13
-21
lines changed

ethcore-builtin/src/lib.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -845,11 +845,7 @@ impl Implementation for EcRecover {
845845
let message = libsecp256k1::Message::parse(&hash);
846846
let recovery_id = libsecp256k1::RecoveryId::parse(bit);
847847
if let Ok(recovery_id) = recovery_id {
848-
if let Ok(p) = libsecp256k1::recover(
849-
&message,
850-
&signature.unwrap(),
851-
&recovery_id,
852-
) {
848+
if let Ok(p) = libsecp256k1::recover(&message, &signature.unwrap(), &recovery_id) {
853849
let r = keccak(&p.serialize()[1..65]);
854850
output.write(0, &[0; 12]);
855851
output.write(12, &r.as_bytes()[12..]);

evm

Submodule evm updated from dff73a6 to 01bcbd2

jsontests/src/state.rs

+11-15
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ use evm::executor::stack::{
88
use evm::{Config, Context, ExitError, ExitSucceed};
99
use lazy_static::lazy_static;
1010
use libsecp256k1::SecretKey;
11-
use sha3::{Digest, Keccak256};
1211
use primitive_types::{H160, H256, U256};
1312
use serde::Deserialize;
13+
use sha3::{Digest, Keccak256};
1414
use std::collections::BTreeMap;
1515
use std::convert::TryInto;
1616

@@ -30,7 +30,7 @@ impl Test {
3030
let public = libsecp256k1::PublicKey::from_secret_key(&secret.unwrap());
3131
let mut res = [0u8; 64];
3232
res.copy_from_slice(&public.serialize()[1..65]);
33-
33+
3434
H160::from(H256::from_slice(Keccak256::digest(&res).as_slice()))
3535
}
3636

@@ -97,12 +97,7 @@ lazy_static! {
9797

9898
macro_rules! precompile_entry {
9999
($map:expr, $builtins:expr, $index:expr) => {
100-
let x: fn(
101-
&[u8],
102-
Option<u64>,
103-
&Context,
104-
bool,
105-
) -> Result<PrecompileOutput, PrecompileFailure> =
100+
let x: PrecompileFn =
106101
|input: &[u8], gas_limit: Option<u64>, _context: &Context, _is_static: bool| {
107102
let builtin = $builtins.get(&H160::from_low_u64_be($index)).unwrap();
108103
Self::exec_as_precompile(builtin, input, gas_limit)
@@ -167,7 +162,7 @@ impl JsonPrecompile {
167162
builtin: &ethcore_builtin::Builtin,
168163
input: &[u8],
169164
gas_limit: Option<u64>,
170-
) -> Result<PrecompileOutput, PrecompileFailure> {
165+
) -> Result<(PrecompileOutput, u64), PrecompileFailure> {
171166
let cost = builtin.cost(input, 0);
172167

173168
if let Some(target_gas) = gas_limit {
@@ -180,12 +175,13 @@ impl JsonPrecompile {
180175

181176
let mut output = Vec::new();
182177
match builtin.execute(input, &mut parity_bytes::BytesRef::Flexible(&mut output)) {
183-
Ok(()) => Ok(PrecompileOutput {
184-
exit_status: ExitSucceed::Stopped,
185-
output,
186-
cost: cost.as_u64(),
187-
logs: Vec::new(),
188-
}),
178+
Ok(()) => Ok((
179+
PrecompileOutput {
180+
exit_status: ExitSucceed::Stopped,
181+
output,
182+
},
183+
cost.as_u64(),
184+
)),
189185
Err(e) => Err(PrecompileFailure::Error {
190186
exit_status: ExitError::Other(e.into()),
191187
}),

0 commit comments

Comments
 (0)