Profile-paid transactions
An alternative to the default of sponsoring transactions, is to make the Profile pay for a transaction. This requires the profile have enough MC in it to pay for the gas fees needed to handle the network transaction. This generally comes down to a very small sum of MC, but if you never distributed any MC to the Profiles that you've created, there's a big chance that none of the profiles actually have the required MC in place.
In order to mitigate that, you could go different directions. Which is viable to you and your userbase completely depends on your context.
- You could tell your users to increase their in-game account MC funding by asking them to send MC to it (which we do not consider a good experience for the user)
- You could buy MC and distribute it to your in-game profiles through a treasury profile
How to make the profile pay for it's transaction?
In order to make a profile pay for it's own transaction, the only thing you need to do is provide a sponsor: false
option when running a transaction. The sponsor
option is something we've built into every method that triggers an on-chain transaction.
Take into account that if the Profile doesn't actually have the necessary MC funded, the sdk method will throw.
Below you will find an example how this would look like when managing assets in a Profile
const transaction = await beam.assets.transferAsset("your-sender-id", {
receiverEntityId: "your-receiver-id",
assetAddress: "your-contract-address",
assetId: "73",
// ...
sponsor: false, // 👈 This handles the transaction to be self paid
});
// {
// "status": "success",
// "type": "custodial",
// "transactionHash": '0x71f3f259568e9875c41a4350a3912a3a7650d9321ccd1d57641241128b4e504f',
// "explorerUrl": "https://subnets.avax.network/beam/0x71f3f259568e9875c41a4350a3912a3a7650d9321ccd1d57641241128b4e504f"
// }
Alternative methods of handling transactionHash
- Sponsored transactions: Learn about sponsored transactions for your users
- Custom charges: A guide to managing and updating your game's assets and details within Beam.