func Approve
ActionApprove sets an allowance owned by the CALLING REALM, letting `spender` draw on the calling realm's balance. It does not touch the signing user's allowances.
Approve sets an allowance owned by the CALLING REALM, letting `spender` draw on the calling realm's balance. It does not touch the signing user's allowances.
Register records token under its rlmPath.symbol key and returns that key. Token.ID() carries a trailing sequence id (rlmPath.symbol.<id>) that keeps token identities/events unique, but the registry deliberately keys by rlmPath.symbol so lookups don't need to know the id, and so a realm cannot register two tokens under the same symbol (overwrite/alias guard).
Transfer moves `amount` out of the CALLING REALM's own balance.
Call it non-crossing, forwarding your own `cur`:
1grc20reg.Transfer(0, cur, "gno.land/r/demo/defi/foo20.FOO", to, 100)
TransferFrom spends an allowance with the CALLING REALM as the spender.
Note the allowance direction this implies: `from` must have approved the calling realm, not the signing user. That is the supported way for a realm to move a user's funds — the user grants the realm an allowance, and the realm draws on it as itself, so every debit is one the owner authorized against that specific realm.