Skip to content

Commit 0245dfd

Browse files
committed
WIP
1 parent 2fdefb4 commit 0245dfd

File tree

18 files changed

+79
-66
lines changed

18 files changed

+79
-66
lines changed

demo/node/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ pallet-block-producer-metadata-rpc = { workspace = true }
119119
sp-governed-map = { workspace = true, features = ["std"] }
120120

121121
# Dependency for Schnorr crypto
122-
schnorr_jubjub = { workspace = true }
122+
schnorr_jubjub = { workspace = true, features = ["std"] }
123123

124124
[build-dependencies]
125125
substrate-build-script-utils = { workspace = true }

demo/node/src/testnet.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use sc_service::ChainType;
99
use sidechain_domain::*;
1010
use sidechain_slots::SlotsPerEpoch;
1111
use sp_core::bytes::from_hex;
12-
use sp_core::{ecdsa, ed25519, sr25519};
12+
use sp_core::{ed25519, sr25519};
1313
use std::str::FromStr;
1414

1515
pub fn authority_keys(

demo/runtime/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ sp-block-producer-fees = { workspace = true }
9999
pallet-block-producer-fees = { workspace = true }
100100

101101
sp-io = { workspace = true }
102-
#schnorr_jubjub = { workspace = true }
102+
schnorr_jubjub = { workspace = true, features = ["full_crypto"] }
103103

104104
[dev-dependencies]
105105
sp-keyring = { workspace = true }
@@ -182,7 +182,7 @@ std = [
182182
"sp-block-participation/std",
183183
"pallet-governed-map/std",
184184
"sp-governed-map/std",
185-
# "schnorr_jubjub/std",
185+
"schnorr_jubjub/std",
186186
]
187187

188188
runtime-benchmarks = [

demo/runtime/src/lib.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ use parity_scale_codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
3838
use scale_info::TypeInfo;
3939
use schnorr::{Public as BeefyId, Public, Signature as BeefySignature};
4040
use schnorr_jubjub as schnorr;
41+
use schnorr_jubjub::PoseidonJubjub;
4142
use serde::{Deserialize, Serialize};
4243
use sidechain_domain::byte_string::{BoundedString, ByteString, SizedByteString};
4344
use sidechain_domain::{
@@ -66,13 +67,17 @@ use sp_sidechain::SidechainStatus;
6667
use sp_std::prelude::*;
6768
use sp_version::RuntimeVersion;
6869
use sp_weights::Weight;
69-
use schnorr_jubjub::PoseidonJubjub;
70-
use crate::mmr::Hashing;
7170

7271
// Make the WASM binary available.
7372
#[cfg(feature = "std")]
7473
include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
7574

75+
#[cfg(all(not(feature = "std"), target_arch = "wasm32"))]
76+
#[panic_handler]
77+
fn panic(_info: &core::panic::PanicInfo) -> ! {
78+
loop {}
79+
}
80+
7681
pub mod genesis_config_presets;
7782

7883
#[cfg(test)]
@@ -663,7 +668,6 @@ parameter_types! {
663668
pub const BeefySetIdSessionEntries: u32 = BondingDuration::get() * SessionsPerEra::get();
664669
}
665670

666-
667671
impl pallet_beefy::Config for Runtime {
668672
type BeefyId = BeefyId;
669673
type SignatureHasher = PoseidonJubjub;

toolkit/committee-selection/authority-selection-inherents/src/filter_invalid_candidates.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ pub fn filter_trustless_candidates_registrations<TAccountId, TAccountKeys>(
107107
genesis_utxo: UtxoId,
108108
) -> Vec<(Candidate<TAccountId, TAccountKeys>, selection::Weight)>
109109
where
110-
TAccountKeys: From<(sr25519::Public, ed25519::Public, ed25519::Public)>,
110+
TAccountKeys: From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>,
111111
TAccountId: From<ecdsa::Public>,
112112
{
113113
candidate_registrations
@@ -126,7 +126,7 @@ pub fn filter_invalid_permissioned_candidates<TAccountId, TAccountKeys>(
126126
permissioned_candidates: Vec<PermissionedCandidateData>,
127127
) -> Vec<Candidate<TAccountId, TAccountKeys>>
128128
where
129-
TAccountKeys: From<(sr25519::Public, ed25519::Public, ed25519::Public)>,
129+
TAccountKeys: From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>,
130130
TAccountId: TryFrom<sidechain_domain::SidechainPublicKey>,
131131
{
132132
permissioned_candidates
@@ -146,7 +146,7 @@ fn select_latest_valid_candidate<TAccountId, TAccountKeys>(
146146
) -> Option<CandidateWithStake<TAccountId, TAccountKeys>>
147147
where
148148
TAccountId: From<ecdsa::Public>,
149-
TAccountKeys: From<(sr25519::Public, ed25519::Public, ed25519::Public)>,
149+
TAccountKeys: From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>,
150150
{
151151
let stake_delegation = validate_stake(candidate_registrations.stake_delegation).ok()?;
152152
let stake_pool_pub_key = candidate_registrations.stake_pool_public_key;
@@ -241,7 +241,7 @@ pub enum PermissionedCandidateDataError {
241241
pub fn validate_permissioned_candidate_data<AccountId: TryFrom<SidechainPublicKey>>(
242242
candidate: PermissionedCandidateData,
243243
) -> Result<
244-
(AccountId, sr25519::Public, ed25519::Public, ed25519::Public),
244+
(AccountId, sr25519::Public, schnorr_jubjub::Public, ed25519::Public),
245245
PermissionedCandidateDataError,
246246
> {
247247
Ok((
@@ -255,7 +255,7 @@ pub fn validate_permissioned_candidate_data<AccountId: TryFrom<SidechainPublicKe
255255
.ok_or(PermissionedCandidateDataError::InvalidAuraKey)?,
256256
candidate
257257
.beefy_public_key
258-
.try_into_ed25519()
258+
.try_into_schnorr()
259259
.ok_or(PermissionedCandidateDataError::InvalidBeefyKey)?,
260260
candidate
261261
.grandpa_public_key
@@ -276,7 +276,7 @@ pub fn validate_registration_data(
276276
registration_data: &RegistrationData,
277277
genesis_utxo: UtxoId,
278278
) -> Result<
279-
(ecdsa::Public, (sr25519::Public, ed25519::Public, ed25519::Public)),
279+
(ecdsa::Public, (sr25519::Public, schnorr_jubjub::Public, ed25519::Public)),
280280
RegistrationDataError,
281281
> {
282282
let aura_pub_key = registration_data
@@ -285,7 +285,7 @@ pub fn validate_registration_data(
285285
.ok_or(RegistrationDataError::InvalidAuraKey)?;
286286
let beefy_pub_key = registration_data
287287
.beefy_pub_key
288-
.try_into_ed25519()
288+
.try_into_schnorr()
289289
.ok_or(RegistrationDataError::InvalidBeefyKey)?;
290290
let grandpa_pub_key = registration_data
291291
.grandpa_pub_key

toolkit/committee-selection/authority-selection-inherents/src/select_authorities.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use sp_core::{U256, ecdsa, ed25519, sr25519};
1414
/// Seed is constructed from the MC epoch nonce and the sidechain epoch.
1515
pub fn select_authorities<
1616
TAccountId: Clone + Ord + TryFrom<sidechain_domain::SidechainPublicKey> + From<ecdsa::Public>,
17-
TAccountKeys: Clone + Ord + From<(sr25519::Public, ed25519::Public, ed25519::Public)>,
17+
TAccountKeys: Clone + Ord + From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>,
1818
>(
1919
genesis_utxo: UtxoId,
2020
input: AuthoritySelectionInputs,

toolkit/partner-chains-cli/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ plutus-datum-derive = { workspace = true }
4040
ed25519-zebra = { workspace = true }
4141
sp-session-validator-management = { workspace = true, features = ["std"] }
4242
pallet-session-validator-management = { workspace = true, features = ["std"] }
43+
schnorr_jubjub = { workspace = true }
4344

4445
[dev-dependencies]
4546
pretty_assertions = { workspace = true }

toolkit/partner-chains-cli/src/permissioned_candidates.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
use ogmios_client::query_ledger_state::{QueryLedgerState, QueryUtxoByUtxoId};
23
use ogmios_client::query_network::QueryNetwork;
34
use ogmios_client::transactions::Transactions;
@@ -10,7 +11,7 @@ use partner_chains_cardano_offchain::permissioned_candidates::{
1011
};
1112
use serde::{Deserialize, Serialize};
1213
use sidechain_domain::{PermissionedCandidateData, UtxoId};
13-
use sp_core::crypto::AccountId32;
14+
use sp_core::crypto::{AccountId32, PublicBytes};
1415
use sp_core::{ecdsa, ed25519, sr25519};
1516
use sp_runtime::traits::IdentifyAccount;
1617
use std::fmt::{Display, Formatter};
@@ -54,17 +55,17 @@ impl From<&sidechain_domain::PermissionedCandidateData> for PermissionedCandidat
5455
pub(crate) struct ParsedPermissionedCandidatesKeys {
5556
pub sidechain: ecdsa::Public,
5657
pub aura: sr25519::Public,
57-
pub beefy: ecdsa::Public,
58+
pub beefy: schnorr_jubjub::Public,
5859
pub grandpa: ed25519::Public,
5960
}
6061

6162
impl ParsedPermissionedCandidatesKeys {
62-
pub fn session_keys<SessionKeys: From<(sr25519::Public, ecdsa::Public, ed25519::Public)>>(
63+
pub fn session_keys<SessionKeys: From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>>(
6364
&self,
6465
) -> SessionKeys {
6566
SessionKeys::from((
6667
sr25519::Public::from(self.aura),
67-
ecdsa::Public::from(self.beefy),
68+
schnorr_jubjub::Public::from(self.beefy.clone()),
6869
ed25519::Public::from(self.grandpa),
6970
))
7071
}
@@ -85,9 +86,9 @@ impl TryFrom<&PermissionedCandidateKeys> for ParsedPermissionedCandidatesKeys {
8586
"{} is invalid sr25519 public key",
8687
value.aura_pub_key
8788
)))?;
88-
let beefy = parse_ecdsa(&value.beefy_pub_key).ok_or(anyhow::Error::msg(format!(
89-
"{} is invalid ecdsa public key",
90-
value.aura_pub_key
89+
let beefy = parse_jubjub(&value.beefy_pub_key).ok_or(anyhow::Error::msg(format!(
90+
"{} is invalid beefy public key",
91+
value.beefy_pub_key
9192
)))?;
9293
let grandpa = parse_ed25519(&value.grandpa_pub_key).ok_or(anyhow::Error::msg(format!(
9394
"{} is invalid Ed25519 public key",
@@ -118,6 +119,11 @@ fn parse_sr25519(value: &str) -> Option<sr25519::Public> {
118119
Some(sr25519::Public::from(<[u8; 32]>::try_from(bytes).ok()?))
119120
}
120121

122+
fn parse_jubjub(value: &str) -> Option<schnorr_jubjub::Public> {
123+
let bytes = sp_core::bytes::from_hex(value).ok()?;
124+
Some(schnorr_jubjub::Public(PublicBytes::from(<[u8; 32]>::try_from(bytes).ok()?)))
125+
}
126+
121127
fn parse_ed25519(value: &str) -> Option<ed25519::Public> {
122128
let bytes = sp_core::bytes::from_hex(value).ok()?;
123129
Some(ed25519::Public::from(<[u8; 32]>::try_from(bytes).ok()?))

toolkit/partner-chains-cli/src/runtime_bindings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub trait PartnerChainRuntime {
1515
type AuthorityKeys: Send
1616
+ Sync
1717
+ 'static
18-
+ From<(sr25519::Public, ecdsa::Public, ed25519::Public)>
18+
+ From<(sr25519::Public, schnorr_jubjub::Public, ed25519::Public)>
1919
+ Serialize;
2020
/// Partner Chain committee member type
2121
type CommitteeMember: Serialize;

toolkit/sidechain/domain/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@ std = [
5757
"secp256k1/global-context",
5858
"ed25519-zebra",
5959
"ed25519-zebra/std",
60+
"schnorr_jubjub/std",
6061
]
6162
serde = ["dep:serde", "scale-info/serde", "sp-core/serde"]

0 commit comments

Comments
 (0)