Skip to content

Instantly share code, notes, and snippets.

@overcat
Last active September 20, 2023 02:36
Show Gist options
  • Save overcat/aa767668b740f79ed40091528ec7c613 to your computer and use it in GitHub Desktop.
Save overcat/aa767668b740f79ed40091528ec7c613 to your computer and use it in GitHub Desktop.
from stellar_sdk import Asset, Network, Address, utils
from stellar_sdk import xdr as stellar_xdr
def get_asset_contract_id(asset: Asset, network_passphrase: str) -> str:
"""Get the contract id of the wrapped token contract."""
network_id_hash = stellar_xdr.Hash(Network(network_passphrase).network_id())
data = stellar_xdr.HashIDPreimage(
stellar_xdr.EnvelopeType.ENVELOPE_TYPE_CONTRACT_ID,
contract_id=stellar_xdr.HashIDPreimageContractID(
network_id=network_id_hash,
contract_id_preimage=stellar_xdr.ContractIDPreimage(
stellar_xdr.ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ASSET,
from_asset=asset.to_xdr_object(),
),
)
)
contract_id = utils.sha256(data.to_xdr_bytes())
return Address.from_raw_contract(contract_id).address
if __name__ == '__main__':
network_passphrase = Network.FUTURENET_NETWORK_PASSPHRASE
asset = Asset("HELLO", "GBCXQUEPSEGIKXLYODHKMZD7YMTZ4IUY3BYPRZL4D5MSJZHHE7HG6RWR")
print(f"Contract ID: {get_asset_contract_id(asset, network_passphrase)}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment