33from nacl .encoding import RawEncoder
44from nacl .hash import blake2b
55from pycardano .crypto .bech32 import encode
6+ from pycardano .hash import ScriptHash
7+ from pycardano .transaction import AssetName
68
79
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 :
913 """Implementation of CIP14 asset fingerprinting
1014
1115 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]) ->
1519 https://developers.cardano.org/docs/governance/cardano-improvement-proposals/cip-0014/
1620
1721 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`
2024 """
2125 if isinstance (policy_id , str ):
2226 policy_id = bytes .fromhex (policy_id )
27+ elif isinstance (policy_id , ScriptHash ):
28+ policy_id = policy_id .payload
2329
2430 if isinstance (asset_name , str ):
2531 asset_name = bytes .fromhex (asset_name )
32+ elif isinstance (asset_name , AssetName ):
33+ asset_name = asset_name .payload
2634
2735 asset_hash = blake2b (
2836 policy_id + asset_name ,
0 commit comments