mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 20:29:23 +00:00
serai-node which compiles and produces/finalizes blocks with --dev
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
#![expect(unused_imports, dead_code)]
|
||||
|
||||
use core::marker::PhantomData;
|
||||
|
||||
use sp_core::Pair as PairTrait;
|
||||
|
||||
use sc_service::ChainType;
|
||||
|
||||
use ciphersuite::{group::GroupEncoding, Ciphersuite};
|
||||
use rand_core::OsRng;
|
||||
use zeroize::Zeroizing;
|
||||
use ciphersuite::{
|
||||
group::{ff::Field, GroupEncoding},
|
||||
WrappedGroup, Ciphersuite,
|
||||
};
|
||||
use embedwards25519::Embedwards25519;
|
||||
use secq256k1::Secq256k1;
|
||||
|
||||
@@ -25,15 +28,28 @@ fn insecure_account_from_name(name: &'static str) -> Public {
|
||||
sp_core::sr25519::Pair::from_string(&format!("//{name}"), None).unwrap().public().into()
|
||||
}
|
||||
|
||||
fn insecure_arbitrary_public_key_from_name<C: Ciphersuite>(name: &'static str) -> Vec<u8> {
|
||||
let key = C::hash_to_F(name.as_bytes());
|
||||
(C::generator() * key).to_bytes().as_ref().to_vec()
|
||||
}
|
||||
|
||||
fn insecure_embedded_elliptic_curve_keys_from_name(
|
||||
fn insecure_embedded_elliptic_curve_keys(
|
||||
name: &'static str,
|
||||
) -> Vec<SignedEmbeddedEllipticCurveKeys> {
|
||||
vec![] // TODO
|
||||
vec![
|
||||
SignedEmbeddedEllipticCurveKeys::bitcoin(
|
||||
&mut OsRng,
|
||||
insecure_account_from_name(name),
|
||||
&Zeroizing::new(<Embedwards25519 as WrappedGroup>::F::random(&mut OsRng)),
|
||||
&Zeroizing::new(<Secq256k1 as WrappedGroup>::F::random(&mut OsRng)),
|
||||
),
|
||||
SignedEmbeddedEllipticCurveKeys::ethereum(
|
||||
&mut OsRng,
|
||||
insecure_account_from_name(name),
|
||||
&Zeroizing::new(<Embedwards25519 as WrappedGroup>::F::random(&mut OsRng)),
|
||||
&Zeroizing::new(<Secq256k1 as WrappedGroup>::F::random(&mut OsRng)),
|
||||
),
|
||||
SignedEmbeddedEllipticCurveKeys::monero(
|
||||
&mut OsRng,
|
||||
insecure_account_from_name(name),
|
||||
&Zeroizing::new(<Embedwards25519 as WrappedGroup>::F::random(&mut OsRng)),
|
||||
),
|
||||
]
|
||||
}
|
||||
|
||||
fn wasm_binary() -> Vec<u8> {
|
||||
@@ -54,9 +70,7 @@ fn devnet_genesis(
|
||||
) -> RuntimeGenesisConfig {
|
||||
let validators = validators
|
||||
.iter()
|
||||
.map(|name| {
|
||||
(insecure_account_from_name(name), insecure_embedded_elliptic_curve_keys_from_name(name))
|
||||
})
|
||||
.map(|name| (insecure_account_from_name(name), insecure_embedded_elliptic_curve_keys(name)))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
RuntimeGenesisConfig {
|
||||
@@ -80,20 +94,12 @@ fn devnet_genesis(
|
||||
},
|
||||
signals: SignalsConfig::default(),
|
||||
babe: BabeConfig {
|
||||
authorities: validators
|
||||
.iter()
|
||||
.map(|validator| (sp_core::sr25519::Public::from(validator.0).into(), 1))
|
||||
.collect(),
|
||||
// We leave this empty as `serai-validator-sets-pallet` initializes the authorities
|
||||
authorities: vec![],
|
||||
epoch_config: BABE_GENESIS_EPOCH_CONFIG,
|
||||
_config: PhantomData,
|
||||
},
|
||||
grandpa: GrandpaConfig {
|
||||
authorities: validators
|
||||
.into_iter()
|
||||
.map(|validator| (sp_core::sr25519::Public::from(validator.0).into(), 1))
|
||||
.collect(),
|
||||
_config: PhantomData,
|
||||
},
|
||||
grandpa: GrandpaConfig { authorities: vec![], _config: PhantomData },
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,12 @@ use sp_keystore::*;
|
||||
|
||||
pub struct Keystore(sr25519::Pair);
|
||||
|
||||
impl From<sr25519::Pair> for Keystore {
|
||||
fn from(keypair: sr25519::Pair) -> Self {
|
||||
Self(keypair)
|
||||
}
|
||||
}
|
||||
|
||||
impl Keystore {
|
||||
pub fn from_env() -> Option<Self> {
|
||||
let mut key_hex = serai_env::var("KEY")?;
|
||||
|
||||
@@ -92,6 +92,11 @@ pub fn new_partial(
|
||||
let keystore: Arc<dyn sp_keystore::Keystore> =
|
||||
if let Some(keystore) = crate::keystore::Keystore::from_env() {
|
||||
Arc::new(keystore)
|
||||
} else if let Some(seed) = config.dev_key_seed.as_ref() {
|
||||
Arc::new(crate::keystore::Keystore::from(
|
||||
<sp_core::sr25519::Pair as sp_core::Pair>::from_string(seed, None)
|
||||
.expect("dev key had invalid seed"),
|
||||
))
|
||||
} else {
|
||||
keystore_container.keystore()
|
||||
};
|
||||
@@ -288,10 +293,6 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||
|
||||
let role = config.role;
|
||||
let keystore = keystore_container;
|
||||
if let Some(seed) = config.dev_key_seed.as_ref() {
|
||||
let _ =
|
||||
keystore.sr25519_generate_new(sp_core::crypto::key_types::AUTHORITY_DISCOVERY, Some(seed));
|
||||
}
|
||||
let prometheus_registry = config.prometheus_registry().cloned();
|
||||
|
||||
// TODO: Ensure we're considered as an authority is a validator of an external network
|
||||
|
||||
Reference in New Issue
Block a user