Skip to content
API
Game
Managing contracts

Managing contracts

If you want to run transactions for profiles that interact with specific contracts, the contract address will need to be registered for your game.

We provide a method for you to add any contract to your game, as long as you can provide us with the ABI and contract address. As adding a contract address to your game is probably a one time action that you won't repeat (a lot) over time, we can also recommend simply interacting with the hosted Swagger UI (opens in a new tab) to simply add the necessary contracts to you rgame.


Asset data

At the moment of writing you are (technically) required to submit your asset contracts to Sphere in order for the SDK to be hydrated with data, since we use Sphere (our NFT marketplace) as the source for all asset related data.

https://testnet.sphere.market/ (opens in a new tab)


Companion app

If you're using the Beam Companion app, it might be good to know that as soon as you add a contract to your game, all connected users to profiles of your game are able to see said contract in the Beam Companion app.


Adding a contract

Adding a contract is as simple as calling the addContractToGame method.

import { Beam } from "@onbeam/node";
 
const beam = new Beam("x-api-key");
 
const contract = beam.game.addContractToGame({
  address: "string", // the deployed contract address
  type: "ERC20", // ERC721, ERC1155
  chainId: 13337, // 13337 for Beam testnet
  name: "string", // The name of the asset contract, for example: 'Card Packs'
 
  // the JSON abi for the contract, we recommend you grabbing it from the explorer if you have a deployed & verified contract
  abi: [
    {
      name: "string",
      type: "string",
      anonymous: true,
      payable: true,
      constant: true,
      stateMutability: "string",
      gas: "string",
      inputs: [
        {
          name: "string",
          type: "string",
          indexed: true,
          internalType: "string",
          components: ["string"],
        },
      ],
      outputs: ["string"],
    },
  ],
});
 
// {
//  "type": "ERC20",
//  "id": "string",
//  "createdAt": "string",
//  "updatedAt": "string",
//  "externalId": "string",
//  "address": "string",
//  "name": "string",
//  "chainId": 0,
//  "gameId": "string"
//}

Deleting a contract

Removing a contract from your game is just as simple, simply use the removeContractFromGame method to remove it.

import { Beam } from "@onbeam/node";
 
const beam = new Beam("x-api-key");
 
const contract = beam.game.removeContractFromGame({
  address: "string", // the deployed contract address
  chainId: 13337, // 13337 for Beam testnet
});
 
// {
//  "success": true
//}