Wallet linking
Players sign in with Roblox on your game’s hosted linking page, then prove they own a wallet by signing a free message. Linking sends no transaction. Your game calls GetWallet(userId).
Rolink connects Roblox game servers to Solana. You sign in to the dashboard with a Solana wallet, create a project for your game, connect your game’s Roblox OAuth app, and copy an API key. Your game calls the hosted Rolink API through a Luau SDK. There is no server to run.
local HttpService = game:GetService("HttpService")local Rolink = require(game:GetService("ServerScriptService").Rolink)
local rolink = Rolink.new({ apiKey = HttpService:GetSecret("rolink_api_key"),})
local address = rolink:GetWallet(player.UserId) -- nil until the player links a walletif address then print(rolink:GetTokenBalance(address, MY_MINT)) -- "12.5"endRolink is for Roblox developers whose experience needs to know about Solana. Typical uses are showing a player’s balance, checking whether they hold an NFT from a collection, or sending tokens from a wallet your game controls.
You need to be comfortable writing server-side Luau. Everything else, from the linking page to the signing wallet, runs on Rolink.
rolink_api_key.ServerScriptService and call it from your server scripts./link/<project-slug> on the Rolink API, where players connect a wallet to their Roblox account.The Quickstart walks through each step.
Wallet linking
Players sign in with Roblox on your game’s hosted linking page, then prove they own a wallet by signing a free message. Linking sends no transaction. Your game calls GetWallet(userId).
On-chain reads
Read SOL balances and SPL or Token-2022 balances. NFT and collection ownership come from the DAS API. Rolink caches balance and asset reads for a few seconds.
Live events
Wallet links and unlinks, transaction results and activity on watched addresses reach every live server through Open Cloud MessagingService, using your experience’s own Open Cloud key.
Managed wallet
Send SOL, send SPL tokens or mint tokens from your project’s wallet. Its key is held by Turnkey. Each request carries an idempotency key and has to fit the limits you set in the dashboard.
| Piece | What it does |
|---|---|
| Dashboard | Projects, API keys, Roblox sign-in, the managed wallet and its transaction policy, live event settings, watched addresses, linked players and usage. You sign in with a Solana wallet. |
| Linking page | One hosted page per project. Players sign in with Roblox through your game’s own OAuth app and sign a message in their wallet. |
| Game API | The /v1 routes your servers call with the x-api-key header. Every request is scoped to the key’s project. |
| Managed wallet | One Solana wallet per project, created in Turnkey. The key stays in Turnkey’s secure enclaves, and Rolink only asks for signatures. |
| Event publisher | Pushes events to your experience through Open Cloud MessagingService, and polls the addresses you watch. |
How it works covers the data flows and what Rolink stores.
Rolink is in beta. Before you build on it, know that:
Rolink isn’t affiliated with Roblox Corporation or the Solana Foundation.