Account Hierarchy
Every wallet that connects to BULK is a MasterEOA - a master externally owned account with a Solana keypair. The master can create sub-accounts beneath it, forming a tree:Sub-accounts are off-curve accounts. Their public keys are deterministically derived from the master’s public key and do not correspond to any private key. Ownership is enforced by the protocol - only the parent MasterEOA can manage them.
Creating a Sub-Account
Submit aCreateSubAccount action with the following fields:
If both
margin_symbol and margin_amount are provided, the protocol atomically creates the sub-account and transfers tokens from the master in a single operation. The master’s withdrawable balance is checked before the transfer.
Names must be unique within the master’s account tree. The protocol rejects duplicate names.
Constraints
Managing Sub-Accounts
Transfer Tokens
Use the Transfer action to move tokens between master and sub-accounts (internal transfer) or between sibling sub-accounts. See the Protocol Native Asset Transfer page for full details.Remove
Submit aRemoveSubAccount action referencing the sub-account to remove. The sub-account must have:
- No open positions
- No open orders
Rename
Submit aRenameSubAccount action with the new name. The same naming rules apply (1-32 characters, alphanumeric plus - and _). The new name must not duplicate any existing sub-account name under the same master.
Only the owning master account can rename.