Payment actions on Bogeme are submitted in transactions that call our smart contract on Base. Value moves in USDC directly from your wallet to the recipient (and treasury for the platform fee) in that same transaction.
The platform never holds your keys and never takes custody of your funds: every operation is signed by your own wallet (an embedded smart account or your linked external Web3 wallet).
The contract records supported actions – donations, tips, subscriptions (including upgrades and auto-renewals), one-time post unlocks and paid message unlocks – and emits an event for each one, carrying the gross / net / fee triple. Those events feed the product surface you see: stream alerts, transaction history, content entitlements.
Auto-renewal is initiated only by a session key the user authorized in advance – the contract never renews a subscription on its own initiative.
It also enforces the payment rules on every transaction you sign: amount bounds (1 USDC to 1,000,000 USDC), no self-payments, and subscription duration limits (1–36 months). Two safety mechanisms protect the contract itself: a re-entrancy guard on every payment function, and an owner-only emergency pause that can halt all payments at once.
Platform fees are routed to the treasury as a separate USDC transfer inside the same transaction (from your wallet to the recipient and from your wallet to the treasury). The contract does not maintain a deposit balance, a vault, or a per-user account.
Our Smart Contract is deployed behind a UUPS proxy. The contract address stays stable; the underlying logic contract can be replaced by the owner through an upgrade. Storage layout is preserved across upgrades by design (an __gap__ is reserved for future fields), but any upgrade is a trust boundary you should be aware of.
The contract has not been independently audited. The code can contain bugs. Do not route amounts you are not prepared to lose.
Bogeme is currently running on Base Sepolia testnet. Testnet USDC has no real-world value; balances and history shown on the platform reflect testnet state and will not automatically migrate when mainnet is enabled.
This page reflects the current deployment. Values are read from contracts/deployment-info.json and are updated whenever the contract is redeployed or upgraded.