Skip to main content

Introduction

Delegate Wallet allows for a wallet address to be delegated to another wallet address.

In practice, a user can use wallet address A to play, but their real wallet address is B

Some use cases:

  • Better UX: By using a "Local Wallet" within the browser and sending transactions through the "Batcher", so each transaction gets signed automatically.
  • Security: Allowing players to have a "Burner Wallet" with limited funds to play on.
  • Security: Reduce interaction with real wallet.
  • Account Recovery: account can be re-delegated to a new wallet address.

This feature is optional and you can implement at any time. However, it's good practice use user_id in the STF to identify the user, and not the wallet address in case you end up implementing wallet delegation later.

Feature notes:

  • Delegation can be done after-the-fact (ex: you can play on a burner wallet, and connect it to a main wallet later)
  • Delegations can be cancelled
  • Cycles are not allowed
  • Main wallet state can be delegated to multiple burner wallets (ex: playing on multiple devices at once)

Security risk:

  • Somebody could trick you into delegating your game state to them (steal all your in-game progress). To avoid this, the delegation transaction uses human-readable strings so the user can easily see what they are signing.