@@ -23,7 +23,7 @@ pub use v1::*;
23
23
pub mod v1 {
24
24
use crate :: errors:: asset:: { Error , IdentifierError , NamespaceError , ReferenceError } ;
25
25
26
- use codec :: { Decode , Encode , MaxEncodedLen } ;
26
+ use parity_scale_codec :: { Decode , Encode , MaxEncodedLen } ;
27
27
use scale_info:: TypeInfo ;
28
28
29
29
use core:: { format_args, str} ;
@@ -34,32 +34,32 @@ pub mod v1 {
34
34
35
35
/// The minimum length, including separator symbols, an asset ID can have
36
36
/// according to the minimum values defined by the CAIP-19 definition.
37
- pub const MINIMUM_ASSET_ID_LENGTH : usize = MINIMUM_NAMESPACE_LENGTH + 1 + MINIMUM_REFERENCE_LENGTH ;
37
+ pub const MINIMUM_ASSET_ID_LENGTH : usize = MINIMUM_ASSET_NAMESPACE_LENGTH + 1 + MINIMUM_ASSET_REFERENCE_LENGTH ;
38
38
/// The maximum length, including separator symbols, an asset ID can have
39
39
/// according to the minimum values defined by the CAIP-19 definition.
40
40
pub const MAXIMUM_ASSET_ID_LENGTH : usize =
41
- MAXIMUM_NAMESPACE_LENGTH + 1 + MAXIMUM_REFERENCE_LENGTH + 1 + MAXIMUM_IDENTIFIER_LENGTH ;
41
+ MAXIMUM_NAMESPACE_LENGTH + 1 + MAXIMUM_ASSET_REFERENCE_LENGTH + 1 + MAXIMUM_ASSET_IDENTIFIER_LENGTH ;
42
42
43
43
/// The minimum length of a valid asset ID namespace.
44
- pub const MINIMUM_NAMESPACE_LENGTH : usize = 3 ;
44
+ pub const MINIMUM_ASSET_NAMESPACE_LENGTH : usize = 3 ;
45
45
/// The maximum length of a valid asset ID namespace.
46
46
pub const MAXIMUM_NAMESPACE_LENGTH : usize = 8 ;
47
- const MAXIMUM_NAMESPACE_LENGTH_U32 : u32 = MAXIMUM_NAMESPACE_LENGTH as u32 ;
47
+ const MAXIMUM_ASSET_NAMESPACE_LENGTH_U32 : u32 = MAXIMUM_NAMESPACE_LENGTH as u32 ;
48
48
/// The minimum length of a valid asset ID reference.
49
- pub const MINIMUM_REFERENCE_LENGTH : usize = 1 ;
49
+ pub const MINIMUM_ASSET_REFERENCE_LENGTH : usize = 1 ;
50
50
/// The maximum length of a valid asset ID reference.
51
- pub const MAXIMUM_REFERENCE_LENGTH : usize = 128 ;
52
- const MAXIMUM_REFERENCE_LENGTH_U32 : u32 = MAXIMUM_REFERENCE_LENGTH as u32 ;
51
+ pub const MAXIMUM_ASSET_REFERENCE_LENGTH : usize = 128 ;
52
+ const MAXIMUM_ASSET_REFERENCE_LENGTH_U32 : u32 = MAXIMUM_ASSET_REFERENCE_LENGTH as u32 ;
53
53
/// The minimum length of a valid asset ID identifier.
54
- pub const MINIMUM_IDENTIFIER_LENGTH : usize = 1 ;
54
+ pub const MINIMUM_ASSET_IDENTIFIER_LENGTH : usize = 1 ;
55
55
/// The maximum length of a valid asset ID reference.
56
- pub const MAXIMUM_IDENTIFIER_LENGTH : usize = 78 ;
57
- const MAXIMUM_IDENTIFIER_LENGTH_U32 : u32 = MAXIMUM_IDENTIFIER_LENGTH as u32 ;
56
+ pub const MAXIMUM_ASSET_IDENTIFIER_LENGTH : usize = 78 ;
57
+ const MAXIMUM_ASSET_IDENTIFIER_LENGTH_U32 : u32 = MAXIMUM_ASSET_IDENTIFIER_LENGTH as u32 ;
58
58
59
59
/// Separator between asset namespace and asset reference.
60
- const NAMESPACE_REFERENCE_SEPARATOR : u8 = b':' ;
60
+ const ASSET_NAMESPACE_REFERENCE_SEPARATOR : u8 = b':' ;
61
61
/// Separator between asset reference and asset identifier.
62
- const REFERENCE_IDENTIFIER_SEPARATOR : u8 = b':' ;
62
+ const ASSET_REFERENCE_IDENTIFIER_SEPARATOR : u8 = b':' ;
63
63
64
64
/// Namespace for Slip44 assets.
65
65
pub const SLIP44_NAMESPACE : & [ u8 ] = b"slip44" ;
@@ -177,7 +177,7 @@ pub mod v1 {
177
177
str :: from_utf8( SLIP44_NAMESPACE )
178
178
. expect( "Conversion of Slip44 namespace to string should never fail." )
179
179
) ?;
180
- write ! ( f, "{}" , char :: from( NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
180
+ write ! ( f, "{}" , char :: from( ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
181
181
reference. fmt ( f) ?;
182
182
}
183
183
Self :: Erc20 ( reference) => {
@@ -187,7 +187,7 @@ pub mod v1 {
187
187
str :: from_utf8( ERC20_NAMESPACE )
188
188
. expect( "Conversion of Erc20 namespace to string should never fail." )
189
189
) ?;
190
- write ! ( f, "{}" , char :: from( NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
190
+ write ! ( f, "{}" , char :: from( ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
191
191
reference. fmt ( f) ?;
192
192
}
193
193
Self :: Erc721 ( EvmSmartContractNonFungibleReference ( reference, identifier) ) => {
@@ -197,10 +197,10 @@ pub mod v1 {
197
197
str :: from_utf8( ERC721_NAMESPACE )
198
198
. expect( "Conversion of Erc721 namespace to string should never fail." )
199
199
) ?;
200
- write ! ( f, "{}" , char :: from( NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
200
+ write ! ( f, "{}" , char :: from( ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
201
201
reference. fmt ( f) ?;
202
202
if let Some ( id) = identifier {
203
- write ! ( f, "{}" , char :: from( REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
203
+ write ! ( f, "{}" , char :: from( ASSET_REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
204
204
id. fmt ( f) ?;
205
205
}
206
206
}
@@ -211,10 +211,10 @@ pub mod v1 {
211
211
str :: from_utf8( ERC1155_NAMESPACE )
212
212
. expect( "Conversion of Erc1155 namespace to string should never fail." )
213
213
) ?;
214
- write ! ( f, "{}" , char :: from( NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
214
+ write ! ( f, "{}" , char :: from( ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
215
215
reference. fmt ( f) ?;
216
216
if let Some ( id) = identifier {
217
- write ! ( f, "{}" , char :: from( REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
217
+ write ! ( f, "{}" , char :: from( ASSET_REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
218
218
id. fmt ( f) ?;
219
219
}
220
220
}
@@ -224,10 +224,10 @@ pub mod v1 {
224
224
id,
225
225
} ) => {
226
226
namespace. fmt ( f) ?;
227
- write ! ( f, "{}" , char :: from( NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
227
+ write ! ( f, "{}" , char :: from( ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ) ?;
228
228
reference. fmt ( f) ?;
229
229
if let Some ( identifier) = id {
230
- write ! ( f, "{}" , char :: from( REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
230
+ write ! ( f, "{}" , char :: from( ASSET_REFERENCE_IDENTIFIER_SEPARATOR ) ) ?;
231
231
identifier. fmt ( f) ?;
232
232
}
233
233
}
@@ -238,7 +238,7 @@ pub mod v1 {
238
238
239
239
const fn check_namespace_length_bounds ( namespace : & [ u8 ] ) -> Result < ( ) , NamespaceError > {
240
240
let namespace_length = namespace. len ( ) ;
241
- if namespace_length < MINIMUM_NAMESPACE_LENGTH {
241
+ if namespace_length < MINIMUM_ASSET_NAMESPACE_LENGTH {
242
242
Err ( NamespaceError :: TooShort )
243
243
} else if namespace_length > MAXIMUM_NAMESPACE_LENGTH {
244
244
Err ( NamespaceError :: TooLong )
@@ -249,9 +249,9 @@ pub mod v1 {
249
249
250
250
const fn check_reference_length_bounds ( reference : & [ u8 ] ) -> Result < ( ) , ReferenceError > {
251
251
let reference_length = reference. len ( ) ;
252
- if reference_length < MINIMUM_REFERENCE_LENGTH {
252
+ if reference_length < MINIMUM_ASSET_REFERENCE_LENGTH {
253
253
Err ( ReferenceError :: TooShort )
254
- } else if reference_length > MAXIMUM_REFERENCE_LENGTH {
254
+ } else if reference_length > MAXIMUM_ASSET_REFERENCE_LENGTH {
255
255
Err ( ReferenceError :: TooLong )
256
256
} else {
257
257
Ok ( ( ) )
@@ -260,9 +260,9 @@ pub mod v1 {
260
260
261
261
const fn check_identifier_length_bounds ( identifier : & [ u8 ] ) -> Result < ( ) , IdentifierError > {
262
262
let identifier_length = identifier. len ( ) ;
263
- if identifier_length < MINIMUM_IDENTIFIER_LENGTH {
263
+ if identifier_length < MINIMUM_ASSET_IDENTIFIER_LENGTH {
264
264
Err ( IdentifierError :: TooShort )
265
- } else if identifier_length > MAXIMUM_IDENTIFIER_LENGTH {
265
+ } else if identifier_length > MAXIMUM_ASSET_IDENTIFIER_LENGTH {
266
266
Err ( IdentifierError :: TooLong )
267
267
} else {
268
268
Ok ( ( ) )
@@ -272,12 +272,12 @@ pub mod v1 {
272
272
/// Split the given input into its components, i.e., namespace, reference,
273
273
/// and identifier, if the proper separators are found.
274
274
fn split_components ( input : & [ u8 ] ) -> AssetComponents {
275
- let mut split = input. splitn ( 2 , |c| * c == NAMESPACE_REFERENCE_SEPARATOR ) ;
275
+ let mut split = input. splitn ( 2 , |c| * c == ASSET_NAMESPACE_REFERENCE_SEPARATOR ) ;
276
276
let ( namespace, reference) = ( split. next ( ) , split. next ( ) ) ;
277
277
278
278
// Split the remaining reference to extract the identifier, if present
279
279
let ( reference, identifier) = if let Some ( r) = reference {
280
- let mut split = r. splitn ( 2 , |c| * c == REFERENCE_IDENTIFIER_SEPARATOR ) ;
280
+ let mut split = r. splitn ( 2 , |c| * c == ASSET_REFERENCE_IDENTIFIER_SEPARATOR ) ;
281
281
// Split the reference further, if present
282
282
( split. next ( ) , split. next ( ) )
283
283
} else {
@@ -442,7 +442,7 @@ pub mod v1 {
442
442
/// identifier without applying any special parsing/decoding logic.
443
443
#[ derive( Clone , Eq , PartialEq , Ord , PartialOrd , RuntimeDebug , Encode , Decode , MaxEncodedLen , TypeInfo ) ]
444
444
pub struct EvmSmartContractNonFungibleIdentifier (
445
- pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_IDENTIFIER_LENGTH_U32 > > ,
445
+ pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_ASSET_IDENTIFIER_LENGTH_U32 > > ,
446
446
) ;
447
447
448
448
impl EvmSmartContractNonFungibleIdentifier {
@@ -456,7 +456,7 @@ pub mod v1 {
456
456
check_identifier_length_bounds ( input) ?;
457
457
458
458
input. iter ( ) . try_for_each ( |c| {
459
- if !( b'0' ..= b'9' ) . contains ( c ) {
459
+ if !c . is_ascii_digit ( ) {
460
460
log:: trace!( "Provided input has some invalid values as expected by a smart contract-based asset identifier." ) ;
461
461
Err ( IdentifierError :: InvalidFormat )
462
462
} else {
@@ -542,7 +542,7 @@ pub mod v1 {
542
542
/// It stores the provided UTF8-encoded namespace without trying to apply
543
543
/// any parsing/decoding logic.
544
544
#[ derive( Clone , Eq , PartialEq , Ord , PartialOrd , RuntimeDebug , Encode , Decode , MaxEncodedLen , TypeInfo ) ]
545
- pub struct GenericAssetNamespace ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_NAMESPACE_LENGTH_U32 > > ) ;
545
+ pub struct GenericAssetNamespace ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_ASSET_NAMESPACE_LENGTH_U32 > > ) ;
546
546
547
547
impl GenericAssetNamespace {
548
548
/// Parse a generic UTF8-encoded asset namespace, failing if the input
@@ -591,7 +591,7 @@ pub mod v1 {
591
591
592
592
/// A generic asset reference as defined in the [CAIP-19 spec](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-19.md).
593
593
#[ derive( Clone , Eq , PartialEq , Ord , PartialOrd , RuntimeDebug , Encode , Decode , MaxEncodedLen , TypeInfo ) ]
594
- pub struct GenericAssetReference ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_REFERENCE_LENGTH_U32 > > ) ;
594
+ pub struct GenericAssetReference ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_ASSET_REFERENCE_LENGTH_U32 > > ) ;
595
595
596
596
impl GenericAssetReference {
597
597
/// Parse a generic UTF8-encoded asset reference, failing if the input
@@ -640,7 +640,7 @@ pub mod v1 {
640
640
641
641
/// A generic asset identifier as defined in the [CAIP-19 spec](https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-19.md).
642
642
#[ derive( Clone , Eq , PartialEq , Ord , PartialOrd , RuntimeDebug , Encode , Decode , MaxEncodedLen , TypeInfo ) ]
643
- pub struct GenericAssetIdentifier ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_IDENTIFIER_LENGTH_U32 > > ) ;
643
+ pub struct GenericAssetIdentifier ( pub ( crate ) BoundedVec < u8 , ConstU32 < MAXIMUM_ASSET_IDENTIFIER_LENGTH_U32 > > ) ;
644
644
645
645
impl GenericAssetIdentifier {
646
646
/// Parse a generic UTF8-encoded asset identifier, failing if the input
0 commit comments