Bitcoin Forum

Economy => Gambling => Topic started by: Come-from-Beyond on October 10, 2012, 04:57:22 PM



Title: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on October 10, 2012, 04:57:22 PM
It's a Java application. Requires http://code.google.com/p/json-simple/ to build and parse JSON.

Code:
// (c) 2012 Come-from-Beyond

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

public final class SDMB
{
public static void main(String[] args)
{
try
{
Authenticator.setDefault(new Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication ("username", "password".toCharArray());
}
});

while (true)
{
double bet=((double)(balance(1)/135))/100000000;
if (bet<0.01)
{
Thread.sleep(1000);
continue;
}
for (int i=0; i<7; i++)
{
final long balance1=balance(0);

final JSONObject request=new JSONObject();
request.put("method", "sendtoaddress");
final JSONArray params;
(params=new JSONArray()).add("1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp");
params.add(bet);
request.put("params", params);
sendRequest(request);

final long balance2=balance(0);

long balance3;
do
{
Thread.sleep(1000);
} while ((balance3=balance(0))<=balance2);

if (balance3>=balance1) break;

bet=bet+bet;
}
}
}
catch (final Exception e)
{
System.out.println(e.toString());
}
}

public static JSONObject sendRequest(final JSONObject request) throws Exception
{
final HttpURLConnection connection;
(connection=(HttpURLConnection)(new URL("http://localhost:9876")).openConnection()).setRequestMethod("POST");
connection.setDoOutput(true);
connection.connect();
final OutputStream outputStream;
(outputStream=connection.getOutputStream()).write(request.toJSONString().getBytes("UTF-8"));
outputStream.close();

final InputStream inputStream=connection.getInputStream();
final byte[] response=new byte[65536];
int ptr=0;
int numberOfBytes;
do
{
if ((numberOfBytes=inputStream.read(response, ptr, 65536-ptr))>=0) ptr+=numberOfBytes;
} while (numberOfBytes>=0);
inputStream.close();

connection.disconnect();

return (JSONObject)JSONValue.parse(new String(response, 0, ptr, "UTF-8"));
}

public static long balance(final int numberOfConfirmations) throws Exception
{
final JSONObject request=new JSONObject();
request.put("method", "listaccounts");
final JSONArray params;
(params=new JSONArray()).add(numberOfConfirmations);
request.put("params", params);
return (long)(((Double)((JSONObject)sendRequest(request).get("result")).get("")).doubleValue()*100000000);
}
}

It starts with 1/128 of current confirmed balance as an initial bet and then double amount if lose. I divide by 135, not 128, to have some BTC for tx fees:
Quote
double bet=((double)(balance(1)/135))/100000000;

Quote
if (bet<0.01)
...is used to avoid too low bets.

I tested it on 2000 bets using "lessthen 32000". Went from 0 BTC to 14 BTC and back to 0 BTC. At the beginning I used my own bitcoins which were removed from the capital when I got 10 BTC from SatoshiDice. After my bitcoin-qt.exe had reached 1500 thx it started to lag much. After 2000 thx I became bored and made a couple of big bets manually until I lost all won money. Nothing surprising, but at least miners earned 1 BTC as fees.

NB: In the long run SatoshiDice wins so don't miss a right moment to stop.  ;)


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on October 12, 2012, 05:06:18 PM
I decided to add a compiled version of the bot for those who r unfamiliar with Java: http://www.4shared.com/file/UeCqpEXa/MartinBot.html

How to use
1. Download and install Java Runtime Environment 7 (JRE): http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. Launch bitcoin-qt.exe in server mode:
Code:
bitcoin-qt.exe -server -rpcport=9876 -rpcuser=MYUSERNAME -rpcpassword=MYPASSWORD -rpcallowip=127.0.0.1
3. Launch the bot:
Code:
java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 MYUSERNAME MYPASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.1 2.0

Last 2 parameters are starting bet (0.1) and quotient (2.0) for next bets in case of loss.

To stop the bot press [CTRL]+[C].


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: SätöshiTable on October 12, 2012, 06:01:47 PM
nice job, maybe build some random delays into the bot,
could help to win more


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: 22bones on October 13, 2012, 02:48:07 AM
Nice work.  I ran a slightly modified version of this just now, and eventually ran out of coins when it lost the 'less than 32000' game 14 times in a row! (on btcdice.com)  Only lost a small amount of BTC but it was fun.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on October 13, 2012, 05:51:15 AM
it lost the 'less than 32000' game 14 times in a row!

WOW!


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Gyrsur on October 13, 2012, 09:40:45 PM
please don't play this all in any way. no chance at all. prevent loss from newbies.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on October 14, 2012, 07:15:32 PM
The chance is above 0, the key point is to leave the game at the right moment. Just to prove it I played SatoshiDice with Martingale tactics while watching Red Bull Stratos. I used 10 spare bitcoins and got 20 bitcoins back - https://blockchain.info/address/1CDoCox8dX9SRzxwRRxLRTsFJ2b4XThYvX.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: 🏰 TradeFortress 🏰 on October 14, 2012, 10:37:51 PM
In addition, you will probably lose everything if you went on.

But thanks for making the bot - gambling it NOT A WAY TO GET BITCOINS, it's for entertainment.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: squid on October 14, 2012, 10:56:25 PM
great, i'll have to throw away some money later


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: pyromaniac on October 30, 2012, 04:33:23 PM
Here is my preset for this bot. Works much better than mining. About 0.5 BTC per hour with minimal risk.  ;)
Quote
java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 LOGIN PASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: jasinlee on November 02, 2012, 05:07:26 AM
Attempted to test it but kept getting

Code:
java.net.ConnectException: Connection refused: connect


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 02, 2012, 06:19:17 AM
Attempted to test it but kept getting

Code:
java.net.ConnectException: Connection refused: connect

Have u launched bitcoin-qt.exe this way:

Code:
bitcoin-qt.exe -server -rpcport=9876 -rpcuser=MYUSERNAME -rpcpassword=MYPASSWORD -rpcallowip=127.0.0.1

?


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: jasinlee on November 02, 2012, 07:41:23 AM
Yeah it worked without error after I made th .conf . Just the java is fighting me.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 02, 2012, 08:18:33 AM
Yeah it worked without error after I made th .conf . Just the java is fighting me.

Unfortunatelly, I have to work on ur computer to find the issue. Check firewall settings, I use MartinBot.jar by myself without any problems.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: JoelKatz on November 02, 2012, 08:25:54 AM
please don't play this all in any way. no chance at all. prevent loss from newbies.
Actually, if you configure it correctly, you are muck more likely to win than to lose. The problem is, if you do lose, you lose much, much more than you tried to win.

It's like a reverse lottery where 99.9% of the people get $1. But one out of 1,000 people get tortured to death. Of course, your "expected profit" is negative. However, you are more likely to win than to lose.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 02, 2012, 08:40:43 AM
please don't play this all in any way. no chance at all. prevent loss from newbies.
Actually, if you configure it correctly, you are muck more likely to win than to lose. The problem is, if you do lose, you lose much, much more than you tried to win.

It's like a reverse lottery where 99.9% of the people get $1. But one out of 1,000 people get tortured to death. Of course, your "expected profit" is negative. However, you are more likely to win than to lose.


I use such a strategy:

In the morning I deposit 10 BTC and launch the bot.
In the evening I shut the bot down.


Sometimes I see 0 BTC on the balance, but in most cases there are like 20 BTC.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Gilboa on November 02, 2012, 05:20:57 PM
Here is my preset for this bot. Works much better than mining. About 0.5 BTC per hour with minimal risk.  ;)
Quote
java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 LOGIN PASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3
Is that right? Was that 0.5 BTC per hour a typo?


I plan to use these settings below as was suggested above:

java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 LOGIN PASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3

Does this look good or would you all suggest better presets?


Thanks for the app. I was going to use the martingale R app posted in the "How to Last Longer Thread" but I like the automated functionality of your bot better.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: pyromaniac on November 02, 2012, 05:42:26 PM
Here is my preset for this bot. Works much better than mining. About 0.5 BTC per hour with minimal risk.  ;)
Quote
java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 LOGIN PASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3
Is that right? Was that 0.5 BTC per hour a typo?
Yep. Absolutely.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: JoelKatz on November 02, 2012, 11:19:19 PM
I use such a strategy:

In the morning I deposit 10 BTC and launch the bot.
In the evening I shut the bot down.


Sometimes I see 0 BTC on the balance, but in most cases there are like 20 BTC.
If you specifically configure it for double or nothing, you are much better off just placing a single bet. The Martingale strategy only works if you are trying to win an amount much smaller than the total amount you have to bet.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Gilboa on November 05, 2012, 08:46:28 PM
Is the bot supposed to run continuously? After a loss the bot doesn't do anything. It also only submits a second bet if there's a win. I have 5 BTC in my wallet so that might be to low?


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 06, 2012, 05:26:28 AM
Is the bot supposed to run continuously? After a loss the bot doesn't do anything. It also only submits a second bet if there's a win. I have 5 BTC in my wallet so that might be to low?

It's supposed to run continuously. But sometimes, especially when a new block is found, Satoshi's client doesn't respond. Perhaps it's a bug in my bot, but there are only a few lines of code and most of times the bot sends hundreds bets before it stops, so I suspect that something wrong in the client. Also the bot is supposed to be launched with a fresh wallet with 1 account only.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: nokru on November 06, 2012, 06:39:49 PM
Quote
java.net.ProtocolException: Server redirected too many  times (20)

something i can tweak, or do i have to wait and drink a cup of tea?


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 06, 2012, 07:22:03 PM
Quote
java.net.ProtocolException: Server redirected too many  times (20)

something i can tweak, or do i have to wait and drink a cup of tea?

Check that username, password and url are correct.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Gyrsur on November 13, 2012, 02:30:16 PM
almost everything lost? ;)


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 13, 2012, 03:56:03 PM
almost everything lost? ;)

Me? No. Won 50 BTC during last 2 days playing without bot, but got bored. I'm waiting for a gambling game with co-operative gameplay, it's in betatesting stage now.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 15, 2012, 02:00:49 PM
Here is my preset for this bot. Works much better than mining. About 0.5 BTC per hour with minimal risk.  ;)
Quote
java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 LOGIN PASSWORD 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3

I decided to try ur tactics: more losses in a row, higher a reward at the end. As a result I won more than 100 BTC after a couple of hours. Thx for the idea.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Gyrsur on November 15, 2012, 02:24:01 PM
you must be rich now!  :P


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 15, 2012, 02:35:08 PM
you must be rich now!  :P

Aye!
Unfortunately, SatoshiDice has hard limit of 250 BTC per bet, so I can't become insanely rich...  :P


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: aadje93 on November 20, 2012, 03:26:26 PM
Hi,

i tryed your bot. But i keep getting the error

connection refused: connect

i made a config file with

server=1
rpcport=9876
user=(not going to tell)
password=(not going to tell)
allowip=127.0.0.1

but it will not allow me to use the java bot.. Tryed to disable antivirus and firewall and still not working..


Although i can read the RPC part with another program.. (can get balance in php script)

EDIT:

or is it possible because my wallet is password protected?

EDIT2

tryed with an blockchain.info wallet

getting nullpointer exception (download the 2nd post .java file)


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 20, 2012, 04:07:32 PM
i made a config file with

server=1
rpcport=9876
user=(not going to tell)
password=(not going to tell)
allowip=127.0.0.1
Try to use command line parameters, not config file. Something like
Code:
bitcoin-qt.exe -server -rpcport=9876 -rpcuser=(not going to tell) -rpcpassword=(not going to tell) -rpcallowip=127.0.0.1

or is it possible because my wallet is password protected?
Never tried with password protected wallet.

tryed with an blockchain.info wallet
MartinBot was designed to be used with Satoshi's client.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: aadje93 on November 20, 2012, 05:56:59 PM
i made a config file with

server=1
rpcport=9876
user=(not going to tell)
password=(not going to tell)
allowip=127.0.0.1
Try to use command line parameters, not config file. Something like
Code:
bitcoin-qt.exe -server -rpcport=9876 -rpcuser=(not going to tell) -rpcpassword=(not going to tell) -rpcallowip=127.0.0.1

or is it possible because my wallet is password protected?
Never tried with password protected wallet.

tryed with an blockchain.info wallet
MartinBot was designed to be used with Satoshi's client.

hello thanks for your help :)

what is the satoshi's client? Does that have RPC interface?

EDIT:

we are getting somewhere :).  With a bat script with the commands you suggested

Error writing to server

Any fix for that?

EDIT2:

didn't realize, the "error writing to server" only occurs when i use the static IP for my pc (***.***.*.14)

when i use 127.0.0.1 its still http error 500  (the standard no acces error)


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on November 20, 2012, 08:51:24 PM
what is the satoshi's client? Does that have RPC interface?
It can be downloaded from http://bitcoin.org/. It does have JSON-RPC interface.

didn't realize, the "error writing to server" only occurs when i use the static IP for my pc (***.***.*.14)

when i use 127.0.0.1 its still http error 500  (the standard no acces error)
Usually, I see this error if I try to spend more BTC than I have confirmed in a wallet. Satoshi's client gives very little info about errors, so it's hard to catch a bug.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: aadje93 on November 21, 2012, 06:29:08 AM
what is the satoshi's client? Does that have RPC interface?
It can be downloaded from http://bitcoin.org/. It does have JSON-RPC interface.

didn't realize, the "error writing to server" only occurs when i use the static IP for my pc (***.***.*.14)

when i use 127.0.0.1 its still http error 500  (the standard no acces error)
Usually, I see this error if I try to spend more BTC than I have confirmed in a wallet. Satoshi's client gives very little info about errors, so it's hard to catch a bug.

You probarly haven't seen my previous martingale work ;) (developped my own strategy on a lower bet %) My balance is way over 300 btc at the moment, so a 0.01 bet should be possible :).


EDIT:

can't find satoshi's client on bitcoin.org. Only bitcoin-qt *what i use now* multibit, armory, electrum (and bitcoin wallet for android)


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: frozenkai on January 28, 2013, 09:34:36 PM
I get this: am I doing something wrong?



Code:

C:\Program Files (x86)\Bitcoin>bitcoin-qt.exe -server -rpcport=9876 -rpcuser=asdfE -rpcpassword=sdaf-rpcallowip=127.0.0.1

C:\Program Files (x86)\Bitcoin>cd \

C:\>java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 MYUSERNAME MYPASSWORD
 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.1 2.0
java.net.ConnectException: Connection refused: connect

C:\>"C:\Program Files (x86)\Bitcoin
'"C:\Program Files (x86)\Bitcoin' is not recognized as an internal or external c
ommand,
operable program or batch file.

C:\>cd "C:\Program Files (x86)\Bitcoin

C:\Program Files (x86)\Bitcoin>bitcoin-qt.exe -server -rpcport=9876 -rpcuser=MYU
SERNAME -rpcpassword=MYPASSWORD -rpcallowip=127.0.0.1

C:\Program Files (x86)\Bitcoin>cd \

C:\>java -cp MartinBot.jar MartinBot http://127.0.0.1:9876 MYUSERNAME MYPASSWORD
 1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp 0.003 3.3
----------
{"method":"sendtoaddress","params":["1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp",0.003]}
{"id":null,"result":"9ce841babde110db1360056cb863d4f2f876a6158a010653e7aa2797a3e
f161d","error":null}


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: frozenkai on January 29, 2013, 02:18:12 AM
NOTE: I don't think this is designed to be used by people with 10btc or less, I had 5btc and lost all of them


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: Come-from-Beyond on January 30, 2013, 05:22:16 AM
It was designed when min bet was 0.001 BTC. Now it's 0.01 BTC.


Title: Re: Yet another martingale bot for SatoshiDice (Java app)
Post by: JoelKatz on February 11, 2013, 11:45:07 AM
NOTE: I don't think this is designed to be used by people with 10btc or less, I had 5btc and lost all of them
The less you have, the more likely you are to lose everything. However, if you lose everything, you lose less. There's no such thing as a free lunch.