Soroban smart contracts for the GlobeWallet protocol on the Stellar network.
| Contract | Description |
|---|---|
globe-wallet |
Core wallet registry — asset whitelist, spend limits, admin governance |
token-wrapper |
Allowance-gated token transfers for protocol integrations |
| Layer | Technology |
|---|---|
| Platform | Stellar / Soroban |
| Language | Rust (#![no_std]) |
| SDK | soroban-sdk 21.x |
| Build | cargo + soroban-cli |
Install the Soroban CLI:
cargo install --locked soroban-cliBuild all contracts:
cargo build --target wasm32-unknown-unknown --releaseRun tests:
cargo testDeploy to testnet (requires funded keypair):
soroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/globe_wallet.wasm \
--source <SECRET_KEY> \
--network testnet// Admin
initialize(env, admin)
admin(env) -> Address
transfer_admin(env, current, new_admin)
// Asset registry (self-sovereign, user.require_auth())
add_asset(env, user, asset: AssetInfo) -> Result<()>
remove_asset(env, user, asset_code: String) -> Result<()>
get_assets(env, user) -> Vec<AssetInfo>
// Spend limits
set_spend_limit(env, user, asset_code, limit: i128) -> Result<()>
get_spend_limit(env, user, asset_code) -> i128
record_spend(env, user, asset_code, amount) -> Result<()>- Limit is per-user, per-asset, daily (86 400-second window from ledger timestamp).
limit = 0means unlimited.record_spendis called from any payment path; rejects withSpendLimitExceededif cumulative daily spend would exceed the limit.- Day window resets automatically — no manual reset required.
Provides approve / allowance / transfer_from semantics on top of the
Soroban token interface, enabling the globe-wallet contract to move tokens
on behalf of users within a session allowance.
| Contract | Topic | Data |
|---|---|---|
| globe-wallet | initialized |
admin |
| globe-wallet | admin_transferred |
(old, new) |
| globe-wallet | asset_added |
(user, asset_code) |
| globe-wallet | asset_removed |
(user, asset_code) |
| globe-wallet | spend_limit_set |
(user, asset_code, limit) |
| globe-wallet | spend_recorded |
(user, asset_code, amount, total, limit) |
| token-wrapper | approved |
(owner, spender, amount, expiry) |
| token-wrapper | transfer_from |
(spender, from, to, amount) |
Orbit-Wal/Globe-Wallet— Web frontendOrbit-Wal/mobile— React Native appOrbit-Wal/backend— REST API