Skip to content

Update zenlink currency conversion for Amplitude and Pendulum #201

Description

@ebma

We need to update the 'zenlink_id_to_currency_id' function to something that can also derive our Spacewalk currencies (as we also want to use Spacewalk/Stellar assets on Zenlink).

Now when we define the conversion from a zenlink to a local currency ID, right now we always assume the provided asset_index to be the XCM index. But we somehow have to link to our Stellar assets in this conversion function because we have to be able to derive it from the ZenlinkAssetId.
Since the asset_index is of type u64 but the XCM index we use in our CurrencyId can only be u8 I'd say it's safe to start assigning Stellar assets with 256 (because u8 only ranges from 0-255)

match asset_id.asset_type {
		NATIVE => Ok(CurrencyId::Native),
		LOCAL => {
			let foreign_id: u8 = asset_id.asset_index.try_into().map_err(|_| {
				log::error!("{} has no Foreign Currency Id match.", asset_id.asset_index);
				()
			})?;

            if foreign_id <= u8::MAX {
			    Ok(XCM(foreign_id))
            } else {
               // TODO add some hard-coded lookup
               match foreign_id {
                    256 => Stellar::StellarNative,
                    257 => yadda yadda ....
                    _ => None
            }
		},
		other => {
			log::error!("Unsupported asset type index:{other}");
			Err(())
		},
	}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions