diff --git a/primitives/core/src/assertion/web3_nft.rs b/primitives/core/src/assertion/web3_nft.rs index 495cf10e7a..606d88a1cd 100644 --- a/primitives/core/src/assertion/web3_nft.rs +++ b/primitives/core/src/assertion/web3_nft.rs @@ -28,12 +28,14 @@ pub enum Web3NftType { Club3Sbt, #[codec(index = 2)] MFan, + #[codec(index = 3)] + Mvp, } impl Web3NftType { pub fn get_supported_networks(&self) -> Vec { match self { - Self::WeirdoGhostGang => vec![Web3Network::Ethereum], + Self::WeirdoGhostGang | Self::Mvp => vec![Web3Network::Ethereum], Self::Club3Sbt => vec![Web3Network::Bsc, Web3Network::Polygon, Web3Network::Arbitrum], Self::MFan => vec![Web3Network::Polygon], } diff --git a/tee-worker/cli/lit_test_dr_vc.sh b/tee-worker/cli/lit_test_dr_vc.sh index c64039f6ea..1d8fd4d3f0 100755 --- a/tee-worker/cli/lit_test_dr_vc.sh +++ b/tee-worker/cli/lit_test_dr_vc.sh @@ -196,6 +196,7 @@ assertion_vec=( "nft-holder weirdo-ghost-gang" "nft-holder club3-sbt" "nft-holder mfan" + "nft-holder mvp" ) assertions=() diff --git a/tee-worker/cli/src/trusted_base_cli/commands/litentry/request_vc.rs b/tee-worker/cli/src/trusted_base_cli/commands/litentry/request_vc.rs index 75f307871a..5e4c6f46ce 100644 --- a/tee-worker/cli/src/trusted_base_cli/commands/litentry/request_vc.rs +++ b/tee-worker/cli/src/trusted_base_cli/commands/litentry/request_vc.rs @@ -293,6 +293,7 @@ pub enum NftHolderCommand { WeirdoGhostGang, Club3Sbt, MFan, + Mvp, } // positional args (to vec) + required arg + optional arg is a nightmare combination for clap parser, @@ -659,6 +660,7 @@ impl Command { NftHolderCommand::WeirdoGhostGang => NftHolder(Web3NftType::WeirdoGhostGang), NftHolderCommand::Club3Sbt => NftHolder(Web3NftType::Club3Sbt), NftHolderCommand::MFan => NftHolder(Web3NftType::MFan), + NftHolderCommand::Mvp => NftHolder(Web3NftType::Mvp), }), Command::Dynamic(arg) => { let decoded_id = hex::decode(&arg.smart_contract_id.clone()).unwrap(); diff --git a/tee-worker/client-api/parachain-api/prepare-build/interfaces/vc/definitions.ts b/tee-worker/client-api/parachain-api/prepare-build/interfaces/vc/definitions.ts index f8f6a5ae91..2322dfb0b8 100644 --- a/tee-worker/client-api/parachain-api/prepare-build/interfaces/vc/definitions.ts +++ b/tee-worker/client-api/parachain-api/prepare-build/interfaces/vc/definitions.ts @@ -246,7 +246,7 @@ export default { }, // Web3NftType Web3NftType: { - _enum: ["WeirdoGhostGang", "Club3Sbt", "MFan"], + _enum: ["WeirdoGhostGang", "Club3Sbt", "MFan", "Mvp"], }, }, }; diff --git a/tee-worker/litentry/core/common/src/web3_nft/mod.rs b/tee-worker/litentry/core/common/src/web3_nft/mod.rs index 79c235fe4c..7c30ff57ee 100644 --- a/tee-worker/litentry/core/common/src/web3_nft/mod.rs +++ b/tee-worker/litentry/core/common/src/web3_nft/mod.rs @@ -34,6 +34,7 @@ impl NftName for Web3NftType { Self::WeirdoGhostGang => "Weirdo Ghost Gang", Self::Club3Sbt => "Club3 SBT", Self::MFan => "MFAN", + Self::Mvp => "MEME VIP PASS", } } } @@ -58,6 +59,9 @@ impl NftAddress for Web3NftType { // MFan (Self::MFan, Web3Network::Polygon) => Some("0x9aBc7C604C27622f9CD56bd1628F6321c32bBBf6"), + // Mvp + (Self::Mvp, Web3Network::Ethereum) => + Some("0xAA813F8691B10Dc62bd616ae90b05A52f0C40C1D"), _ => None, } } diff --git a/tee-worker/litentry/core/credentials/src/credential_schema.rs b/tee-worker/litentry/core/credentials/src/credential_schema.rs index 7cf55aebc2..9ca9427483 100644 --- a/tee-worker/litentry/core/credentials/src/credential_schema.rs +++ b/tee-worker/litentry/core/credentials/src/credential_schema.rs @@ -109,7 +109,7 @@ pub fn get_schema_url(assertion: &Assertion) -> Option { Assertion::PlatformUser(_) => Some(format!("{BASE_URL}/24-platform-user/1-1-1.json")), - Assertion::NftHolder(_) => Some(format!("{BASE_URL}/26-nft-holder/1-1-1.json")), + Assertion::NftHolder(_) => Some(format!("{BASE_URL}/26-nft-holder/1-1-2.json")), Assertion::TokenHoldingAmount(_) => Some(format!("{BASE_URL}/25-token-holding-amount/1-1-3.json")), diff --git a/tee-worker/litentry/core/service/src/web3_nft/nft_holder/mod.rs b/tee-worker/litentry/core/service/src/web3_nft/nft_holder/mod.rs index 3ecba5e2ac..5bef38afaa 100644 --- a/tee-worker/litentry/core/service/src/web3_nft/nft_holder/mod.rs +++ b/tee-worker/litentry/core/service/src/web3_nft/nft_holder/mod.rs @@ -31,10 +31,9 @@ pub fn has_nft( addresses: Vec<(Web3Network, String)>, data_provider_config: &DataProviderConfig, ) -> Result { - match nft_type { - Web3NftType::WeirdoGhostGang => - common::has_nft_721(addresses, nft_type, data_provider_config), - Web3NftType::Club3Sbt => common::has_nft_1155(addresses, nft_type, data_provider_config), - Web3NftType::MFan => common::has_nft_721(addresses, nft_type, data_provider_config), + if nft_type == Web3NftType::Club3Sbt { + common::has_nft_1155(addresses, nft_type, data_provider_config) + } else { + common::has_nft_721(addresses, nft_type, data_provider_config) } } diff --git a/tee-worker/ts-tests/integration-tests/common/utils/vc-helper.ts b/tee-worker/ts-tests/integration-tests/common/utils/vc-helper.ts index 0be0607630..02ecb577d6 100644 --- a/tee-worker/ts-tests/integration-tests/common/utils/vc-helper.ts +++ b/tee-worker/ts-tests/integration-tests/common/utils/vc-helper.ts @@ -222,6 +222,12 @@ export const mockAssertions = [ NftHolder: 'MFan', }, }, + { + description: 'You are a holder of a certain kind of NFT', + assertion: { + NftHolder: 'Mvp', + }, + }, // TokenHoldingAmount {