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
| Credential | Contract | Function |
|---|---|---|
| Has Deposited | VaultManager | hasDeposited(address, uint256) |
| Owns Genesis NFT | GalxeIntegration | ownsAnyGenesisNFT(address) |
| Has Submitted Strategy | StrategyRegistry | hasSubmittedStrategy(address) |
| Has Voted | GovernanceManager | hasVotedOnAnyProposal(address) |
| Is Running Node | NodeRegistry | isRegistered(address) |
| TrustFingerprint Score Check | TrustFingerprint | getScore(address) |
| Contract | Address |
|---|---|
| GalxeIntegration | 0xFFeF9627BDA5C966a70C839E340CF9bB4D63f08E (deployed ERC-1967 proxy, not currently called by the app) |
| VaultManager | 0xDde0abb5Fd46C6CA2CC8A85563213ca6BF66A6Df |
| StrategyRegistry | 0x3B7CF2663B5155c904E1E325B03b6498C3780e00 |
| GovernanceManager | 0x7c5D1dD662caf8C1934b70237f86bAAc08AD5FB7 |
| NodeRegistry | 0x1F236Ea17338937f7f4005013E346F7cC216A16E |
| TrustFingerprint | 0xD000CbF56411fC82e87d13aBaa9a8310e816F88C |
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
| Credential | Endpoint | Description |
|---|---|---|
| Discord Joined | /api/galxe/verify/discord | Verifies Discord membership |
| Twitter Followed | /api/galxe/verify/twitter | Verifies Twitter follow |
| Tutorial Completed | /api/galxe/verify/tutorial | Verifies onboarding completion |
| Strategy Draft | /api/galxe/verify/strategy-draft | Verifies draft strategy submission |
| Referral Count | /api/galxe/verify/referrals | Verifies 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).