@@ -16,6 +16,7 @@ use hex::decode;
1616use regex:: Regex ;
1717use serde:: { Deserialize , Serialize } ;
1818use serde_with:: { hex:: Hex , serde_as} ;
19+ use std:: collections:: BTreeMap ;
1920use std:: {
2021 cmp:: Ordering ,
2122 collections:: { HashMap , HashSet } ,
@@ -115,7 +116,7 @@ impl TryFrom<u8> for Era {
115116
116117impl Display for Era {
117118 fn fmt ( & self , f : & mut Formatter < ' _ > ) -> std:: fmt:: Result {
118- write ! ( f, "{:?}" , self )
119+ write ! ( f, "{self :?}" )
119120 }
120121}
121122
@@ -656,6 +657,9 @@ impl TxOutRef {
656657 }
657658}
658659
660+ /// Slot
661+ pub type Slot = u64 ;
662+
659663/// Amount of Ada, in Lovelace
660664pub type Lovelace = u64 ;
661665pub type LovelaceDelta = i64 ;
@@ -735,14 +739,10 @@ impl Credential {
735739 let key_hash = decode ( hex_str. to_owned ( ) . into_bytes ( ) ) ?;
736740 if key_hash. len ( ) != 28 {
737741 Err ( anyhow ! (
738- "Invalid hash length for {:?}, expected 28 bytes" ,
739- hex_str
742+ "Invalid hash length for {hex_str:?}, expected 28 bytes"
740743 ) )
741744 } else {
742- key_hash
743- . as_slice ( )
744- . try_into ( )
745- . map_err ( |e| anyhow ! ( "Failed to convert to KeyHash {}" , e) )
745+ key_hash. as_slice ( ) . try_into ( ) . map_err ( |e| anyhow ! ( "Failed to convert to KeyHash {e}" ) )
746746 }
747747 }
748748
@@ -753,16 +753,15 @@ impl Credential {
753753 Ok ( Credential :: AddrKeyHash ( Self :: hex_string_to_hash ( hash) ?) )
754754 } else {
755755 Err ( anyhow ! (
756- "Incorrect credential {}, expected scriptHash- or keyHash- prefix" ,
757- credential
756+ "Incorrect credential {credential}, expected scriptHash- or keyHash- prefix"
758757 ) )
759758 }
760759 }
761760
762761 pub fn to_json_string ( & self ) -> String {
763762 match self {
764- Self :: ScriptHash ( hash) => format ! ( "scriptHash-{}" , hash ) ,
765- Self :: AddrKeyHash ( hash) => format ! ( "keyHash-{}" , hash ) ,
763+ Self :: ScriptHash ( hash) => format ! ( "scriptHash-{hash}" ) ,
764+ Self :: AddrKeyHash ( hash) => format ! ( "keyHash-{hash}" ) ,
766765 }
767766 }
768767
@@ -788,8 +787,7 @@ impl Credential {
788787 "drep" => Ok ( Credential :: AddrKeyHash ( hash) ) ,
789788 "drep_script" => Ok ( Credential :: ScriptHash ( hash) ) ,
790789 _ => Err ( anyhow ! (
791- "Invalid HRP for DRep Bech32, expected 'drep' or 'drep_script', got '{}'" ,
792- hrp
790+ "Invalid HRP for DRep Bech32, expected 'drep' or 'drep_script', got '{hrp}'"
793791 ) ) ,
794792 }
795793 }
@@ -1296,7 +1294,7 @@ impl GovActionId {
12961294 let ( hrp, data) = bech32:: decode ( bech32_str) ?;
12971295
12981296 if hrp != Hrp :: parse ( "gov_action" ) ? {
1299- return Err ( anyhow ! ( "Invalid HRP, expected 'gov_action', got: {}" , hrp ) ) ;
1297+ return Err ( anyhow ! ( "Invalid HRP, expected 'gov_action', got: {hrp}" ) ) ;
13001298 }
13011299
13021300 if data. len ( ) < 33 {
@@ -1328,7 +1326,7 @@ impl GovActionId {
13281326impl Display for GovActionId {
13291327 fn fmt ( & self , f : & mut Formatter < ' _ > ) -> std:: fmt:: Result {
13301328 match self . to_bech32 ( ) {
1331- Ok ( s) => write ! ( f, "{}" , s ) ,
1329+ Ok ( s) => write ! ( f, "{s}" ) ,
13321330 Err ( e) => {
13331331 tracing:: error!( "GovActionId to_bech32 failed: {:?}" , e) ;
13341332 write ! ( f, "<invalid-govactionid>" )
@@ -1426,7 +1424,36 @@ pub struct GenesisDelegate {
14261424 #[ serde_as( as = "Hex" ) ]
14271425 pub delegate : Hash < 28 > ,
14281426 #[ serde_as( as = "Hex" ) ]
1429- pub vrf : Vec < u8 > ,
1427+ pub vrf : VrfKeyHash ,
1428+ }
1429+
1430+ #[ derive( Debug , Clone , serde:: Serialize , serde:: Deserialize ) ]
1431+ pub struct GenesisDelegates ( pub BTreeMap < GenesisKeyhash , GenesisDelegate > ) ;
1432+
1433+ impl TryFrom < Vec < ( & str , ( & str , & str ) ) > > for GenesisDelegates {
1434+ type Error = anyhow:: Error ;
1435+ fn try_from ( entries : Vec < ( & str , ( & str , & str ) ) > ) -> Result < Self , Self :: Error > {
1436+ Ok ( GenesisDelegates (
1437+ entries
1438+ . into_iter ( )
1439+ . map ( |( genesis_key_str, ( delegate_str, vrf_str) ) | {
1440+ let genesis_key = GenesisKeyhash :: from_str ( genesis_key_str)
1441+ . map_err ( |e| anyhow:: anyhow!( "Invalid genesis key hash: {e}" ) ) ?;
1442+ let delegate = Hash :: < 28 > :: from_str ( delegate_str)
1443+ . map_err ( |e| anyhow:: anyhow!( "Invalid genesis delegate: {e}" ) ) ?;
1444+ let vrf = VrfKeyHash :: from_str ( vrf_str)
1445+ . map_err ( |e| anyhow:: anyhow!( "Invalid genesis VRF: {e}" ) ) ?;
1446+ Ok ( ( genesis_key, GenesisDelegate { delegate, vrf } ) )
1447+ } )
1448+ . collect :: < Result < _ , Self :: Error > > ( ) ?,
1449+ ) )
1450+ }
1451+ }
1452+
1453+ impl AsRef < BTreeMap < GenesisKeyhash , GenesisDelegate > > for GenesisDelegates {
1454+ fn as_ref ( & self ) -> & BTreeMap < GenesisKeyhash , GenesisDelegate > {
1455+ & self . 0
1456+ }
14301457}
14311458
14321459#[ derive( Debug , Clone , PartialEq , serde:: Serialize , serde:: Deserialize ) ]
@@ -1767,8 +1794,8 @@ impl Voter {
17671794impl Display for Voter {
17681795 fn fmt ( & self , f : & mut Formatter < ' _ > ) -> fmt:: Result {
17691796 match self . to_bech32 ( ) {
1770- Ok ( addr) => write ! ( f, "{}" , addr ) ,
1771- Err ( e) => write ! ( f, "<invalid voter: {}>" , e ) ,
1797+ Ok ( addr) => write ! ( f, "{addr}" ) ,
1798+ Err ( e) => write ! ( f, "<invalid voter: {e }>" ) ,
17721799 }
17731800 }
17741801}
0 commit comments