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 (Testnet)
| Contract | Address |
|---|---|
| GalxeIntegration | 0xFFeF9627BDA5C966a70C839E340CF9bB4D63f08E |
| VaultManager | 0xDde0abb5Fd46C6CA2CC8A85563213ca6BF66A6Df |
| StrategyRegistry | 0x3B7CF2663B5155c904E1E325B03b6498C3780e00 |
| GovernanceManager | 0x83f8254C25aEa57217CD1A6Aa03DFa06d6816156 |
| NodeRegistry | 0x1F236Ea17338937f7f4005013E346F7cC216A16E |
| TrustFingerprint | 0xFf3BFD4eDC994d54B2adD3b315281590a50a9d95 |
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 testnet chain
- 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_eligible - 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 30% for advanced tasks
- Wallet Age - First transaction at least 7 days ago
- Transaction History - Minimum 5 transactions
Testing
Testnet Verification
Before mainnet launch, test all credentials on testnet:
- Deploy contracts to testnet
- Configure Galxe credentials with 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: [email protected]