Rehearsal faucet: self-serve test-POL so members can actually buy
Fresh wallets hold 0 POL on the rehearsal chain, so nobody could complete a buy. - Oracle: the mock POL/USD feed had gone ~49h stale (quoteWei reverted "Stale oracle" -> catalog costWei null -> packages showed "paused"). Refreshed it and installed a 15-min heartbeat cron so it stays fresh; quotes now return. - New /api/my/faucet (rehearsal-only, rate-limited) tops a connected wallet up to 10 test-POL via anvil_setBalance (no key). "Get test POL" card in the Wallet pane wires it. Members can now fund, buy, and see payouts move on the ledger. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
$('boRehearsal').hidden = false;
|
||||
$('boRehearsal').innerHTML = '<b>Testnet rehearsal</b> · ' + c.chainName;
|
||||
}
|
||||
if (c.rehearsal && $('faucetCard')) $('faucetCard').hidden = false;
|
||||
} catch (e) {}
|
||||
|
||||
async function api(path, body) {
|
||||
@@ -1191,6 +1192,14 @@
|
||||
IAP.status('Wallet linked. Earnings pay there from now on.', 'ok');
|
||||
await render();
|
||||
}));
|
||||
if ($('faucetBtn')) $('faucetBtn').addEventListener('click', busy($('faucetBtn'), async () => {
|
||||
IAP.status('Connect your wallet to receive test POL…');
|
||||
const addr = await IAPWallet.connect();
|
||||
const r = await api('/api/my/faucet', { address: addr });
|
||||
const pol = (Number(BigInt(r.balanceWei) / (10n ** 15n)) / 1000).toFixed(3);
|
||||
$('faucetInfo').textContent = 'Funded — balance ' + pol + ' test-POL. Head to Buy packages.';
|
||||
IAP.status('Your wallet now holds test POL. Go buy a package.', 'ok');
|
||||
}));
|
||||
$('activateBtn').addEventListener('click', busy($('activateBtn'), async () => {
|
||||
const me = await (await fetch('/api/me')).json();
|
||||
IAP.status('Confirm the free activation in your wallet…');
|
||||
|
||||
Reference in New Issue
Block a user