All Collections
Credentials & Rewards
Credentials 101 🍎
Credential Setup ⚙️
Step-By-Step: Creating Multi-Dimensional Credentials on Galxe
Step-By-Step: Creating Multi-Dimensional Credentials on Galxe

Learn how to use multiple dimensions to create a more comprehensive credential by specifying more than one way of evaluating an address.

Zeno avatar
Written by Zeno
Updated over a week ago

What is a Multi-Dimensional Credential?

With Multi-Dimensional credentials, you can stack data sets to create a structure.

Using multiple dimensions allows you to create a more comprehensive credential by specifying more than one dimension. Allowing a request to check many credentials that an address may qualify for.

You can utilize data structures formed by Multi-Dimensional credentials instead of creating individual 'checks' with credentials that span a single dimension.

Assessing an address using a Multi-Dimensional credential instead of creating several credentials is much more efficient for projects that want to challenge and engage users with many tasks.


Article Sections


How do I create Multi-Dimensional Credentials on Galxe?

Navigate to your Galxe Space, create a new campaign, and under the credential section, add 'Import Your Own Data' as the credential type.

After selecting REST as a credential source, you can configure multi-dimensional credentials from the campaign creation screen.

OR

Click here to curate credentials easily; the same as above, select 'Import Your Own Data' and REST as the credential source to start configuring a multi-dimensional credential.

Continue reading this article to learn how to configure Multi-Dimensional credentials through a REST API.

Using Multi-Dimensional Credentials in Your Campaigns

Utilizing the 'Import Your Own Data' option allows you to customize your credentials on Galxe.

To configure Multi-Dimensional credentials, select REST API as the credential source.

When you're in the right spot, you should see a screen like this 👇

⭐️ Tip: You can reference the GraphQL developer documentation to learn more about the language using APIs and queries.

For credentials that utilize a subgraph, you can conveniently update qualified addresses from The Graph's website!

Configuring Multi-Dimensional Credentials

It's straightforward to configure any credential on Galxe.

Steps to Configure a Multi-Dimensional Credential:

ℹ️ Note: The results from an expression for multi-dimensional credentials differ from "single" dimension credentials on Galxe.

However, it's the same for errors encountered during any request through an API or Subgraph on Galxe— if you get an incorrect result from the expression, there is an error in the query or endpoint.

A multi-dimensional query is large, so there is more room for error.

Credential Source: REST

The credential source is where data gets extracted or ‘served’ from.

Choose ‘REST’ as the credential source to utilize multi-dimensional credentials.

A REST-type credential allows Galxe to pull data from your RESTful HTTP backend (or any HTTP RESTful endpoint you are legally entitled to use).

We support the GET and POST methods:

  • GET: Endpoint, Headers and Expression.

  • POST: Endpoint, Headers, Post Body and Expression

You can either retrieve data (Get) or send data (Post) to a server.

ℹ️ Note: A single wallet address gets sent as an 'input,' and the 'output' is either true (1) or false (0), indicating whether a wallet address is eligible.

Select Type (Multi-Dimensional)

The dimension type you select determines how user IDs and details get stored.

Example: If five users have a credential for having a USDT Balance on Ethereum, the credential data is a form with two columns and five rows.

User ID

USDT Balance (Ethereum Mainnet)

1

Balance: 0.1 = Boolean: Yes

2

Balance: 5.00 = Boolean: Yes

3

Balance: 12.12 = Boolean: Yes

4

Balance: 20.00 = Boolean: Yes

5

Balance: 101.11 = Boolean: Yes

ℹ️ Note: When choosing ‘Single’ dimension as a Type, you won’t get asked to specify dimensions. The rest remains the same.

Specify Dimensions

Next, fill in the respective fields to identify, explain and establish how your dimension works.

For multi-dimensional credentials, you may 'add' as many dimensions as you want.

Required fields:

  • Create an Identifier: The way you identify the dimension.

    • Example: mainnet_eth_balance

  • Write a Display Name: The way a dimension gets displayed to users.

    • Example: ETH Balance on Mainnet

  • Select Type: The way the dimension gets calculated.

    • Boolean

    • Float

    • Integer

    • Big Integer

    • Counter

  • Input a Description: A description of the dimension.

Your dimension spec should look like this 👇

Endpoint

You'll need to configure an HTTP endpoint where data will get exchanged or sent.

The endpoint should look something like this: rpc.ethereum.org/eth_getBalance

Configuration methods:

  • GET Method: RESTFul style URL to which we will send the HTTP GET request.

    • Use this as the placeholder for user addresses: $address

    • You can put it on query parameters (info?address=$address) or as a path variable (/info/$address).

  • POST Methods: Unlike the HTTP-GET-sourced type, no address placeholder is allowed in the URL.

⭐️ Tip: The request's response MUST ALWAYS be a valid JSON string.

Galxe.com isn't allowed.

Header (Optional)

An optional HTTP request header.

  1. Key

  2. Value

⚠️ Wait: Cookie headers are not allowed.

Body (POST Method)

A data payload can get to the server in the request's body as part of a POST request.

We only support JSON format for the post body.

You must include a placeholder like: $address

In the request body, we support two placeholders:

  • $address: gets replaced by the hex string of the user's address with 0x prefix— 0x95ad73.

  • $addressWithout0x: gets replaced by the hex string of the user's address without the 0x prefix— 95ad73. (No prefix is useful when constructing an eth_call)

ℹ️ Note: Addresses encoded with case-insensitive schemas, like EVM and Aptos addresses that are 0x-prefixed hex string, must be lowercase BEFORE sending to the endpoint.

Expression

We use expressions to evaluate the results of a response sent to Galxe's backend and returned from an endpoint. (Typically another server)

The result returns whether an address is eligible for a credential.

An expression is a JavaScript (ES6) function of type signature: (object) => int

An endpoint receives a request containing the user's address. The response object gets passed as a parameter to the function. The function returns the number 1 or 0, determining whether the address is eligible for a credential.

To maintain anonymity, the function itself must be anonymous.

Prepare the first line of the expression as follows:

function(resp) {} instead of let expression = (resp) => {} 

Start Using Multi-Dimensional Credentials on Galxe

This article thoroughly explains multi-dimensional credentials, which can help you enhance your campaigns on Galxe and distinguish your Space on the platform.

All Spaces are encouraged to get creative with their campaigns to stand out on Galxe 💫

If you are a Space owner/admin on Galxe, create new credentials here.


Did this answer your question?