본문으로 건너뛰기

SuiLink

SuiLink는 서로 다른 블록체인의 지갑 주소를 Sui 지갑 주소에 안전하게 연결할 수 있게 해준다. SuiLink를 생성하면 연결된 지갑에 대한 소유권을 인증된 방식으로 증명하는 소울바운드 NFT를 받는다.

주요 기능

SuiLink는 다음 기능을 제공한다:

  • Cross-chain identity verification: Ethereum에서 Sui로, Solana에서 Sui로, 그리고 다른 Sui 주소의 지갑을 기본 Sui 지갑에 연결한다.
  • Non-transferable proof of ownership: 지갑 소유권을 암호학적으로 검증하는 soulbound NFT를 받는다.
  • Enhanced discoverability: Sui ecosystem의 프로젝트가 연결된 모든 지갑 전반의 활동을 기준으로 사용자를 발견할 수 있다.
  • Reward eligibility: Sui network 안에서 cross-chain reward, priority feature, 그리고 exclusive events를 위한 기회를 연다.

지원 network

현재 SuiLink는 Sui와 Ethereum 사이(Sui-to-Ethereum), 그리고 Sui와 Solana 사이(Sui-to-Solana)의 지갑을 cross-chain으로 연결하는 것을 지원한다.

현재 Sui-to-Sui 연결은 Playtron 지갑 app을 위한 custom solution을 사용해 programmatically하게만 지원된다. 더 자세한 내용은 SuiPlay0X1 SuiLink integration guide를 참조한다.

SuiLink를 생성하려면 소울바운드 NFT를 민트하기 위해 Sui network에서 소량의 가스 수수료가 발생한다. 연결을 완료하려면 지갑에 SUI 토큰이 어느 정도 들어 있는지 확인한다.

SuiLink를 생성하려면:

  1. https://www.suilink.io/를 방문한다.
  2. Connect Sui Wallet를 클릭한다.
  3. 연결하려는 블록체인 network를 선택한다: Ethereum 또는 Solana.
  4. 프롬프트를 따라 연결하려는 지갑을 인증하고 연결한다.
  5. 트랜잭션을 완료해 SuiLink NFT를 민트한다.

각 SuiLink 연결은 Sui 지갑 안에 별도의 SuiLink NFT를 생성한다.

연결된 주소를 보려면:

  1. Sui 지갑에서 SuiLink NFT를 본다.
  2. network_address 필드를 확인해 어떤 지갑이 연결되어 있는지 본다.
  3. 타임스탬프를 검토해 각 연결이 언제 생성되었는지 본다.

해당 NFT를 burn하면 지갑 연결을 영구적으로 해제할 수 있다. 주소 연결을 해제하려면:

  1. Sui 지갑의 NFTs 섹션으로 이동한다.
  2. burn하려는 SuiLink NFT에서 "Send" 또는 "Transfer"를 선택한다.
  3. burn 주소를 입력한다: 0x0000000000000000000000000000000000000000.

또한 SUI Manager 같은 다양한 third-party tool이 NFT burn을 도와줄 수 있으며, 일부 지갑에는 burn 기능이 내장되어 있다.

Sui에서 애플리케이션을 구축할 때는 SuiLink를 통합해 cross-chain 소유권을 검증할 수 있다.

NetworkETH and SOL Package IDSui-to-Sui Package ID
Testnet0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a
Mainnet0xf857fa9df5811e6df2a0240a1029d365db24b5026896776ddd1c3c70803bccd30x73f5ab2461c5993408fff21354fa9831d4f4a66cc81382419ec29e3c80c384b5

사용자의 SuiLink 연결을 가져오려면 다음 gRPC 쿼리를 사용한다:

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 },
});

이 query는 지정한 Sui 주소가 소유한 모든 SuiLink NFT를 반환한다.

각 SuiLink NFT에는 다음 필드가 들어 있다:

{
"id": "0xcafe",
"network_address": "0xdecaf",
"timestamp_ms": "1751541273947"
}

NFT 타입은 지갑이 어떤 블록체인 network에 연결되어 있는지를 나타낸다:

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>

cross-chain 자산 소유권 verify

사용자의 SuiLink 객체를 가져온 뒤에는 연결된 블록체인에서 특정 자산에 대한 소유권을 검증할 수 있다:

  1. SuiLink NFT에서 network_address를 추출한다.
  2. Ethereum에는 Alchemy, Solana에는 Metaplex 같은 적절한 블록체인 API를 사용해 해당 주소의 자산을 조회한다.
  3. 필요한 자산이 존재하는지 검증한다.
  4. 사용자의 Sui 지갑을 통해 혜택을 귀속한다.

관련 링크