Bitcoin Forum
April 18, 2024, 05:08:21 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 81 »
  Print  
Author Topic: Satoshi Dice -- Statistical Analysis  (Read 192864 times)
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 09, 2012, 05:34:57 AM
Last edit: June 11, 2012, 10:39:44 PM by etotheipi
 #1

Here's the latest output:

Quote

Results: 2012-Jun-11 05:49pm

   Address   Target   Should Win |    #Bets |       Win        |       Lose       |      Refunds      | Accounted-for
----------------------------------------------------------------------------------------------------------------------
 1dice1e6p        1      0.00002 |     3964 |      0 (0.00000) |   3810 (1.00000) |    153 (0.04016) |    (1.000)
 1dice1Qf4        2      0.00003 |      231 |      0 (0.00000) |    192 (1.00000) |     39 (0.20312) |    (1.000)
 1dice2pxm        4      0.00006 |      722 |      0 (0.00000) |    699 (1.00000) |     23 (0.03290) |    (1.000)
 1dice2vQo        8      0.00012 |      274 |      0 (0.00000) |    238 (1.00000) |     31 (0.13025) |    (0.982)
 1dice2WmR       16      0.00024 |      208 |      0 (0.00000) |    187 (1.00000) |     21 (0.11230) |    (1.000)
 1dice2xkj       32      0.00049 |      266 |      0 (0.00000) |    256 (1.00000) |     10 (0.03906) |    (1.000)
 1dice2zdo       64      0.00098 |      587 |      0 (0.00000) |    575 (1.00000) |     12 (0.02087) |    (1.000)
 1dice37Ee      128      0.00195 |     1477 |      0 (0.00000) |   1447 (1.00000) |     24 (0.01659) |    (0.996)
 1dice3jkp      256      0.00391 |      665 |      3 (0.00462) |    647 (0.99538) |     11 (0.01692) |    (0.994)
 1dice4J1m      512      0.00781 |     1018 |      7 (0.00694) |   1001 (0.99306) |      3 (0.00298) |    (0.993)
 1dice5wwE     1000      0.01526 |     1479 |     20 (0.01360) |   1451 (0.98640) |      1 (0.00068) |    (0.995)
 1dice61SN     1500      0.02289 |     1294 |     30 (0.02331) |   1257 (0.97669) |      3 (0.00233) |    (0.997)
 1dice6DPt     2000      0.03052 |     1042 |     31 (0.02998) |   1003 (0.97002) |      1 (0.00097) |    (0.993)
 1dice6gJg     3000      0.04578 |     1531 |     76 (0.04990) |   1447 (0.95010) |      5 (0.00328) |    (0.998)
 1dice6GV5     4000      0.06104 |     1034 |     65 (0.06341) |    960 (0.93659) |      2 (0.00195) |    (0.993)
 1dice6wBx     6000      0.09155 |     2644 |    235 (0.08912) |   2402 (0.91088) |      2 (0.00076) |    (0.998)
 1dice6YgE     8000      0.12207 |     2679 |    302 (0.11341) |   2361 (0.88659) |      0 (0.00000) |    (0.994)
 1dice7EYz    12000      0.18311 |     8531 |   1608 (0.18869) |   6914 (0.81131) |      2 (0.00023) |    (0.999)
 1dice7fUk    16000      0.24414 |    18771 |   4537 (0.24193) |  14216 (0.75807) |      3 (0.00016) |    (0.999)
 1dice7W2A    24000      0.36621 |    12379 |   4585 (0.37119) |   7767 (0.62881) |     21 (0.00170) |    (1.000)
 1dice8EMZ    32000      0.48828 |   152129 |  73941 (0.48665) |  77998 (0.51335) |     93 (0.00061) |    (0.999)
 1dice97EC    32768      0.50000 |    84005 |  41997 (0.50029) |  41948 (0.49971) |     30 (0.00036) |    (1.000)
 1dice9wcM    48000      0.73242 |    50569 |  37147 (0.73577) |  13340 (0.26423) |     18 (0.00036) |    (0.999)
 1dice9wVt    64000      0.97656 |     3421 |   3265 (0.97842) |     72 (0.02158) |     76 (0.02277) |    (0.998)
----------------------------------------------------------------------------------------------------------------------
                                 |   350920 |

----------------------------------------------------------------------------------------------------------------------
Total Bets Made:                350920
Cumulative Wagers:             146956.50238462 BTC
Cumulative Rewards:            147354.43403819 BTC
Cumulative Fees Paid:             176.23022500 BTC
Cumulative Unreturned:            121.09935596 BTC
----
SD Profit on Completed Bets :    -695.26123453 BTC
----
Since Satoshi Dice started, there have been:
Blockchain Tx:  1073735  :  SatoshiDice Tx: 690349  (64.3%)
Blockchain MB:  453.9  :  SatoshiDice Tx: 275.3  (60.7%)



I grab satoshidice.com (via urllib.urlopen('http://satoshidice.com')) and pull out all 24 addresses and current odds, etc.   Then, I scan the blockchain starting at block 175k, collecting all bets made to any of the 24 "1dice" addresses, and then look for transactions that spend the wager transaction (because Satoshi dice always spends the wager transaction to send rewards, which helps protect against double-spends).  

All bets are recorded as Win, Lose, or Refund.  If a user sends more than the maximum bet, it will be refunded.  That is a non-negligible number of the bets made, especially the 65000x bets.

The percentages under "win" and "lose" are only for the subset of win/lose bets, i.e.  win/(win+lose) and lose/(win+lose).  Refunds are not counted except to fill int the "accounted-for" field which simply identifies how many bets there are in the blockchain that could be associated with reward/return payments.

The script is using armoryengine.py to scan the blockchain for SatoshiDice bets and rewards, and then compute statistics.  The exact code is at the bottom of sample_armory_code.py in the BitcoinArmory project.  If you want to try running it yourself, you're going to have to check out the project and compile the CppBlockUtils library yourself.  It's really not hard in Linux... it's really hard in Windows...

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
1713416901
Hero Member
*
Offline Offline

Posts: 1713416901

View Profile Personal Message (Offline)

Ignore
1713416901
Reply with quote  #2

1713416901
Report to moderator
1713416901
Hero Member
*
Offline Offline

Posts: 1713416901

View Profile Personal Message (Offline)

Ignore
1713416901
Reply with quote  #2

1713416901
Report to moderator
1713416901
Hero Member
*
Offline Offline

Posts: 1713416901

View Profile Personal Message (Offline)

Ignore
1713416901
Reply with quote  #2

1713416901
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
May 09, 2012, 06:03:00 PM
 #2

Easier access to the blockchain like this for reporting purposes will be very useful.  Thank you for doing this!

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 09, 2012, 06:54:24 PM
 #3

Easier access to the blockchain like this for reporting purposes will be very useful.  Thank you for doing this!

Once I fill it up a little more (with localized statistics and confidence bounds), I might modify the version of Armory I'm running to leverage the already-loaded blockchain.  That way, I can recalculate all the stats every 5 min and update a plot somewhere...

Why?  I don't know...  because I'm a statistician and I can.  Smiley

I guess I spent of lot of months online playing poker, and spent time on the 2+2 forums doing similar analysis to try to identify players or phenomenon that were suspicious.  I guess it's one way to keep the gambling sites honest...

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
nibor
Sr. Member
****
Offline Offline

Activity: 438
Merit: 291


View Profile
May 09, 2012, 10:02:40 PM
 #4

So how many bets a day are they running at?

I thought they started around the 27th April, so based on the 30k you found that is 18 bets (so 36 transactions) a block!

So this one site is responsible for the jump in transactions:
http://blockchain.info/charts/n-transactions-per-block

And I guess the jump in fees:
http://blockchain.info/charts/transaction-fees?timespan=60days&showDataPoints=false&daysAverageString=1&show_header=true&scale=0&address=

apetersson
Hero Member
*****
Offline Offline

Activity: 668
Merit: 501



View Profile
May 09, 2012, 10:13:20 PM
 #5

a quick basic question: would it be possible for any third party to alter these statistics if he was generating 1diceXXX vanity addresses and sending random transactions around?
FreeMoney
Legendary
*
Offline Offline

Activity: 1246
Merit: 1014


Strength in numbers


View Profile WWW
May 09, 2012, 10:14:02 PM
 #6

Easier access to the blockchain like this for reporting purposes will be very useful.  Thank you for doing this!

Once I fill it up a little more (with localized statistics and confidence bounds), I might modify the version of Armory I'm running to leverage the already-loaded blockchain.  That way, I can recalculate all the stats every 5 min and update a plot somewhere...

Why?  I don't know...  because I'm a statistician and I can.  Smiley

I guess I spent of lot of months online playing poker, and spent time on the 2+2 forums doing similar analysis to try to identify players or phenomenon that were suspicious.  I guess it's one way to keep the gambling sites honest...

Do you already have an account at Seals? The only thing easier for me to donate than bitcons is Seals chips!

Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
May 09, 2012, 10:29:38 PM
Last edit: May 13, 2012, 07:13:26 AM by Stephen Gornick
 #7

a quick basic question: would it be possible for any third party to alter these statistics if he was generating 1diceXXX vanity addresses and sending random transactions around?

There are 24 specific 1diceXXX vanity addresses that SatoshiDice generated for their service.

Anyone can create their own 1diceXXX address as well, but that doesn't have any impact on the statistics for those 24.

There is one attack method I'm aware off ... send wagers that are too low (below the minimum) or too high (exceed the maximum) and thus the site sends a refund by returning the payment (and pays the transaction fee, mind you).  The service has ways to deal with that if it becomes a problem (deduct the fee before sending the refund, for example).

The other problem is the dust-like wagers.  The minimums are small enough that the site loses money on the smallest wagers due to transaction fees for the return payment.  That too can be adjusted should it become a problem.

But any transfer within the accepted range is a wager, and thus gets played and the return transaction created.   I can''t think of anything further that this third party could do (or why) to mess with the site.   (well, the Satoshi Dice site does describe other attack vectors, but they are precise and require double spending using Finney attack or other methods.)

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 09, 2012, 11:00:29 PM
 #8

But any transfer within the accepted range is a wager, and thus gets played and the return transaction created.   I can''t think of anything further that this third party could do (or why) to mess with the site.   (well, the Satoshi Dice site does describe other attack vectors, but they are precise and require double spending using Finney attack or other methods.)

I thought all reward transactions included the wager transaction as an input.  Thus, if someone invalidated the wager by double-spending, they'd also invalidate the reward transaction.  And thus it would be pointless.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 09, 2012, 11:39:54 PM
 #9

a quick basic question: would it be possible for any third party to alter these statistics if he was generating 1diceXXX vanity addresses and sending random transactions around?

My script uses the list of 24 addresses from satoshidice.com.  I do not track all addresses that start with "1dice", only the ones from that site.  So that's not an issue.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
May 10, 2012, 09:28:55 AM
 #10

I thought all reward transactions included the wager transaction as an input.  Thus, if someone invalidated the wager by double-spending, they'd also invalidate the reward transaction.  And thus it would be pointless.

But if I can double spend (e.g., Finney attack) to invalidate only my losing wagers, did I really lose?

See:
 - http://bitcointalk.org/index.php?topic=77870.msg882919#msg882919

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 10, 2012, 09:38:44 PM
 #11

I thought all reward transactions included the wager transaction as an input.  Thus, if someone invalidated the wager by double-spending, they'd also invalidate the reward transaction.  And thus it would be pointless.

But if I can double spend (e.g., Finney attack) to invalidate only my losing wagers, did I really lose?

See:
 - http://bitcointalk.org/index.php?topic=77870.msg882919#msg882919

It seems I'm a little late to that conversation.  But it seems to me that the most basic attack for an arbitrary individual is simply trying to broadcast competing transactions at the same time.  But if there's any chance for it to succeed, it has to be done right away before you know if you've won.  Thus, you'd invalidate half of your losers and winners.  Other attacks, while possible, are generally reserved to a select few people who have > 1% of mining power, and to bets that are significantly over the maximum bet rate right now and would not be worth it.

On the other hand, I could see that the time delay could allow SatoshiDice to queue up a few transactions, and rearrange their ordering to try to maximize the number of losing bets made.  They have pre-scripted, verifiable secrets, but there's no way to prove the order in which they received certain transactions.  If this were the case, it would be reflected in the stats...

Btw, I love the SatoshiDice concept.  I really like the transparency of it, too.  It's a very elegant, open setup that gives me confidence they are legit.  But you don't know for sure until you do some hard number crunching Smiley

P.S. -- I just updated the table.  About 35k bets total as of midday May 10.  And the stats looks fairly consistent with expectations...


Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Blazr
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1005



View Profile
May 10, 2012, 10:40:05 PM
 #12

So how much profit has satoshidice made so far?

etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 10, 2012, 10:53:39 PM
 #13

So how much profit has satoshidice made so far?

Good question!  I'll add that to my script... as soon as I finish releasing Armory 0.76 (which will hopefully be tonight!)

I will have to expand the script a little bit, to be able to determine transaction fees.  But it can be done...

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 12, 2012, 09:57:30 PM
 #14

Finally!  Computed total profit/loss for SatoshiDice.  Looks like luck is not really working in their favor at the moment...


Code:
Total Bets Made:           46518
Cumulative Wagers:         17681.71709911 BTC
Cumulative Rewards:        17830.07320735 BTC
Cumulative Fees Paid:         23.16950000 BTC
----
SatoshiDice Profit/Loss:    -171.52560824 BTC


I forgot that all SatoshiDice bets are returned by spending the wager transaction, which is what I should've been searching for when scanning the blockchain.  So I modified the script to search for wagers and then subsequent spends of those wagers...and I got the same results.  Still a few that aren't accounted for, but those shouldn't substantially skew the results...  I suppose it's possible that they were transactions lost during debugging before SD was officially released...? 

For now, I need to get back to Armory development.  But I will keep this table/data updated daily, and eventually add confidence intervals and possibly localized statistics (last week, last 24H, etc).  Possibly figure out how to start auto-updating...

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Sukrim
Legendary
*
Offline Offline

Activity: 2618
Merit: 1006


View Profile
May 12, 2012, 11:01:55 PM
 #15

Google docs have a quite nice API and you could use a spreadsheet there as input data for a graph/chart that would then get auto-updated every 15 minutes or so... Wink

...but you should really rather work on Armory! Cheesy

https://www.coinlend.org <-- automated lending at various exchanges.
https://www.bitfinex.com <-- Trade BTC for other currencies and vice versa.
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 13, 2012, 12:33:33 AM
 #16

I dug a little deeper to find out if the unaccounted-for bets are a real issue with the SD service, or if it's a bug in my script.  I got my script to print out the list of unaccounted-for bets and then I randomly selected 4 of them.  Sure enough, block-explorer says those wagers have not been redeemed yet.  (I doubt anyone cares about the full-list, but I can give it if you're interested):

http://blockexplorer.com/tx/968a692ab98b1f275c635c76be003ab1db9740d0b62f338b270115342ca42f5b
http://blockexplorer.com/tx/931fbfc921291aaa8a4cd3d26e71f513143ddcd3ae97da37ed6db1266a9058fd
http://blockexplorer.com/tx/7719d3f8c1bacd64b8e38a76c6ab1d5f4071ecc06fce82f7409d6a4ec265504b
http://blockexplorer.com/tx/fbb636d434b556cb1c6ae80e0e5a76eec05fb7c85ab7fffcf90fdb5b40b56987


--The sum of all unaccounted-for wagers is 85 BTC.  I didn't do statistics on how that 85 BTC was distributed, so it's tough to tell how much they should've statistically paid out on these 85 BTC.  If they were all losing bets, SD would've paid out another 0.85 BTC.  Upper limit cannot be investigated without more work...

--I would hypothesize that for these 500 of 47,000 unrewarded bets, that they were paid out in another way.  But my previous scanning watched for return tx to the first sending address of the wager transaction, and I got the same results.  This means, that at least there was no automated payout.  Luckily the number of these is low, so probably don't skew the statistics too much, except for the 1dice3jkp which is missing 6% of the bets!

--I also rescanned just since block 179,000 to see if they have gone away (suggesting that it was an early bug in the service).  That's not the case.  There's still plenty of unaccounted-for bets in the last 800 blocks. 

--Therefore, it seems that SatoshiDice occasionally doesn't return bets!  I suppose it is possible that these bets are manually executed after a user does not get his payout and contacts the service.  However, there's no way to know for sure.

By the way, the cumulative wagers at the bottom do include these unrewarded wagers.    The "Cumulative Rewards" is probably artificially low.  SD is probably either slightly more red, or should be if they had to pay out on those unaccounted for bets.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
evoorhees
Legendary
*
Offline Offline

Activity: 1008
Merit: 1021


Democracy is the original 51% attack


View Profile
May 13, 2012, 03:47:54 AM
 #17

So how much profit has satoshidice made so far?

I will tell you it's a negative number so far which has totally ruined my week Wink

etotheipi - I'll have the developer check on your info, thank you for the analysis.
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 13, 2012, 03:56:58 AM
 #18

So how much profit has satoshidice made so far?

I will tell you it's a negative number so far which has totally ruined my week Wink

etotheipi - I'll have the developer check on your info, thank you for the analysis.

Erik,

Sorry for being out of the loop, but are you part of SatoshiDice.com?  I have no idea who's running it, I just know all the transactions are public and it's "easy" to collect the statistics.  And I like statistics Smiley

It looks like the site is down about 80 BTC total since it started.  Though, that number seems to fluctuate significantly -- statistically speaking it takes a long time for a 1% edge to prevail over the statistical variance of the game and 80 BTC is small compared to the 18,500 BTC wagered so far...

I am curious what happened to that 1% of unreturned transactions.  In case you want it, I posted the list of all unreturned transactions to my public dropbox folder.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
tigereye
Member
**
Offline Offline

Activity: 79
Merit: 10



View Profile
May 13, 2012, 05:46:40 PM
 #19

Two of my bets are listed on your list of unreturned bets. (5BTC and 1.9995BTC)

Hope I get a reply eventually Smiley

--TE

If my posts have helped, consider leaving a tip! 1AE5e56ivvaGMJJmLrZoLgiZXPx93CddyA
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
May 13, 2012, 06:48:50 PM
 #20

Two of my bets are listed on your list of unreturned bets. (5BTC and 1.9995BTC)

Hope I get a reply eventually Smiley

--TE


It looks like whatever the problem was, it's fixed now.  Or very close to fixed.  I just re-ran my script, and there's 100% accounted-for on almost all rows.  Any remaining are probably live bets that naturally haven't had time to be paid out.

If I had anything to do with that getting fixed (like the script or tx list), I'd ask for a donation.  But it looks like SatoshiDice is now down 250 BTC with all the extra payouts  Undecided  Not the best time to lobby for donations...


Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Pages: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 81 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!