MVP for the GASOK application (Mass Adoption track). A single QR code or link lets anyone send an instant, low-fee on-chain tip/payment on GIWA Sepolia (Ethereum L2) — no account, no signup, no custody. Built for cafes, street vendors, creators, and event organizers who want "tap to pay" simplicity with the transparency of on-chain settlement.
| File | Purpose |
|---|---|
GiwaTap.sol |
The on-chain contract. One function (tap) forwards ETH instantly to a recipient and logs sender, amount, optional message, and timestamp. Non-custodial — the contract never holds a balance between calls. |
GiwaTap.abi.json |
Compiled ABI (generated locally with solc 0.8.24, optimizer on, 200 runs). Compiles clean with zero errors/warnings. |
index.html |
The entire app frontend — one file, no build step. Generates a QR code / shareable link for any address, connects MetaMask, auto-adds/switches to GIWA Sepolia, sends tips, and shows a live history feed. |
- Go to Remix IDE.
- Create a new file
GiwaTap.soland paste in the contents ofGiwaTap.solfrom this folder. - Compile tab → select compiler
0.8.24(or any0.8.x) → Compile. - Deploy & Run tab → Environment:
Injected Provider - MetaMask. - In MetaMask, make sure you're on GIWA Sepolia:
- Chain ID:
91342 - RPC URL:
https://sepolia-rpc.giwa.io/ - Currency symbol:
ETH - Block explorer:
https://sepolia-explorer.giwa.io - (Fund your wallet first from the GIWA Sepolia faucet — linked from the docs/explorer site — since you need testnet ETH to deploy and to send tips.)
- Chain ID:
- Click Deploy, confirm in MetaMask. Copy the deployed contract address from Remix.
Open index.html, find this line near the top of the <script> block:
const CONTRACT_ADDRESS = "0x0000000000000000000000000000000000dEaD"; // <-- REPLACE after deployReplace it with your deployed address. That's it — no build step, no dependencies to install.
Until you do this, the app still works end-to-end in a fallback mode: it sends a plain ETH transfer instead of calling the contract, so you can demo the QR/link/send flow immediately and wire in the contract (for on-chain messages + history) right after.
Any static file host works — GitHub Pages, Vercel, Netlify, or just open index.html locally.
For local testing:
python3 -m http.server 8080
# open http://localhost:8080/index.html- Receive tab — a cafe/creator connects their wallet (or pastes an address), gets an instant
QR code + shareable link (
?to=0xADDRESS). - Send tab — whoever scans the QR lands with the recipient pre-filled, connects MetaMask (auto-prompted to add/switch to GIWA Sepolia if needed), enters an amount and optional message, and taps Gönder. Funds land in the recipient's wallet in the same transaction.
- Every tip is logged on-chain (
Tippedevent) and shown in a live feed on both tabs — provable, permanent, and shareable payment history with zero backend/server required.
- Real-world use case, zero learning curve: scan → send → done. No wallet jargon exposed beyond the one MetaMask popup users already know from any dApp.
- GIWA Wallet-compatible by design: the app only depends on the standard
window.ethereum/ EIP-1193 provider interface, so it works with MetaMask today and the GIWA Wallet the moment it ships, without code changes. - Non-custodial & auditable: the contract never custodies funds; every tip is a public event on GIWA Sepolia, viewable on the explorer.
- Cheap to run at scale: GIWA's L2 fees make micro-tips (a few cents) economically viable, which isn't true on L1 Ethereum.
- Phase 2 (MVP → testnet users): add ENS-style memorable handles instead of raw addresses, static QR stickers for physical venues (cafes, markets), basic analytics dashboard for recipients (total received, top supporters).
- Phase 3 (productize): GIWA Wallet in-app placement, batched/recurring tips (subscriptions), fiat on-ramp for first-time senders, merchant dashboard with CSV export for accounting.
- Growth: partner with a handful of Korea Blockchain Week vendors / creators for a live on-site pilot at demo day.
- Contract compiled locally with
solc@0.8.24: 0 errors, 0 warnings, optimizer enabled (200 runs). Bytecode verified reproducible fromGiwaTap.solas committed here. - Frontend tested headlessly (Playwright/Chromium) against the real
ethers@6.13.4andqrcodejs@1.0.0packages: QR generation, shareable-link construction, and?to=deep-link pre-fill all verified working with zero console errors. - No backend, no database, no API keys required to run the MVP — everything reads/writes directly against GIWA Sepolia.