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) |
| Trust 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 | 0x... (TBD after deployment) |
| VaultManager | 0x... |
| StrategyRegistry | 0x... |
| GovernanceManager | 0x... |
| NodeRegistry | 0x... |
| TrustFingerprint | 0x... |
API Endpoints
Base URL
https://api.noderr.xyz/galxe
Authentication
All API endpoints require a valid Galxe signature for verification.
Endpoints
Verify Discord Membership
GET /verify/discord?address=0x...
Response:
{
"is_eligible": true,
"discord_id": "123456789",
"discord_username": "user#1234"
}
Verify Twitter Follow
GET /verify/twitter?address=0x...
Response:
{
"is_eligible": true,
"twitter_id": "123456789",
"twitter_username": "username"
}
Verify Tutorial Completion
GET /verify/tutorial?address=0x...
Response:
{
"is_eligible": true,
"completed_at": "2026-01-15T12:00:00Z"
}
Verify Referral Count
GET /verify/referrals?address=0x...&min_count=3
Response:
{
"is_eligible": true,
"referral_count": 5
}
Bulk Verification
POST /verify/bulk
Content-Type: application/json
{
"addresses": ["0x...", "0x...", "0x..."],
"credential_type": "has_deposited"
}
Response:
{
"results": {
"0x...": true,
"0x...": false,
"0x...": true
}
}
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://api.noderr.xyz/galxe/verify/discord?address=0x..."# Test bulk verification
curl -X POST "https://api.noderr.xyz/galxe/verify/bulk" \
-H "Content-Type: application/json" \
-d '{"addresses": ["0x..."], "credential_type": "has_deposited"}'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