3
3
from nacl .encoding import RawEncoder
4
4
from nacl .hash import blake2b
5
5
from pycardano .crypto .bech32 import encode
6
+ from pycardano .hash import ScriptHash
7
+ from pycardano .transaction import AssetName
6
8
7
9
8
- def encode_asset (policy_id : Union [bytes , str ], asset_name : Union [bytes , str ]) -> str :
10
+ def encode_asset (
11
+ policy_id : Union [ScriptHash , bytes , str ], asset_name : Union [AssetName , bytes , str ]
12
+ ) -> str :
9
13
"""Implementation of CIP14 asset fingerprinting
10
14
11
15
This function encodes the asset policy and name into an asset fingerprint, which is
@@ -15,14 +19,18 @@ def encode_asset(policy_id: Union[bytes, str], asset_name: Union[bytes, str]) ->
15
19
https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0014/
16
20
17
21
Args:
18
- policy_id: The asset policy as `bytes` or a hex `str`
19
- asset_name: The asset name as `bytes` or a hex `str`
22
+ policy_id: The asset policy as `ScriptHash`, ` bytes`, or a hex `str`
23
+ asset_name: The asset name as `AssetName`, ` bytes`, or a hex `str`
20
24
"""
21
25
if isinstance (policy_id , str ):
22
26
policy_id = bytes .fromhex (policy_id )
27
+ elif isinstance (policy_id , ScriptHash ):
28
+ policy_id = policy_id .payload
23
29
24
30
if isinstance (asset_name , str ):
25
31
asset_name = bytes .fromhex (asset_name )
32
+ elif isinstance (asset_name , AssetName ):
33
+ asset_name = asset_name .payload
26
34
27
35
asset_hash = blake2b (
28
36
policy_id + asset_name ,
0 commit comments