Add your Will Executor
-
Enter your server URL. It will be checked online before it appears in the list.
+
Enter your server URL. It will appear in the list once your deposit is confirmed (typically about 30 minutes).
@@ -313,7 +301,7 @@ footer a{color:var(--accent);text-decoration:none}
You are about to add this server:
-
Make sure the link above works correctly before paying. No refunds or URL changes after payment.
+
Make sure the link above works correctly before paying. No refunds after payment. URL changes require proof of ownership — see the Terms .
@@ -332,7 +320,7 @@ footer a{color:var(--accent);text-decoration:none}
Contact —
Server —
- Next deposit —
+ Next renewal —
Share invoice
@@ -344,10 +332,11 @@ footer a{color:var(--accent);text-decoration:none}
How ranking works
-
Bid-based ranking: higher contributions rank higher.
-
Deposit threshold 50,000 sats
-
Plugin integration automatic
-
Early-adopter guarantee 12 months
+
Ordered by excess donated, then total paid, then base fee (lower first), then WeTime points.
+
Yearly fee 50,000 sats
+
Listing period 365 days
+
Renewal window from 6 months before expiry
+
Plugin integration automatic
@@ -362,13 +351,13 @@ footer a{color:var(--accent);text-decoration:none}
02
Ranking System
-
This leaderboard operates on a bid-based ranking system where higher contributions result in better positioning.
+
This leaderboard is ordered by excess donated (over the yearly fee), then total amount paid, then lower base fee, then WeTime points.
03
-
Early Adopter Incentives
-
To support the project's initial launch phase, we plan to maintain the first Will Executor servers for a minimum of 12 months, rewarding early participants. Subsequently, premium positions will be available through an auction system based on protocol revenue generation.
+
Listing & Renewal
+
A flat yearly fee buys 365 days of presence in the list, starting when your payment reaches 3 confirmations. You can renew for one additional year at any time from 6 months before expiry; listings that are not renewed are removed at expiry. See the Terms for details.
@@ -385,6 +374,7 @@ footer a{color:var(--accent);text-decoration:none}
@@ -397,18 +387,6 @@ let minAmount = 50000;
const fmt = n => (n != null ? Number(n).toLocaleString('en-US') : '—');
const trunc = (s, m=40) => s && s.length > m ? s.slice(0, m) + '…' : s;
-const statusMap = {
- 'OK': 'Health check passed',
- 'TIMEOUT': 'Connection timeout',
- 'CONNECTION': 'Connection error',
- 'STATUS': 'HTTP error',
- 'WRONG REPLY': 'Invalid JSON response',
- 'REQUEST': 'Request error',
- 'BODY': 'Body read error',
- 'DECODE': 'Decode error',
- 'KO': 'Generic error'
-};
-
function getChain() {
const btn = document.querySelector('#chainSeg [aria-pressed="true"]');
return btn ? btn.dataset.c : 'bitcoin';
@@ -416,9 +394,7 @@ function getChain() {
function getFiltered() {
return allServers
- .filter(d => withTor ? true : !d.onion)
- .filter(d => (d.url + " " + (d.info||"")).toLowerCase().includes(q.toLowerCase()))
- .sort((a, b) => (b.last_block||0) - (a.last_block||0) || (b.points||0) - (a.points||0) || (b.count_win||0) - (a.count_win||0) || (a.base_fee||0) - (b.base_fee||0) || (b.version||'').localeCompare(a.version||''));
+ .filter(d => (d.url + " " + (d.info||"")).toLowerCase().includes(q.toLowerCase()));
}
function render() {
@@ -462,11 +438,12 @@ function render() {
`);
});
- const online = allServers.filter(d => d.status === "online" || d.status === "OK").length;
+ const online = allServers.filter(d => d.status === "OK").length;
document.getElementById('s-online').textContent = online;
document.getElementById('s-total').textContent = allServers.length;
- const top = getFiltered()[0];
- document.getElementById('s-block').textContent = top ? fmt(top.last_block) : '—';
+ // Highest known block across all servers (the list is ranked by fee/points, not by height)
+ const maxBlock = allServers.reduce((m, d) => Math.max(m, d.last_block || 0), 0);
+ document.getElementById('s-block').textContent = maxBlock ? fmt(maxBlock) : '—';
}
async function fetchData() {
@@ -592,7 +569,7 @@ document.getElementById('terms-accept').addEventListener('click', async function
const balStr = result.balance != null ? fmt(result.balance) : null;
const uncStr = result.unconfirmed_balance != null ? fmt(result.unconfirmed_balance) : null;
document.getElementById('iv-balance').textContent = balStr ? (uncStr ? balStr + ' (' + uncStr + ')' : balStr) : '—';
- document.getElementById('iv-donations').textContent = result.donations != null ? fmt(result.donations) : '—';
+ document.getElementById('iv-donations').textContent = result.donation != null ? fmt(result.donation) : '—';
document.getElementById('iv-contact').textContent = document.getElementById('contact').value.trim() || '—';
const weLink = result.id ? `/weinfo/${result.chain || chain}/${result.id}` : null;
const weinfoEl = document.getElementById('iv-weinfo');
@@ -613,13 +590,13 @@ document.getElementById('terms-accept').addEventListener('click', async function
document.getElementById('iv-nextdep').textContent = result.next_deposit_date || '—';
document.getElementById('iv-nextdep-row').style.display = 'flex';
document.getElementById('iv-status').className = 'ok-line';
- document.getElementById('iv-status').textContent = 'Server is already listed. Next deposit: ' + (result.next_deposit_date || '—');
+ document.getElementById('iv-status').textContent = 'Server is already listed. Next renewal: ' + (result.next_deposit_date || '—');
const inv = document.getElementById('invoice');
inv.classList.add('show');
inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
return;
}
- const amountSats = result.amount != null ? result.amount : minAmount;
+ const amountSats = result.min_amount != null ? result.min_amount : minAmount;
const amountBtc = (amountSats / 1e8).toFixed(8).replace(/\.?0+$/, '');
const invoiceuri = `bitcoin:${result.address}?amount=${amountBtc}&label=BAL&message=Order+For+url+%26+${encodeURIComponent(url)}`;
const qrEl = document.getElementById('qrcode');
@@ -649,7 +626,7 @@ document.getElementById('terms-accept').addEventListener('click', async function
}
};
document.getElementById('iv-status').className = 'ok-line';
- document.getElementById('iv-status').textContent = '✓ Server added: ' + serverUrl + '. Pay the invoice to complete.';
+ document.getElementById('iv-status').textContent = '✓ Server verified: ' + serverUrl + '. Pay the invoice — it will be listed after 3 confirmations.';
const inv = document.getElementById('invoice');
inv.classList.add('show');
inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });