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.
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 dependenciesgraphql
and graphql-request
to your project :- npm
- yarn
- pnpm
- bun
npm install graphql graphql-request
yarn add graphql graphql-request
pnpm add graphql graphql-request
bun install graphql 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
- Variable
- Response
query MyQuery($receivers: [Bytes!]) {
vaultTransferTxes(where: { to_in: $receivers }) {
amount
to
subject
token
totalReserve
txHash
blockInfo {
blockNumber
hash
timestamp
}
}
}
{
"receivers": [
"0x0f0ecb17575c232077075ef9d78fc9afad808b4d"
]
}
{
"data": {
"vaultTransferTxes": [
{
"amount": "444962989703525653824",
"to": "0x0f0ecb17575c232077075ef9d78fc9afad808b4d",
"subject": "0xf07fbe409a57c4cf896ed24c5a438058a7abe39c",
"token": "0xf80945fc1436b0ae8b86c8835f09870deeaf03d5",
"totalReserve": "1062954420051751294643",
"txHash": "0x25e098a6410bac83ed50d995c730bd4100004342b7ade456b1463a9a0390ce91",
"blockInfo": {
"blockNumber": "12639987",
"hash": "0x5d7e500d8ed7a89191975e229163480760cc90a52b6fc8c53484ae031406eea9",
"timestamp": "1721048262"
}
}
]
}
}
graphql-request
library:- TypeScript
- JavaScript
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);
}
const { gql, GraphQLClient } = require("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:
- TypeScript
- JavaScript
ts-node index.ts
node index.js
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.