<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1.0"/>
<title>Are you CSW?</title>
<meta name="description" content="We are all CSW."/>
<link rel="canonical" href="https://www.areyoucsw.com"/>
<style>
body {margin: 5% auto; background: #f2f2f2; color: #444444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.8; text-shadow: 0 1px 0 #ffffff; max-width: 73%;}
code {background: white;}
a {border-bottom: 1px solid #444444; color: #444444; text-decoration: none;}
a:hover {border-bottom: 0;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="./w2ui-1.5.rc1.min.css" />
<script type="text/javascript" src="./w2ui-1.5.rc1.min.js"></script>
</head>
<body>
<header>
<h1>Are <i>you</i> Craig Wright?</h1>
<aside>Seriously, you <i>might</i> be.</aside>
</header>
<h2><strong>How many addresses legally filed by CSW can we prove he doesn't own?</strong></h2>
<p>On <i>May 21 2020</i>, CSW published a new <a href="https://www.courtlistener.com/recap/gov.uscourts.flsd.521536/gov.uscourts.flsd.521536.512.7.pdf">list</a> of addresses he allegedly owns.<br> A few days later, an anonymous OG Miner <a href="https://paste.debian.net/plain/1148565">posted</a> a proof that (<i>probably</i>) someone else owned some of those addresses. Following this logic, <b>how many other addresses can we prove that CSW doesn't own?</b></p>
<h2>Claimed addresses: <span id='claimed_data'></span></h2>
<h2>Address List</h2>
<div id="grid" style="width: 100%; height: 50vh;"></div>
<h2>I'm an OG Miner! How can I add my addresses?</h2>
You can claim addresses by sending an anonymous mail to the project <a href="https://lists.sr.ht/~pierrenn/areyoucsw-devel">mailing list</a>. Follow the instructions in the project's <a href="https://sr.ht/~pierrenn/areyoucsw/">readme</a>. Thank you, miner!
<hr>
<h3>BTC donations are appreciated!</h3>
<p>Thanks for buying me a coffee! ₿ bc1qsnwjz0uvfuykw6uc0qvt95rllghwhdsd685jpu</p>
</body>
<script>
$(function () {
const numFormat = new Intl.NumberFormat('en-US')
const perFormat = new Intl.NumberFormat('en-US', { maximumFractionDigits: 3 })
let tulip;
let proofs;
$.when(
$.getJSON('./data/tulip.out', function(data) {
tulip = Object.keys(data).map((key, idx) => {
return { recid: idx+1,
height: data[key].cb_h,
cbtime: new Date(data[key].cb_ts*1000),
address: `<a href="https://btc.com/${key}">${key}</a>`,
amount: data[key].amnt,
last: data[key].last_ts == 0 ? new Date(data[key].cb_ts*1000) : new Date(data[key].last_ts*1000),
lasttx: data[key].last_ts == 0 ? `<a href="https://btc.com/${data[key].cb_tx}">${data[key].cb_tx}</a>` :
`<a href="https://btc.com/${data[key].last_tx}">${data[key].last_tx}</a>`,
numtx: data[key].num_tx,
claimed: data[key].proof
}
})
}),
$.getJSON('./data/proofs.out', function(data) {
proofs = data
})
).then(function() {
let total_address = tulip.length
let claimed_address = 0
let records = tulip.map(e => {
let sig = undefined;
if (e.claimed === null) {
e.claimed = 'No'
return e
}
if (e.claimed !== null) {
sig = proofs[e.claimed.file].signatures[e.claimed.idx]
if (sig.is_checked && sig.is_tulip) {
claimed_address += 1
e.claimed = `Yes <a href="${proofs[e.claimed.file].filename}">(${sig.proof})</a>`
} else {
e.claimed = 'No'
}
}
return e
})
const per = 100*claimed_address/total_address
$('#claimed_data').text(`${numFormat.format(claimed_address)} / ${numFormat.format(total_address)} (${perFormat.format(per)}%)`)
$('#grid').w2grid({
name: 'grid',
header: 'CSW\'s Tulip Addresses',
show: {
toolbar: true,
footer: true
},
columns: [
{ field: 'height', caption: 'Coinbase Height', size: '5%', sortable: true},
{ field: 'cbtime', caption: 'Coinbase Time', size: '10%', sortable: true},
{ field: 'address', caption: 'Address', size: '15%', sortable: true },
{ field: 'amount', caption: 'Unspent sats (w/o CB)', size: '10%', sortable: true },
{ field: 'lasttx', caption: 'Last TX ID', size: '10%', sortable: true },
{ field: 'last', caption: 'Last TX time', size: '10%', sortable: true },
{ field: 'numtx', caption: '# of TXs', size: '10%', sortable: true },
{ field: 'claimed', caption: 'Has been claimed?', size: '20%', sortable: true }
],
searches: [
{ field: 'height', caption: 'Coinbase Height', type: 'text'},
{ field: 'cbtime', caption: 'Coinbase Time', type: 'date'},
{ field: 'address', caption: 'Address', type: 'text' },
{ field: 'amount', caption: 'Unspent sats', type: 'int' },
{ field: 'lasttx', caption: 'Last TX ID', type: 'text' },
{ field: 'last', caption: 'Last TX time', type: 'date' },
{ field: 'numtx', caption: '# of TXs', type: 'int' },
{ field: 'claimed', caption: 'Has been claimed?', type: 'text' }
],
sortData: [{ field: 'height', direction: 'ASC' }],
records
});
})
});
</script>
</html>