docs/content/guides/developer/wallets/suilink.mdx
SuiLink enables securely linking wallet addresses from different blockchains to a Sui wallet address. Upon creating a SuiLink, you receive a soulbound NFT that serves as authenticated proof of ownership for your connected wallets.
SuiLink provides the following capabilities:
SuiLink currently supports linking wallets cross-chain between Sui and Ethereum (Sui-to-Ethereum), and Sui and Solana (Sui-to-Solana).
Sui-to-Sui linking is currently only supported programmatically with a custom solution for the Playtron wallet app. For more information, visit the SuiPlay0X1 SuiLink integration guide.
Creating a SuiLink incurs a small gas fee on the Sui network to mint the soulbound NFT. Ensure you have some SUI tokens in your wallet to complete the connection.
To create a SuiLink:
Each SuiLink connection creates a separate SuiLink NFT in your Sui wallet.
To view your linked addresses:
network_address field to see which wallets are linkedYou can permanently unlink a wallet by burning the corresponding NFT. To unlink an address:
0x0000000000000000000000000000000000000000Additionally, there are various third-party tools (such as SUI Manager) that can help burn NFTs, and some wallets have a built-in burning feature.
When building an application on Sui, you can integrate SuiLink to verify cross-chain ownership.
<Tabs className="tabsHeadingCentered--small"> <TabItem value="prereq" label="Prerequisites">Obtain the correct SuiLink package ID for your target network.
| Network | ETH and SOL Package ID | Sui-to-Sui Package ID |
|---|---|---|
| Testnet | 0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a | 0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a |
| Mainnet | 0xf857fa9df5811e6df2a0240a1029d365db24b5026896776ddd1c3c70803bccd3 | 0x73f5ab2461c5993408fff21354fa9831d4f4a66cc81382419ec29e3c80c384b5 |
To retrieve a user's SuiLink connections, use the following gRPC query:
const SUILINK_PACKAGE_ID_ETH_SOL = '0xf857fa9df5811e6df2a0240a1029d365db24b5026896776ddd1c3c70803bccd3';
const SUILINK_PACKAGE_ID_SUI = '0x73f5ab2461c5993408fff21354fa9831d4f4a66cc81382419ec29e3c80c384b5';
const ethSolSuiLinks = await grpcClient.listOwnedObjects({
owner: suiAddress,
type: `${SUILINK_PACKAGE_ID_ETH_SOL}::suilink::SuiLink`,
include: { json: true },
});
const suiSuiLinks = await grpcClient.listOwnedObjects({
owner: suiAddress,
type: `${SUILINK_PACKAGE_ID_SUI}::suilink::SuiLink`,
include: { json: true },
});
This returns all SuiLink NFTs owned by the specified Sui address.
Each SuiLink NFT contains the following fields:
{
"id": "0xcafe",
"network_address": "0xdecaf",
"timestamp_ms": "1751541273947"
}
The NFT type indicates which blockchain network the wallet is linked to:
for (const link of ethSolSuiLinks.objects) {
const id = link.json.id as string; // "0xcafe"
const linkedAddress = link.json.network_address as string; // "0xdecaf"
const timestamp = link.json.timestamp_ms as string; // "1751541273947"
const chainType = link.type; // full type string includes the generic param,
// e.g. "...::SuiLink<...::ethereum::Ethereum>"
}
// Sui-to-Sui SuiLink (Mainnet)
0xf857fa9df5811e6df2a0240a1029d365db24b5026896776ddd1c3c70803bccd3::suilink::SuiLink<0x73f5ab2461c5993408fff21354fa9831d4f4a66cc81382419ec29e3c80c384b5::sui::Sui>
// Sui-to-Ethereum SuiLink (Testnet)
0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a::suilink::SuiLink<0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a::ethereum::Ethereum>
// Sui-to-Solana SuiLink (Testnet)
0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a::suilink::SuiLink<0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a::solana::Solana>
After retrieving a user's SuiLink objects, you can verify their ownership of specific assets on the linked blockchain:
network_address from the SuiLink NFT.