Skip to main content

Get Transfers From Vault Received By Certain User

In this tutorial, you will learn how to get all the Moxie transfers from the vault contract received by a certain user by calling the Moxie Protocol Subgraph API.

Include User's Vesting Addresses

Moxie protocol users have Moxie token currently vesting in their vesting contract. A huge portion of them use these to bid on auctions and buy/sell fan tokens on the Moxie protocol.

Therefore, it is important that you include the user's vesting addresses in the query to get ransfers from vault received by a certain user. To get user's vesting contract addresses, click here.

Pre-requisites

Install dependencies graphql and graphql-request to your project :
npm install graphql graphql-request 

Step 1: Add The API Query To Your Code

To get all the Moxie transfers from the vault contract received by a certain user, you can use the following query:

query MyQuery($receivers: [Bytes!]) {
vaultTransferTxes(where: { to_in: $receivers }) {
amount
to
subject
token
totalReserve
txHash
blockInfo {
blockNumber
hash
timestamp
}
}
}
With this GraphQL query, you can add it to your source code and call the API with the graphql-request library:
index.ts
import { gql, GraphQLClient } from "graphql-request";


const graphQLClient = new GraphQLClient(
"https://api.studio.thegraph.com/query/23537/moxie_protocol_stats_mainnet/version/latest"
);

const query = gql`
query MyQuery($receivers: [Bytes!]) {
vaultTransferTxes(where: { to_in: $receivers }) {
amount
to
subject
token
totalReserve
txHash
blockInfo {
blockNumber
hash
timestamp
}
}
}
`;

const variable = {
"receivers": [
"0x0f0ecb17575c232077075ef9d78fc9afad808b4d"
]
}


try {
const data = await graphQLClient.request(query, variable);
console.log(data);
} catch (e) {
throw new Error(e);
}

Step 2: Execute Your Code

Once you have your code ready, you can execute it by running the following command:

ts-node index.ts

If it runs successfully, you should see the data returned in the terminal:

{
"data": {
"vaultTransferTxes": [
{
"amount": "444962989703525653824",
"to": "0x0f0ecb17575c232077075ef9d78fc9afad808b4d",
"subject": "0xf07fbe409a57c4cf896ed24c5a438058a7abe39c",
"token": "0xf80945fc1436b0ae8b86c8835f09870deeaf03d5",
"totalReserve": "1062954420051751294643",
"txHash": "0x25e098a6410bac83ed50d995c730bd4100004342b7ade456b1463a9a0390ce91",
"blockInfo": {
"blockNumber": "12639987",
"hash": "0x5d7e500d8ed7a89191975e229163480760cc90a52b6fc8c53484ae031406eea9",
"timestamp": "1721048262"
}
}
]
}
}

Congrats! 🥳🎉 You've just fetched all the Moxie transfers from the vault contract received by a certain user!

Developer Support

If you have any questions or need help with other use cases, feel free to join the /airstack Warpcast channel and ask your questions there.

Our team is always ready to help you with any questions you may have.