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
Section titled “What this is”SEI owns the Start() button. When you call it, SEI:
- Creates your personal YUE bank.
- Links the new YUE to your LAU.
- Registers you through CHAN as an active player.
- Returns the paired
(YUE, LAU)tuple — sometimes called your Chi.
Call Start() before CHOA.Play() when your wallet has no YUE. CHOA.Play() reads the existing YUE through SEI.Chi() and does not create one. Calling Start() again renames the existing YUE.
If you’ve played a web3 game before
Section titled “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
Section titled “What you actually do with it”Start(lauAddress, name, symbol)— create your YUE with the given display name. Returns your YUE address.Chi()— caller-sensitive read returning the transaction origin’s (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.
Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.
0x3dC54d46e030C42979f33C9992348a990acb6067SEI.Start(address LauToken, string YueName, string YueSymbol)Simulate / call
Open this function to load its call form.
SEI.Chi()Read
Open this function to load its call form.
Rewards / costs
Section titled “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
Section titled “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
Section titled “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
Section titled “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 for tx.origin. It reverts with NotStarted when that origin has no registered YUE.
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.