Galxe Integration
This document provides technical details on how Noderr integrates with Galxe for The Noderr Odyssey campaign.
Overview
Galxe is a Web3 credential and campaign platform that enables projects to run quests, verify on-chain actions, and distribute rewards. Noderr uses Galxe's infrastructure for:
- Task Verification - Verifying user actions both on-chain and off-chain
- Credential Issuance - Issuing OATs (On-chain Achievement Tokens)
- Leaderboard Management - Tracking and displaying participant rankings
- Airdrop Distribution - Using Galxe's Earndrop feature for token distribution
Credential Types
Contract Query Credentials
These credentials verify on-chain actions by querying Noderr smart contracts.
| 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) |
API Credentials
These credentials verify off-chain actions via Noderr's API.
| 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 |
Smart Contract Functions
GalxeIntegration.sol
The GalxeIntegration contract aggregates verification functions across all Noderr contracts:
// 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
);
Contract Addresses (Base Sepolia testnet)
| Contract | Address |
|---|---|
| GalxeIntegration | 0xFFeF9627BDA5C966a70C839E340CF9bB4D63f08E |
| VaultManager | 0xDde0abb5Fd46C6CA2CC8A85563213ca6BF66A6Df |
| StrategyRegistry | 0x3B7CF2663B5155c904E1E325B03b6498C3780e00 |
| GovernanceManager | 0x7c5D1dD662caf8C1934b70237f86bAAc08AD5FB7 |
| NodeRegistry | 0x1F236Ea17338937f7f4005013E346F7cC216A16E |
| TrustFingerprint | 0xD000CbF56411fC82e87d13aBaa9a8310e816F88C |
These contracts are deployed on the Base Sepolia testnet (Base L2) and are part of the 15 contracts verified on Basescan. The addresses above are the subset relevant to Galxe credential verification.
API Endpoints
Base URL
https://dapp.noderr.xyz/api/trpc/galxe
Galxe credential endpoints are served via tRPC from the main dApp server. The full path for each procedure is https://dapp.noderr.xyz/api/trpc/galxe.{procedureName}.
Authentication
Read endpoints are public. No authentication headers are required for Galxe credential verification calls.
Endpoints
Verify Discord Membership
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyDiscordJoined?input={"address":"0x..."}
Response:
{
"is_valid": true,
"address": "0x..."
}
Verify Twitter Follow
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyTwitterFollowed?input={"address":"0x..."}
Response:
{
"is_valid": true,
"address": "0x..."
}
Verify Tutorial Completion
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyTutorialCompleted?input={"address":"0x..."}
Response:
{
"is_valid": true,
"address": "0x..."
}
Verify Referral Count
GET https://dapp.noderr.xyz/api/trpc/galxe.verifyReferralCount?input={"address":"0x..."}
Response:
{
"is_valid": true,
"address": "0x...",
"score": 5
}
Setting Up Galxe Credentials
Contract Query Credential Setup
- Go to Galxe Dashboard → Credentials → Create Credential
- Select "Contract Query" type
- Configure:
- Chain: Select Base Sepolia testnet
- Contract Address: Enter GalxeIntegration address
- Function: Select the verification function
- Parameters: Configure address parameter
- Expected Result: Set to
trueor specific value
API Credential Setup
- Go to Galxe Dashboard → Credentials → Create Credential
- Select "API" type
- Configure:
- Endpoint URL: Enter Noderr API endpoint
- Method: GET
- Headers: Add any required headers
- Response Path:
$.is_valid - Expected Value:
true
Sybil Prevention
Galxe credentials include built-in sybil prevention:
- Galxe Web3 Score - Minimum score of 20 required
- Twitter Account Age - Minimum 30 days
- Twitter Followers - Minimum 10 followers
- Unique Device Fingerprint - One account per device
Additional Noderr-specific checks:
- TrustFingerprint Score - Minimum 0.30 (on the 0-1 trust scale) for advanced tasks
- Wallet Age - First transaction at least 7 days ago
- Transaction History - Minimum 5 transactions
Testing
Testnet Verification
Before mainnet launch (Q3 2027), test all credentials on the Base Sepolia testnet:
- Deploy contracts to the Base Sepolia testnet
- Configure Galxe credentials with Base Sepolia testnet addresses
- Complete all tasks with test wallets
- Verify credentials trigger correctly
- Test bulk verification endpoints
API Testing
# 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"Troubleshooting
Credential Not Verifying
- Check contract address is correct
- Verify function signature matches
- Ensure user has completed the action
- Check chain ID is correct
API Errors
- Verify endpoint URL is accessible
- Check authentication headers
- Review response format matches expected schema
- Check rate limits
Support
For Galxe integration issues:
- Galxe Documentation: docs.galxe.com
- Noderr Discord: discord.gg/noderr
- Email: dev@noderr.xyz