mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 04:31:08 +00:00
Replace libsecp256k1 with k256 in FRAME related code (#10883)
* Replace libsecp256k1 with k256 in beefy-mmr * Port of FRAME `contracts` benchmarking from `libsecp256k1` to `k256` * Newtype to allow `Pcg32` rng usage with `k256` in contracts benchmarks * Use `sp-io::crypto` to generate dummy keys in `contracts` bechmarks * More compact code * Cargo fmt * Build `sp-keystore` only for dev profile * Move public key generation back to the `map`
This commit is contained in:
@@ -28,7 +28,6 @@ smallvec = { version = "1", default-features = false, features = [
|
||||
wasmi-validation = { version = "0.4", default-features = false }
|
||||
|
||||
# Only used in benchmarking to generate random contract code
|
||||
libsecp256k1 = { version = "0.7", optional = true, default-features = false, features = ["hmac", "static-context"] }
|
||||
rand = { version = "0.8", optional = true, default-features = false }
|
||||
rand_pcg = { version = "0.3", optional = true }
|
||||
|
||||
@@ -56,6 +55,7 @@ pallet-balances = { version = "4.0.0-dev", path = "../balances" }
|
||||
pallet-timestamp = { version = "4.0.0-dev", path = "../timestamp" }
|
||||
pallet-randomness-collective-flip = { version = "4.0.0-dev", path = "../randomness-collective-flip" }
|
||||
pallet-utility = { version = "4.0.0-dev", path = "../utility" }
|
||||
sp-keystore = { version = "0.11.0", path = "../../primitives/keystore" }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
@@ -77,11 +77,9 @@ std = [
|
||||
"pallet-contracts-proc-macro/full",
|
||||
"log/std",
|
||||
"rand/std",
|
||||
"libsecp256k1/std",
|
||||
]
|
||||
runtime-benchmarks = [
|
||||
"frame-benchmarking/runtime-benchmarks",
|
||||
"libsecp256k1",
|
||||
"rand",
|
||||
"rand_pcg",
|
||||
"unstable-interface",
|
||||
|
||||
@@ -1866,20 +1866,14 @@ benchmarks! {
|
||||
// It generates different private keys and signatures for the message "Hello world".
|
||||
seal_ecdsa_recover {
|
||||
let r in 0 .. API_BENCHMARK_BATCHES;
|
||||
use rand::SeedableRng;
|
||||
let mut rng = rand_pcg::Pcg32::seed_from_u64(123456);
|
||||
|
||||
let message_hash = sp_io::hashing::blake2_256("Hello world".as_bytes());
|
||||
let key_type = sp_core::crypto::KeyTypeId(*b"code");
|
||||
let signatures = (0..r * API_BENCHMARK_BATCH_SIZE)
|
||||
.map(|i| {
|
||||
use libsecp256k1::{SecretKey, Message, sign};
|
||||
|
||||
let private_key = SecretKey::random(&mut rng);
|
||||
let (signature, recovery_id) = sign(&Message::parse(&message_hash), &private_key);
|
||||
let mut full_signature = [0; 65];
|
||||
full_signature[..64].copy_from_slice(&signature.serialize());
|
||||
full_signature[64] = recovery_id.serialize();
|
||||
full_signature
|
||||
let pub_key = sp_io::crypto::ecdsa_generate(key_type, None);
|
||||
let sig = sp_io::crypto::ecdsa_sign_prehashed(key_type, &pub_key, &message_hash).expect("Generates signature");
|
||||
AsRef::<[u8; 65]>::as_ref(&sig).to_vec()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
let signatures = signatures.iter().flatten().cloned().collect::<Vec<_>>();
|
||||
|
||||
@@ -43,12 +43,13 @@ use frame_system::{self as system, EventRecord, Phase};
|
||||
use pretty_assertions::assert_eq;
|
||||
use sp_core::Bytes;
|
||||
use sp_io::hashing::blake2_256;
|
||||
use sp_keystore::{testing::KeyStore, KeystoreExt};
|
||||
use sp_runtime::{
|
||||
testing::{Header, H256},
|
||||
traits::{BlakeTwo256, Convert, Hash, IdentityLookup},
|
||||
AccountId32,
|
||||
};
|
||||
use std::cell::RefCell;
|
||||
use std::{cell::RefCell, sync::Arc};
|
||||
|
||||
use crate as pallet_contracts;
|
||||
|
||||
@@ -328,6 +329,7 @@ impl ExtBuilder {
|
||||
.assimilate_storage(&mut t)
|
||||
.unwrap();
|
||||
let mut ext = sp_io::TestExternalities::new(t);
|
||||
ext.register_extension(KeystoreExt(Arc::new(KeyStore::new())));
|
||||
ext.execute_with(|| System::set_block_number(1));
|
||||
ext
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user