Skip to content

Commit 8cb6985

Browse files
committed
Move check for aura/grandpa only keys one level higher
1 parent 932a977 commit 8cb6985

File tree

1 file changed

+28
-57
lines changed

1 file changed

+28
-57
lines changed

toolkit/smart-contracts/plutus-data/src/registered_candidates.rs

Lines changed: 28 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -111,16 +111,27 @@ impl VersionedDatumWithLegacy for RegisterValidatorDatum {
111111
pub fn candidate_registration_to_plutus_data(
112112
candidate_registration: &CandidateRegistration,
113113
) -> PlutusData {
114-
RegisterValidatorDatum::V0 {
115-
stake_ownership: candidate_registration.stake_ownership.clone(),
116-
sidechain_pub_key: candidate_registration.partner_chain_pub_key.clone(),
117-
sidechain_signature: candidate_registration.partner_chain_signature.clone(),
118-
registration_utxo: candidate_registration.registration_utxo,
119-
own_pkh: candidate_registration.own_pkh,
120-
aura_pub_key: AuraPublicKey(candidate_registration.keys.find_or_empty(AURA)),
121-
grandpa_pub_key: GrandpaPublicKey(candidate_registration.keys.find_or_empty(GRANDPA)),
122-
}
123-
.into()
114+
let datum = if candidate_registration.keys.has_only_aura_and_grandpa_keys() {
115+
RegisterValidatorDatum::V0 {
116+
stake_ownership: candidate_registration.stake_ownership.clone(),
117+
sidechain_pub_key: candidate_registration.partner_chain_pub_key.clone(),
118+
sidechain_signature: candidate_registration.partner_chain_signature.clone(),
119+
registration_utxo: candidate_registration.registration_utxo,
120+
own_pkh: candidate_registration.own_pkh,
121+
aura_pub_key: AuraPublicKey(candidate_registration.keys.find_or_empty(AURA)),
122+
grandpa_pub_key: GrandpaPublicKey(candidate_registration.keys.find_or_empty(GRANDPA)),
123+
}
124+
} else {
125+
RegisterValidatorDatum::V1 {
126+
stake_ownership: candidate_registration.stake_ownership.clone(),
127+
sidechain_pub_key: candidate_registration.partner_chain_pub_key.clone(),
128+
sidechain_signature: candidate_registration.partner_chain_signature.clone(),
129+
registration_utxo: candidate_registration.registration_utxo,
130+
own_pkh: candidate_registration.own_pkh,
131+
keys: candidate_registration.keys.clone(),
132+
}
133+
};
134+
datum.into()
124135
}
125136

126137
impl From<RegisterValidatorDatum> for CandidateRegistration {
@@ -312,19 +323,12 @@ impl From<RegisterValidatorDatum> for PlutusData {
312323
appendix_fields.add(&PlutusData::new_bytes(sidechain_pub_key.0));
313324
appendix_fields.add(&PlutusData::new_bytes(sidechain_signature.0));
314325
appendix_fields.add(&utxo_id_to_plutus_data(registration_utxo));
315-
let version = if keys.has_only_aura_and_grandpa_keys() {
316-
appendix_fields.add(&PlutusData::new_bytes(keys.find_or_empty(AURA)));
317-
appendix_fields.add(&PlutusData::new_bytes(keys.find_or_empty(GRANDPA)));
318-
0
319-
} else {
320-
appendix_fields.add(&candidate_keys_to_plutus(&keys));
321-
1
322-
};
326+
appendix_fields.add(&candidate_keys_to_plutus(&keys));
323327
let appendix = ConstrPlutusData::new(&BigNum::zero(), &appendix_fields);
324328
VersionedGenericDatum {
325329
datum: PlutusData::new_bytes(own_pkh.0.to_vec()),
326330
appendix: PlutusData::new_constr_plutus_data(&appendix),
327-
version,
331+
version: 1,
328332
}
329333
.into()
330334
},
@@ -377,33 +381,6 @@ mod tests {
377381
}
378382
}
379383

380-
fn test_datum_v1_aura_and_grandpa_only() -> RegisterValidatorDatum {
381-
RegisterValidatorDatum::V1 {
382-
stake_ownership: AdaBasedStaking {
383-
pub_key: StakePoolPublicKey(hex!("bfbee74ab533f40979101057f96de62e95233f2a5216eb16b54106f09fd7350d")),
384-
signature: MainchainSignature(hex!("28d1c3b7df297a60d24a3f88bc53d7029a8af35e8dd876764fd9e7a24203a3482a98263cc8ba2ddc7dc8e7faea31c2e7bad1f00e28c43bc863503e3172dc6b0a").into()),
385-
},
386-
sidechain_pub_key: SidechainPublicKey(hex!("02fe8d1eb1bcb3432b1db5833ff5f2226d9cb5e65cee430558c18ed3a3c86ce1af").into()),
387-
sidechain_signature: SidechainSignature(hex!("f8ec6c7f935d387aaa1693b3bf338cbb8f53013da8a5a234f9c488bacac01af259297e69aee0df27f553c0a1164df827d016125c16af93c99be2c19f36d2f66e").into()),
388-
registration_utxo: UtxoId {
389-
tx_hash: McTxHash(hex!("cdefe62b0a0016c2ccf8124d7dda71f6865283667850cc7b471f761d2bc1eb13")),
390-
index: UtxoIndex(1),
391-
},
392-
own_pkh: MainchainKeyHash(hex!("aabbccddeeff00aabbccddeeff00aabbccddeeff00aabbccddeeff00")),
393-
keys: CandidateKeys(vec![
394-
CandidateKey::new(AURA,
395-
hex!("d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d")
396-
.into(),
397-
),
398-
CandidateKey::new(
399-
GRANDPA,
400-
hex!("88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee")
401-
.into(),
402-
),
403-
])
404-
}
405-
}
406-
407384
fn test_datum_v1() -> RegisterValidatorDatum {
408385
RegisterValidatorDatum::V1 {
409386
stake_ownership: AdaBasedStaking {
@@ -541,20 +518,14 @@ mod tests {
541518
}
542519

543520
#[test]
544-
fn valid_v1_registration_to_plutus_data() {
545-
let plutus_data: PlutusData = test_datum_v1().into();
546-
assert_eq!(plutus_data_to_json(plutus_data), test_versioned_datum_v1_json())
547-
}
548-
549-
#[test]
550-
fn valid_v1_registration_to_plutus_data_outputs_v0_for_aura_and_grandpa_only() {
551-
let plutus_data: PlutusData = test_datum_v1_aura_and_grandpa_only().into();
521+
fn v0_registration_to_plutus_data() {
522+
let plutus_data: PlutusData = test_datum_v0().into();
552523
assert_eq!(plutus_data_to_json(plutus_data), test_versioned_datum_v0_json())
553524
}
554525

555526
#[test]
556-
fn v0_registration_to_plutus_data() {
557-
let plutus_data: PlutusData = test_datum_v0().into();
558-
assert_eq!(plutus_data_to_json(plutus_data), test_versioned_datum_v0_json())
527+
fn valid_v1_registration_to_plutus_data() {
528+
let plutus_data: PlutusData = test_datum_v1().into();
529+
assert_eq!(plutus_data_to_json(plutus_data), test_versioned_datum_v1_json())
559530
}
560531
}

0 commit comments

Comments
 (0)