Demo: https://mysoroban.xyz/dapp
Migrate Stellar G-addresses to Soroban Smart Accounts (C-addresses) with passkey authentication.
g2c provides smart contracts, a web wallet, and an onboarding SDK that let users create passkey-secured C-addresses funded from any G-address or CEX withdrawal — in a single atomic transaction.
- User opens the g2c wallet and funds an ephemeral G-address
- Wallet prompts passkey creation via WebAuthn
- Wallet submits one atomic transaction: Factory deploys the Smart Account + funds move from G to C
- User now has a passkey-secured C-address — the G-address is discarded
After onboarding, dApps send unsigned transactions to the wallet (via URL or refractor.space). The user signs with their passkey, and the wallet submits — optionally via the OZ Relayer for gas abstraction.
All passkey verification is on-chain.
| Contract | Description |
|---|---|
g2c-factory |
Deploys Smart Accounts with a WebAuthn signer. create_account(funder, key) + get_c_address(funder). Lazy-deploys a shared verifier. |
g2c-smart-account |
OZ SmartAccount + CustomAccountInterface + ExecutionEntryPoint. Context rules for scoped session keys and policies. |
g2c-webauthn-verifier |
Stateless secp256r1/P-256 Verifier. Deploy once, shared across all accounts. |
All contracts build on OpenZeppelin's stellar-accounts.
Requires just, Rust, and the Stellar CLI.
just build-contracts # Build and optimize Soroban WASM
just build # Build all workspace crates (native)
just test # Run all workspace tests
just check # cargo fmt --check + cargo clippy
just fmt # Format all codecontracts/
factory/ # Account deployment orchestrator
smart-account/ # Passkey-authenticated smart account
webauthn-verifier/ # On-chain P-256 signature verifier
crates/
integration-tests/ # Cross-crate integration tests
frontend/ # Wallet web app
- ARCHITECTURE.md — Technical architecture, data flows, and security model
- APPLICATION.md — SCF Build Award application
Apache