Galxe Verification

How the Noderr Odyssey quests are checked in Galxe.

The GalxeIntegration contract is deployed on Base Sepolia, but the app does not currently call it. The campaign verifies quests offchain today.

Contract query credentials

CredentialContractFunction
Has DepositedVaultManagerhasDeposited(address, uint256)
Owns Genesis NFTGalxeIntegrationownsAnyGenesisNFT(address)
Has Submitted StrategyStrategyRegistryhasSubmittedStrategy(address)
Has VotedGovernanceManagerhasVotedOnAnyProposal(address)
Is Running NodeNodeRegistryisRegistered(address)
TrustFingerprint Score CheckTrustFingerprintgetScore(address)
ContractAddress
GalxeIntegration0xFFeF9627BDA5C966a70C839E340CF9bB4D63f08E (deployed ERC-1967 proxy, not currently called by the app)
VaultManager0xDde0abb5Fd46C6CA2CC8A85563213ca6BF66A6Df
StrategyRegistry0x3B7CF2663B5155c904E1E325B03b6498C3780e00
GovernanceManager0x7c5D1dD662caf8C1934b70237f86bAAc08AD5FB7
NodeRegistry0x1F236Ea17338937f7f4005013E346F7cC216A16E
TrustFingerprint0xD000CbF56411fC82e87d13aBaa9a8310e816F88C

These are on Base Sepolia and are part of the 15 contracts verified on Basescan. The full list is on Contract Addresses.

GalxeIntegration aggregates the checks. It also covers $NODR staking amounts, strategy approvals, social account connections (Discord/Twitter), referral counts and tutorial completion.

// Chapter 1: Genesis
function hasUsedFaucetCredential(address user) external view returns (bool);
function ownsAnyGenesisNFT(address user) external view returns (bool);
function ownsGenesisNFTTier(address user, uint8 tier) external view returns (bool);
// Chapter 2: Vaults
function hasDeposited(address user) external view returns (bool);
function hasDepositedMinAmount(address user, uint256 minAmount) external view returns (bool);
// Chapter 3: Strategists
function hasSubmittedAnyStrategy(address user) external view returns (bool);
function hasLiveStrategy(address user) external view returns (bool);
// Chapter 4: Governors
function hasVotedOnAnyProposal(address user) external view returns (bool);
function isGuardian(address user) external view returns (bool);
function isOracle(address user) external view returns (bool);
// Chapter 5: Nexus
function isRunningNode(address user) external view returns (bool);
function hasNodeOfMinTier(address user, uint8 minTier) external view returns (bool);
// Comprehensive
function getComprehensiveStats(address user) external view returns (
bool hasUsedFaucet,
uint8 highestNFTTier,
bool hasDeposited,
uint256 depositAmount,
bool hasStrategy,
bool hasLiveStrategy,
bool hasVoted,
bool isNodeOperator,
uint8 nodeTier,
uint256 trustScore
);

In the Galxe dashboard, a contract query credential uses the Base Sepolia chain and the GalxeIntegration address. It takes the verification function, an address parameter, and an expected result of true or a specific value.

API credentials

CredentialEndpointDescription
Discord Joined/api/galxe/verify/discordVerifies Discord membership
Twitter Followed/api/galxe/verify/twitterVerifies Twitter follow
Tutorial Completed/api/galxe/verify/tutorialVerifies onboarding completion
Strategy Draft/api/galxe/verify/strategy-draftVerifies draft strategy submission
Referral Count/api/galxe/verify/referralsVerifies referral milestones

The endpoints are served via tRPC from the main dApp server. Read endpoints are public and need no authentication headers. The full path for each procedure is https://dapp.noderr.xyz/api/trpc/galxe.{procedureName}.

https://dapp.noderr.xyz/api/trpc/galxe
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyDiscordJoined?input={"address":"0x..."}
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyTwitterFollowed?input={"address":"0x..."}
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyTutorialCompleted?input={"address":"0x..."}
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyReferralCount?input={"address":"0x..."}

Each returns:

{
"is_valid": true,
"address": "0x..."
}

verifyReferralCount also returns a score:

{
"is_valid": true,
"address": "0x...",
"score": 5
}

In the Galxe dashboard, an API credential uses method GET, response path $.is_valid and expected value true.

# Test Discord verification
curl "https://dapp.noderr.xyz/api/trpc/galxe.verifyDiscordJoined?input=%7B%22address%22%3A%220x...%22%7D"# Test Twitter follow verification
curl "https://dapp.noderr.xyz/api/trpc/galxe.verifyTwitterFollowed?input=%7B%22address%22%3A%220x...%22%7D"

All credentials are to be tested on Base Sepolia before mainnet launch (Q4 2027).

results matching ""
    No results matching ""