Wallet Integration Options
This guide will be updated as the Playtron SDK and additional tooling become available. Check back regularly for the latest recommendations and implementation details.
SuiPlay0X1에서 어떤 지갑을 개발할지에 대한 몇 가지 옵션이 있다. 사용하는 지갑을 결정할 때 염두에 두어야 할 몇 가지 개념이 있다.
- Self-custodial wallets: 사용자는 개인 키를 관리하고 자산을 직접 소유한다.
- zkLogin wallets: 기존 zkLogin 지갑(또는 Enoki 지갑)은 Sui만의 고유한 지갑 유형이다. zkLogin 지갑은 Web2 인증 제공업체(가령 Google OAuth)에 연결된다. 사용자는 기존 인증 제공업체를 통해 인증하고, 해당 제공업체는 영지식 증명을 활용하여 사용자의 소셜 계정에 지갑을 연결한다. 이를 통해 사용자는 인증 제공업체 사용자 메타데이터와 온체인 속성 주소가 연관되지 않는 임시 키 쌍을 통해 zkLogin 지갑에 액세스할 수 있다. 임시 키 쌍이 클라이언트 측에 있는 경우, zkLogin 지갑은 셀프 커스터디 지갑이다.
- Playtron zkLogin wallet: Playtron zkLogin 지갑은 사용자의 Playtron 자격 증명에 연결된 특수한 zkLogin 지갑이다. SuiPlay0X1 기기를 사용하는 모든 사용자는 Playtron 로그인 정보를 가지고 있으므로, 연결된 Playtron zkLogin 지갑을 소유하게 된다.
- Custodial wallets: 개발자는 사용자를 대신하여 지갑을 관리한다(기존 게임 데이터베이스와 유사). 단, 온체인 방식이다. 사용자는 지갑을 생성하거나 가져올 필요가 없으며, 지갑이 무엇인지조차 이해할 필요도 없다. 이를 통해 초기 사용자 경험은 개선되지만, 사용자가 게임의 웹 3.0 기능을 실제로 활용하려면 이 문제를 해결해야 한다.
Self-custodial wallets
셀프 커스터디 지갑을 사용하면 사용자가 개인 키를 관리하고 자산을 직접 소유할 수 있다. 이미 지갑을 소유한 사용자는 일반적으로 지갑 기능, 시드 문구 보안 및 저장 방식에 익숙하다. Web3를 처음 사용하는 사용자에게는 지갑을 얻는 과정을 안내하고 올바른 시드 문구 관리 방법을 교육해야 한다.
셀프 커스터디 지갑의 일반적인 결제 흐름은 사용자가 직접 가스비를 지불하는 방식이며, 이는 관리자의 비용을 절감하지만, 사용자가 거래 비용을 지불하기 위해 지갑에 자금을 예치해야 한다. 사용자를 대신하여 가스비를 지불하는 sponsored transactions을 통해 이러한 결제 흐름을 변경할 수 있다. 이렇게 하면 사용자(특히 Web3를 처음 사용하는 사용자)의 지갑 온보딩 경험을 상당히 간소화할 수 있으므로 마찰을 줄일 수 있다. 하지만 프로젝트의 장기적인 재정적 영향을 고려하고, 제공하는 sponsored transaction이 목표 달성에 지속 가능한지 확인 해야 한다.
셀프 커스터디 지갑은 체인 상의 다른 애플리케이션과 상호 작용할 수 있다는 측면에서 가장 높은 이동성을 제공힌다.
zkLogin wallets
zkLogin 지갑은 Sui만의 고유한 지갑 유형이다. 이 지갑은 Web2 인증 제공업체(가령 Google, Facebook, Twitch OAuth)에서 제공하는 익숙한 로그인 방식을 제공한다. 사용자가 선택한 제공업체를 통해 인증하면 zkLogin이 해당 계정에 온체인 지갑 자격 증명을 연결한다.
zkLogin 지갑은 인증 제공업체의 사용자 메타데이터를 온체인 지갑과 연관시키지 않는 임시 키 쌍을 사용한다. 임시 키 쌍은 클라이언트 측에 보관되므로 zkLogin 지갑은 셀프 커스터디로 관리된다. 따라서 사용자가 시드 구문을 적어두거나 개인 키를 안전하게 저장할 필요가 없다.
가장 간단한 형태의 zkLogin 지갑은 지갑을 생성한 앱에 종속된다. 사용자는 기본적으로 zkLogin을 지원하는 각 애플리케이션에 대해 새로운 지갑을 생성한다. 이 모델은 사용자가 각 지갑 인스턴스에 대한 비밀번호를 기억할 필요가 없도록 하고 Web2에 대한 사용자의 기대치를 충족하기 위한 목적으로 설계되었다. 사용자가 다른 애플리케이션에 지갑을 연결하지 않고도 게임에 계속 참여할 수 있도록 하려면 간단한 zkLogin이 좋은 선택이다.
Enoki by Mysten Labs 는 월간 법정화폐 구독 API 키를 사용하여 zkLogin, sponsored transaction 등에 액세스할 수 있는 SaaS 솔루션이다. zkLogin 기능에 Enoki를 사용하면 Enoki Connect에 액세스할 수 있다. Enoki Connect는 내장된 zkLogin 지갑의 이식성을 제공하여 다른 애플리케이션에서 사용자가 게임 지갑을 통해 연결할 수 있도록 허용한다. 자세한 내용은 Enoki Connect documentation를 참조 한다.
Playtron zkLogin wallet
Playtron 지갑은 몇 가지 고유한 기능을 제공하는 zkLogin 지갑의 한 유형이다:
- SuiPlay0X1에서 실행되는 GameOS와 직접 통합되어 사용자가 기기에서 원활하게 transaction에 서명할 수 있다.
- Enoki Connect를 기본적으로 지원하여 dApp 간 이식성을 높였다.
SuiLink를 사용하여 Playtron 지갑을 다른 셀프 커스터디 지갑과 연결하여 기기에서 연결된 지갑에 대한 읽기 권한을 부여하는 웹 애플리케이션이 개발 중이다.
Custodial wallets
커스터디얼 지갑을 사용하면 사용자를 대신하여 지갑을 관리할 수 있다. 온체인 방식을 제외하면 기존 게임 데이터베이스와 유사한 경험을 제공한다. 커스터디얼 지갑은 사용자가 지갑을 생성하거나 가져오거나, 심지어 지갑이 무엇인지 이해할 필요조차 없다. 이는 온보딩 과정에서 발생하는 마찰을 크게 줄여주지만, 사용자가 게임의 웹 3.0 기능을 실제로 활용할 수 있도록 다운스트림 단계에서 사용자를 교육해야 한다.
커스터디얼 지갑은 통합형 또는 개별형으로 구성될 수 있다. 통합형의 경우, 모든 사용자 자산은 하나의 지갑에 통합되고, 게임은 오프체인 데이터베이스를 사용하여 각 자산이 어떤 개인의 자산인지 추적한다. 플레이어 간 자산 전송은 온체인 활동이 발생하지 않고 데이터베이스 업데이트만 발생한다. 예를 들어, 플레이어 A가 플레이어 B에게 검을 판매하는 경우, 온체인 transaction을 수행하는 대신 데이터베이스에 해당 object 교환을 기록한다.
통합 커스터디얼 지갑은 일부 온체인 지표를 난독화할 수 있으며, 이는 제3자 또는 Sui 익스플로러를 통해 게임의 온체인 활동에 대한 외부 검증이 필요한 경우 문제가 될 수 있다. 예를 들어, 게임용 토큰을 출시할 경우, 게임이 통합 지갑을 사용하는 경우 잠재적 투자자는 dApp의 활성 플레이어 수를 파악할 수 없다.
개별적인 경우, 각 사용자는 게임 개발자가 관리하는 커스터디얼 지갑을 갖게 된다. 플레이어 간 자산 전송은 온체인 활동으로 이어지며, 사용자는 가스비를 지불해야 한다.
사용자는 커스터디얼 지갑을 사용하여 체인 상의 다른 타사 dApp(예: NFT 마켓플레이스)과 상호 작용할 수 없다.
지갑 공급업체가 사업을 중단할 경우 다운스트림 위험이 발생할 수 있으므로 제3자 커스터디얼 지갑 공급업체를 선택할 때는 주의해야 한다.
Selecting the optimal wallet integration
dApp에 가장 적합한 지갑을 선택하는 것은 프로젝트의 목표에 따라 달라진다. 일반적으로 단 하나의 최상의 솔루션은 없지만, 다양한 접근 방식 간의 장단점을 비교해보면 어떤 선택이 더 나은지 알 수 있다.
Requirements
지갑 전략은 개발자에게 달려 있지만 SuiPlay0X1을 사용하려면 몇 가지 요구 사항이 있다:
On-device
SuiPlay0X1 기기에서 실행되는 게임은 Playtron zkLogin 지갑을 기본 옵 션으로 지원해야 한다.
SuiPlay0X1에서 플레이하는 동안 사용자에게 게임 플레이를 위해 기기 외부에서 transaction에 서명하도록 요구할 수 없다.
플레이어가 다른 셀프 커스터디 지갑에 접근할 수 있거나 Playtron zkLogin이 아닌 지갑에 접근할 수 있다는 보장은 없다.
Off-device
다양한 플랫폼(예: Windows PC)에서 실행되는 오프디바이스 게임은 동일한 지갑으로 크로스 플랫폼 플레이를 가능하게 하기 위해 Sui dApp Kit를 사용해야 한다.
Wallet strategies
다음 전략은 관련 시나리오의 요구 사항을 가장 잘 해결하는 방법에 대한 몇 가지 권장 사항을 제공한다.
Option 1: Playtron zkLogin wallet plus dApp Kit combo (Recommended)
- 기기 내에서는 Playtron 지갑을 기본으로 사용한다.
- 기기 외에서는 dAppKit을 사용하여 사용자가 Playtron 지갑을 사용하거나 웹 포털을 통해 셀프 커스터디 지갑을 가져올 수 있도록 한다.
- 사용자가 기기 외에서 셀프 커스터디 지갑을 사용하여 게임을 처음 플레이한 경우, companion app을 사용하여 지갑을 Playtron 지갑에 연결할 수 있다. 게임 플레이에 필요한 권한이다:
- Only read access: 게임은 기기 내에서 실행되며 연결된 셀프 커스터디 지갑을 읽고 정상적으로 작동한다.
- Transacting: 사용자는 companion app을 통해 셀프 커스터디 지갑에서 Playtron 지갑으로 자산을 이체할 수 있다.
Benefits
- 사용자는 개인 키에 대한 통제권을 유지하여 진정한 소유권을 보장한다.
- 기기 내 게임플레이와 기기 외 게임플레이 간의 원활한 전환된다.
- 보안 및 사용자 주권이 강화된다.
- 기기 내 지갑 경험은 기존 게이머에게 익숙하고 매끄럽다.
- 기존 지갑을 보유한 사용자는 기기 외에서도 계속 사용할 수 있다.
SuiPlay0X1 기기에서는 Playtron 지갑을 기본으로 사용한다. 기기 외부에서도 사용자는 Playtron 지갑을 계속 사용할 수 있다(dApp Kit SDK를 통합한 경우).
Option 2: Custodial wallets with per-user allocation
- 각 사용자별로 개별 커스터디얼 지갑을 생성한다(공유 지갑은 불가).
- 사용자를 대신하여 이러한 지갑을 관리한다(일반적으로 Beamable과 같은 타사 서비스를 통해 관리).
- dApp Kit SDK를 사용하여 커스터디얼 지갑에서 셀프 커스터디얼 지갑으로 자산을 이체할 수 있도록 지원한다.
Tradeoffs
- 온체인 활성 지갑 지표를 구동하는 것과 UX 간의 균형을 맞추고, 사용자에게 지갑 메커니즘을 모호하게 만드는 것의 균형을 맞춘다.
- 사용자 간 자산 전송에는 여전히 가스 비용이 발생하며, 이는 사용자가 부담해야 힌다.
- 지갑 복구 메커니즘이 없으므로 사용자 또는 백엔드 제공업체에 의존해야 한다.
- 궁극적으로 사용자가 Web3의 이점을 누리도록 하려면 지갑을 보유하지 않을 수 없다. Playtron 생태계는 게임 OS가 사용자 자산을 표시하고, 동반 앱이 항상 게임 중심 지갑 요구 사항을 충족하기 때문에 이를 제공한다. 커스터디얼형 지갑을 사용하는 경우, 사용자에게 자산을 표시하고, 자산 전송 방법을 안내하고, Playtron이 기본적으로 제공하는 기타 요구 사항을 고려해야 한다.
Option 3: Game-specific zkLogin wallets with Playtron wallet transfer support
이 옵션은 권장 방식의 특수한 경우이다. 게임에서 게임별 zkLogin 지갑을 사용하는 경우에도 기기에서 Playtron 지갑 사용을 지원해야 한다.
- 기기 외부에서 플레이할 때는 게임별 zkLogin 지갑을 기본 지갑으로 사용한다.
- 신규 사용자가 기기에서 게임을 시작하는 경우, Playtron zkLogin 지갑을 사용한다.
- 게임별 zkLogin 지갑을 사용하여 기기 외부에서 게임을 플레이한 적이 있는 경우, 컴패니언 앱을 사용하여 지갑을 연결하고 해당 지갑의 자산을 Playtron zkLogin 지갑으로 전송하여 기기에서 계속 플레이할 수 있다. 자세한 내용은 Cross-Platform Migration Strategies을 참조한다.
- zkLogin 지갑을 컴패니언 앱에 연결하려면 지갑을 Enoki Connect로 업그레이드해야 한다(아래 Enoki Connect section 참조).
- 사용자가 컴패니언 앱에 지갑을 연결한 후에는 게임별 zkLogin 지갑을 Playtron 지갑에 연결할 수 있다. 게임에 읽기 전용 권한이 필요한 경우 이 연결로 충분하다. 반면, 게임에 전체 자산 액세스가 필요한 경우, 플레이어는 게임별 지갑에서 Playtron 지갑으로 자산을 전송해야 한다.
Tradeoffs
- 사용자별 온체인 지갑 활동을 제공하는 동시에, 간편한 UX를 유지하고 사용자에게 지갑 메커니즘을 난독화한다.
- 커스터디얼형 지갑과 달리 사용자는 여전히 가스 비용을 지불해야 한다. sponsor transactions를 후원하여 이러한 책임을 맡을 수 있다.
- 이 경우, 개인 키에 접근할 수 없으므로 사용자가 지갑을 자체적으로 관리한다. 하지만 사용자는 시드 구문을 기록하거나 보호할 필요가 없다.
- 궁극적으로 사용자가 Web3의 이점을 누리도록 하려면 지갑을 보유하지 않을 수 없다. Playtron 생태계는 게임 OS가 사용자 자산을 표시하고, 동반 앱이 항상 게임 중심 지갑 요구 사항을 충족하기 때문 에 이를 제공한다. 커스터디얼 지갑을 사용하는 경우, 사용자에게 자산을 보여주고, 자산 이체 방법을 안내하고, Playtron이 기본적으로 제공하는 기타 요구 사항을 고려해야 한다.
Enoki Connect (optional)
참고로, 표준 게임 전용 zkLogin 및 Enoki 지갑은 앱 전용이며 이식성이 없다. 사용자는 외부 dApp을 사용하려면 자산을 타사 지갑으로 전송해야 한다. 이는 구현이 더 간단하지만 사용자 경험은 제한적이다.
Enoki Connect를 사용하면 게임 전용 zkLogin 지갑을 업그레이드하여 Sui 생태계 전반에서 이식성을 확보할 수 있다.
- 사용자는 게임 지갑을 마켓플레이스 및 다른 dApp에 직접 연결할 수 있다.
- 외부 dApp은 게임 지갑을 지원 지갑 목록에 수동으로 추가해야 하며, 이를 위해서는 외부 dApp에 연락하거나 비즈니스 관계를 구축해야 한다. dApp은 게임 전용 지갑을 개별적으로 활성화하여 해당 사이트의 연결 가능 지갑 목록에 표시되도록 해야 한다.
- 기존 게임 전용 zkLogin 또는 Enoki 지갑을 업그레이드하려면 추가 구현 작업이 필요하다.
Recommended hybrid approach
dApp Kit를 사용하여 셀프 커스터디 지갑(기기 내 Playtron 지갑 또는 기기 외부 Slush 지갑)을 기본 지갑 옵션으로 지원하라. 이를 통해 다른 dApp의 지원 없이도 생태계 이동성을 즉시 확보할 수 있다. 게임 전용 지갑을 선호하거나 기기 외부에서 셀프 커스터디 지갑을 설정할 수 없는 사용자를 위해 Enoki Connect를 보조 지갑 옵션으로 제공할 수도 있다.
SuiPlay 연동에는 Enoki Connect가 필요하지 않다. 즉, 추가 혜택을 원하지 않는 한 게임 지갑에서 Enoki Connect를 사용할 필요가 없다. Playtron 지갑은 Enoki Connect를 사용하며, 해당 지갑을 지원하는 타사 dApp에 연결할 수 있다.
SuiLink
SuiLink는 Mysten Labs의 제품으로, 여러 체인의 지갑을 연결하여 크로스 체인 지갑 검증, 자산 소유권 검증, 그리고 체인 간 자산 분배와 같은 사용 사례를 지원한다.
Playtron companion wallet app 은 이 기술을 활용하여 다른 Sui 니모닉 또는 zkLogin 지갑, 또는 Solana 또는 Ethereum 지갑에 소울바운드 자산이 포함된 지갑 을 연결할 수 있도록 지원한다. 이를 통해 사용자는 자산이 제공하는 혜택을 받기 위해 모든 자산을 Playtron 지갑으로 이전할 필요가 없으므로 사용자 경험이 향상된다.
다른 지갑이나 자산의 소유권을 증명하고 Playtron 지갑에 연결하여 게임에서 (해당 자산을 읽을 수 있도록 할 수 있지만), 해당 자산으로 거래할 수는 없다. Playtron 지갑에서 거래가 필요한 작업의 경우, 자산을 이전해야 한다.
How to integrate with SuiLink
SuiLink 연결(Playtron 지갑 앱에 등록된 SuiPlay0X1 사용자에 대해 이미 설정됨)이 있는 경우, 사용자의 SuiLink object를 쿼리하여 특정 자산을 소유하고 있는지 확인할 수 있다. dApp Kit SDK를 사용하여 다음 쿼리를 실행하여 이를 수행할 수 있다.
const ethSolSuiLinks = suiClient.getOwnedObjects({
owner: suiAddress,
filter: {
Package: SUILINK_PACKAGE_ID_ETH_SOL,
},
options: {
showContent: true,
showType: true,
},
});
const suiSuiLinks = suiClient.getOwnedObjects({
owner: suiAddress,
filter: {
Package: SUILINK_PACKAGE_ID_SUI,
},
options: {
showContent: true,
showType: true,
},
});
SUILINK_PACKAGE_ID_ETH_SOL 및 SUILINK_PACKAGE_ID_SUI 에는 다음과 같은 패키지 ID가 있다:
| Network | SUILINK_PACKAGE_ID_ETH_SOL | SUILINK_PACKAGE_ID_SUI |
|---|---|---|
| Testnet | 0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a | 0x0025bafa2e6afa511c19bd4e95626c897e798fde629b4782fe061bdc8bd65c8a |
| Mainnet | 0xf857fa9df5811e6df2a0240a1029d365db24b5026896776ddd1c3c70803bccd3 | 0x73f5ab2461c5993408fff21354fa9831d4f4a66cc81382419ec29e3c80c384b5 |
SuiLink NFT는 해당 유형에 연결된 체인에 대한 정보를 포함하고, 필드에 연결된 계정의 주소를 포함한다.
Reference fields:
{
id: {
id: "0xcafe"
}
network_address: "0xdecaf"
timestamp_ms: "1751541273947"
}
Reference types:
// 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>
SuiLink NFT를 획득한 후, 게임은 해당 읽기 API(예: Alchemy)를 사용하여 사용자가 연결된 체인과 지갑에 보유한 자산을 읽을 수 있다. 연결된 지갑에서 대상 자산이 발견되면, 게임은 사용자의 Playtron 지갑에서 해당 자산의 가치를 사용자에게 귀속시킬 수 있다.
Related links
The official Playtron OS SDK repository on GitHub.
The Sui dApp Kit is a set of React components, hooks, and utilities to help you build a dApp for the Sui ecosystem.
Follow announcements and connect with the community on the Discord channel for SuiPlay0X1.
Support linking the Playtron wallet to other self-custody wallets using SuiLink, enabling read-access of associated wallets while on the device.
With Enoki Connect, users can use their dApp-specific accounts across different dApps, enabling a more unified and consistent experience.