Skip to content

SEI — New Player Onboarding

One-line pitch: SEI is the welcome desk that turns a newly-minted LAU into a fully set-up player account.

What this is

SEI owns the Start() button. When you call it, SEI:

  1. Creates your personal YUE bank.
  2. Links the new YUE to your LAU.
  3. Registers you through CHAN as an active player.
  4. Returns the paired (YUE, LAU) tuple — sometimes called your Chi.

You typically don't need to call SEI directly. The game flow behind CHOA.Play() will call Start() for you the first time you show up. But if you want to bootstrap your account before touching gameplay — or rename your YUE later — SEI is where you go.

If you've played a web3 game before

  • Closest analogy: the onboarding script in a web3 app that does "fund account, deploy wallet, link accounts" in one click.
  • Or: an MMO welcome quest — a single NPC who sets up your inventory, house, and social listings at once.
Dysnomia term What it maps to
Start() The onboarding call that creates your YUE
Chi() Convenience read returning your paired (YUE, LAU) addresses
NotStarted Error returned by contracts that expect you to be onboarded but find no YUE

What you actually do with it

  • Start(name, symbol) — create your YUE with the given display name. Returns your YUE address.
  • Chi(wallet) — read-only lookup: given a wallet, return its (YUE, LAU) pair.
  • Rename — if you're already onboarded, calling Start() again is an allowed path to rename your YUE without deploying a new one.

Rewards / costs

  • Cost: one contract deployment (your YUE) the first time. Just gas.
  • Reward: you now have a bank and can start earning.

Requirements & gating

  • You need a LAU already — SEI assumes one exists.
  • You shouldn't have an existing YUE unless you're calling Start to rename.

Where it connects

SEI sits between CHAN (which tracks your YUE ↔ wallet link) and CHEON (which needs your YUE address to pay you). Downstream, everything depends on your YUE existing — so SEI is on the critical path of your very first session.

Quick FAQ

Q: What if I already have a YUE but call Start again? A: It's interpreted as a rename — your YUE isn't redeployed, its display name is updated. No value moves.

Q: What does Chi() return exactly? A: A (YUE_address, LAU_address) pair. If either is missing, it returns zero for that slot.

Q: Why is there a separate onboarding contract instead of just doing this in LAUFactory? A: Clean separation. LAUFactory is for creating the character. SEI is for creating the bank. You can have a LAU and delay creating a YUE if you want.

Q: Is Start() idempotent? A: For the YUE-creation path, yes — it checks whether you already have one and either creates a fresh YUE or renames the existing one. No double-deployment.


Want the Solidity? The contract reference lives at technical/docs/domain/tang/SEI.md.