Transfer receipts on Bittensor EVM
Beam can now record receipts of your finished transfers and Room deliveries on Bittensor EVM mainnet, where any smart contract can read them, for 1 credit each.
Receipts any contract can read
Beam's relay records each receipt in Beam's receipts contract on Bittensor EVM mainnet (chain 964): the transfer's status, size, completion time and fingerprints, never its payload. A contract reads it with getReceipt. A receipt is Beam-reported: it records what Beam's API reported about the transfer, and a Room receipt can also carry the receipts its targets signed.
Every transfer, or only the ones you ask for
Turn on one switch and every transfer your organization creates while it is on gets a receipt once it finishes, with no transaction on your side. Or have Beam approve a contract or wallet of yours, which asks for the receipts it needs with requestReceipt or requestRoomReceipt and pays only the gas of its request.
- Onchain receipts: register a read-only key under Organization, Onchain receipts in the console, then choose every transfer, contract requests, or both.Console
- Record a receipt for every transfer: one switch covers every transfer your organization creates while it is on, whether it completed, failed or was cancelled.Console
- Contract requests: an approved address calls requestReceipt(transferId) for a transfer or requestRoomReceipt(room, channel, publication) for a Room delivery, and the relay records the receipt once Beam reports it finished.SDK
- Each recorded receipt costs 1 credit. The relay closes a request it will never answer with cancelRequest, also for 1 credit; cancel a mistaken request yourself within the hour to avoid the charge.Console
- Room receipts: a receipt of a Room delivery that every target signed is recorded at level 3.BeamCore
- A Bittensor EVM page in the docs: the mainnet deployment, setup, both ways to get receipts, prices and what a receipt proves.Docs
How it works
Beam runs a relay on Bittensor EVM mainnet, chain 964. It records receipts of finished transfers and Room deliveries in Beam's receipts contract, 0x52c7d4c0d7462562295bbf2e55d3350ca30ba992, where any smart contract can read them. Your organization gets receipts in one of two ways, or both.
Get started
- On the console's API keys page, create a key with only the Read-only: transfers + Room evidence preset. The relay reads your transfers with it and charges your receipts to it.
- Paste it under Organization, Onchain receipts. The console seals it so that only Beam's relay can read it.
- Turn on Record a receipt for every transfer, register a contract that requests receipts, or both.
Costs and limits
- Each recorded receipt costs 1 credit, either way. Beam pays the gas to record it.
- A contract request costs its sender about 164,000 gas, about 0.0008 TAO at 5 gwei. Reading a receipt is free.
- A credit is charged only once the receipt is onchain, and a receipt asked for both ways is charged once. Out of credits, nothing is recorded until you top up.
- The relay closes a request it will never answer with cancelRequest, for 1 credit. Cancel a mistaken request yourself within the hour to avoid the charge.
What it does not do
- A receipt is Beam-reported: it records what Beam's API reported, written by one operator, Beam's relay. Nothing independently checks Beam's answer, and no receipt proves that the content is correct.
- Beam's relay records receipts only. It does not start transfers: start them with an SDK, the CLI or Studio as usual, or run your own relay and Studio to start them from a contract.
- Receipt data is public and permanent: transfer ids, byte counts, completion times, fingerprints, and Room, channel and publication ids. Do not record receipts of transfers whose metadata must stay private.