Eso explica el por qué no se me reflejan los pagos en bitcoin a traves de dailybitcoin.com (por poner un ejemplo) no se me refleja en el saldo de blockchain ¿Alguna otra alternativa a blockchain que me permita recibir ese tipo de pagos?
Eso podría explicar el por qué no los recibes, que es independiente del wallet que uses. Es decir, que en lugar de cambiar de wallet, lo que tienes que hacer es cambiar de micropagador.
|
|
|
si, pero aunque tome la semilla del último bloque del día anterior, la secuencia de números va a ser siempre la misma, con lo que podría saber todos los números del día. Cada semilla da una secuencia diferente, nunca te vas a encontrar eso de que la secuencia sea la misma. Si ocurre, el generador de números aleatorios es para tirar a la basura. De todas formas no me parece mala tu idea de tomar último bloque del día anterior, pero debería meterle algo que haga único el sorteo, como el total de jugadores + el total de apuestas. Ahí ya puede ser lo que tú quieras, pregenerado y sin necesidad de probar nada, ya que el hecho de que lo combinas con un block hash que es impredecible, ya implica que no has podido hacer trampa. Y quien dice block hash dice números de la bonoloto o lo que sea. Así que la semilla de mañana puede ser "hellokitty" concatenado con el hash del último bloque de hoy y la semilla de pasadomañana puede ser "horariodecajasolode0815a1100" combinado con el hash del último bloque de mañana.
|
|
|
Te falta sex.bit, ¿es que algún otro okupa se te ha adelantado?
|
|
|
Lo que comentas de los usuarios, no lo veo bien, pq se generaría un número cada 30 sg así que obligar a todos los usuarios a meter un datos, como que me mandan a freir esparragos. Aaaamigo, es que eso no lo dijiste al principio . Creo que lo mejor es la primera idea, enviar una cantidad fija de la dirección A a la B, conocidas por todos, y en la propia descripcción de la transacción incluir el id del juego etc, tomar el hash de la transacción y usarlo como semilla. La pega es las comisiones de los minero que sería bastante.
Eso es spam, por supuesto que te van a freír a comisiones. Lo que puedes hacer es pasarle a un generador de números aleatorios cualquiera (por ejemplo en FlipSide yo uso uno llamado ISAAC) una semilla escogida de antemano. Así, la secuencia generada es reproducible y verificable por cualquiera. Puedes por ejemplo usar una semilla diferente cada día y publicar su hash. Al día siguiente publicas la semilla y los números derivados de la misma, y todos podrán mirar que los números generados coinciden con la lista. Si necesitas probar que la secuencia de números aleatorios no te favorece (por ejemplo, podrían acusarte de escoger semillas cuya secuencia resultante consiste en números más bajos que el promedio esperado, lo que podría beneficiarte), entonces puedes condimentar la semilla con el hash del último bloque del día anterior, o algo así.
|
|
|
¿Alguno sabría decirme como decide la wallet de donde se baja la cadena de bloques? No consigo encontrar esa información y me parece bastante interesante.
La coge de otros nodos de la red y la valida por su cuenta.
|
|
|
Hemos operado hoy, finalmente en euros. Todo ok!
|
|
|
Hola, gracias, pero no serviría pq hay más de un usuario
Precisamente! Usuario 1 escoge la palabra "cakita". Usuario 2 escoge la palabra "4coins". Usuario 3 escoge la palabra "yasolofaltan2dias!!". Y después de que todas las apuestas estén hechas, el servidor hace por ejemplo un sha384 de "cakita4coinsyasolofaltan2dias!!" y toma los últimos 32 bits como el número aleatorio buscado. Al acabar el juego, publicas las palabras que ha escogido cada uno, el hash del conjunto y el número resultante. ¿Con random.org puedes probar que no has generado el número por tu cuenta?
|
|
|
lo que más me gustaría a mi, es que el comercio con bitcoins fuese más:
[…]
Y no tanto de:
1º Minas bitcoins (o cambias De fiat A bitcoin) -> 2º los usas en comprar un producto o servicio -> 3º la persona que los recibe los cambia automáticamente a fiat -> 4º usan el fiat para pagar cosas con fiat (ya que si quisiera bitcoins no los habría vendido).
Los negocios empezarán a adoptar bitcoin poco a poco ante nuestra presión/demanda y más tarde por razones de competencia, pero el siguiente eslabón de la cadena, los distribuidores, no empezarán a hacerlo mientras no se vean ante la misma presión/demanda que la que tienen los negocios finales hoy día. Por tanto, el cambio a fiat de momento es inevitable pero en algún momento bitcoin empezará a penetrar más en el sistema, para el pánico de algunos. Llevará un tiempo, pero por otro lado no tenemos ninguna prisa…
|
|
|
—Coñe, un cacharro de estos de bfl!! enchufa enchufa!!
|
|
|
Estoy haciendo una aplicación para bitcoin y necesito generar un número aleatorio cada X segundos, pero claro debe ser un método transparente y que no haya posibilidad alguna de tongo, y que de ninguna forma se pueda conocer de antemano Se suele hacer a partir de un algo (un número, o una palabra…) secreto que sólo conoce el servidor y otro algo que sólo conoce el usuario. Así, ninguno de los dos tiene control sobre el resultado final. En FlipSide lo que hago es mostrar al usuario el hash del primer valor y le permito escoger el segundo; cuando ya tengo los dos, genero las cartas aleatoriamente y al final publico los datos de cómo se han generado para que pueda comprobarse que no ha habido trampa. En tu caso, durante la ronda de apuestas, cada jugador podría proponer su propio secreto y luego tú combinas lo de todos los jugadores para crear el número aleatorio (si no me equivoco no sería necesario que tú también tuvieras tu propio secreto en este caso).
|
|
|
Mooola, una tienda de juguetes para nuestros hijos, pero con los que realmente jugamos los padres No hay nada de Hello Kitty para mayores .
|
|
|
Bueno, no tengo cuenta en twitter, pero solo por esto merecerá la pena...
Mira el OP, no hace falta tener twitter (yo tampoco tengo). Venga, pos pal viernes echamos unos centimillos al primero de la lista. Conste que a mí de todos esos nombres sólo me suena uno y porque salía en la tele hace años, pero todo sea por la causa .
|
|
|
Necesito que me asesoren un poco sobre el intercambio de bitcoins y dólares. (Si, ya se, ya estoy fastidiando bastante) y es que al cambiarlos en Mt. Gox por dolares comunes y corrientes […]
¿Y por qué no los cambias a euros? Así, los puedes sacar con una transfe SEPA normal y corriente.
|
|
|
Los casi 69.000 BTC que AVALON han sacado de la venta de sus chips están aquí cogiendo polvo: http://blockchain.info/fb/1fgaftz no han vendido ni uno. No sé a qué se debe la caída de la cotización pero no parece ser cosa de ellos. Pero Avalon tiene más bitcoins aparte de los que ha coleccionado por los chips.
|
|
|
Estamos cerca de soporte, buen sitio para hacer unas compras especulativas a corto.
Con compras especulativas a corto te refieres a comprar esperando la resistencia 110 y vender? No lo ves bajando a 80 ahora, despues de subir a 94? Me refiero a comprar esperando rebote, puesto que la cercanía del soporte en $80 debería frenar nuevos impulsos bajistas, y además RSI y estocástico, fiables en un escenario lateral como el actual, marcan sobreventa. De hecho según escribo esto se me están cruzando ya parte de las ventas. La vela de hoy ha traspasado el $100 con volumen, lo que podría indicar nuevos movimientos a la baja durante las próxmas semanas. Perder el $80 confirmaría esta hipótesis.
|
|
|
Estamos cerca de soporte, buen sitio para hacer unas compras especulativas a corto.
|
|
|
Absolutely, but I haven't figured out a good way to deal with variable length integers in perl yet. I was able to write this script in 10 minutes and get an answer within a few hours. That's much sooner than I would have gotten a full blockchain parser written.
Look at sub read_var_int in my quick n dirty parser: #!/usr/bin/perl
use warnings; use strict; use List::MoreUtils qw/natatime/; use Data::Dumper;
my $MAGIC = 3652501241; my $BLOCKS_DIR = '/home/btc/.bitcoin/blocks';
## xxd-like output sub print_dump { my ($data) = @_;
my $offset = 0; open my $fd, '<', \$data or die "open: $!"; while (1) { my $read = read $fd, my $bytes, 16; last unless $read; my @bytes = split '', $bytes; my $rawchars = $bytes; $rawchars =~ s/[^ -~]/./g; my @hexpairs; my $iter = natatime 2, @bytes; while (my @vals = $iter->()) { push @hexpairs, join '', map { sprintf '%02x', ord } @vals; } printf "%08x: %-39s %s\n", $offset, (join ' ', @hexpairs), $rawchars; $offset += $read; } close $fd; }
sub read_var_int { my ($fd, $rem) = @_; my $val;
my $read = read $fd, $val, 1; $$rem -= 1; if (!$read) { return undef; } $val = unpack 'C', $val; if ($val == 0xfd) { $read = read $fd, $val, 2; $$rem -= 2; $val = unpack 'S', $val; } elsif ($val == 0xfe) { $read = read $fd, $val, 4; $$rem -= 4; $val = unpack 'L', $val; } elsif ($val == 0xff) { $read = read $fd, $val, 8; $$rem -= 8; $val = unpack 'Q', $val; }
return $val; }
sub read_inputs { my ($fd, $count, $rem) = @_; my $read; ## should be used to check ret vals from read/sysread my $inputs;
for my $input (1 .. $count) { my ($prev_txid, $prev_idx, $sig_script, $seq);
$read = read $fd, $prev_txid, 32; $$rem -= 32; $prev_txid = unpack 'H64', $prev_txid; #print " prev_txid ($prev_txid)\n";
$read = read $fd, $prev_idx, 4; $$rem -= 4; $prev_idx = unpack 'L', $prev_idx; #print " prev_idx ($prev_idx)\n";
my $sig_script_len = read_var_int $fd, $rem; if (!defined $sig_script_len) { print 'sig_script_len undef'; die; }
$read = read $fd, $sig_script, $sig_script_len; $$rem -= $sig_script_len; #printf " sig_script: %d bytes\n", length $sig_script;
$read = read $fd, $seq, 4; $$rem -= 4; $seq = unpack 'L', $seq; #print " seq ($seq)\n";
push @$inputs, { prev_txid => $prev_txid, prev_idx => $prev_idx, sig_script => $sig_script, seq => $seq, } }
return $inputs; }
sub read_outputs { my ($fd, $count, $rem) = @_; my $read; ## should be used to check ret vals from read/sysread my $outputs;
for my $output (1 .. $count) { my ($val, $pubkey_script_len, $pubkey_script);
$read = read $fd, $val, 8; $$rem -= 8; $val = unpack 'Q', $val;
$pubkey_script_len = read_var_int $fd, $rem; if (!defined $pubkey_script_len) { print 'pubkey_script_len undef'; die; }
$read = read $fd, $pubkey_script, $pubkey_script_len; $$rem -= $pubkey_script_len; #printf " pubkey_script: %d bytes\n", length $pubkey_script;
push @$outputs, { val => $val, pubkey_script => $pubkey_script, }; }
return $outputs; }
sub parse_txs { my ($txn_data, $len) = @_; my $read; ## should be used to check ret vals from read/sysread my $txs;
my $remaining = $len; open my $txn_fd, '<', \$txn_data or die "open: $!";
my $txn_count = read_var_int $txn_fd, \$remaining; if (!defined $txn_count) { print 'txn_count undef'; die; } #print " txn_count ($txn_count)\n";
#print_dump $txn_data;
my ($tx_ver, $input_count, $inputs, $output_count, $outputs, $lock_time); for my $tx_idx (1 .. $txn_count) { $read = read $txn_fd, $tx_ver, 4; $remaining -= 4; $tx_ver = unpack 'L', $tx_ver; #print " tx_ver ($tx_ver)\n";
$input_count = read_var_int $txn_fd, \$remaining; if (!defined $input_count) { print 'input_count undef'; die; } #print " input_count ($input_count)\n";
$inputs = read_inputs $txn_fd, $input_count, \$remaining; #print Data::Dumper->Dump ([$inputs],['inputs']);
$output_count = read_var_int $txn_fd, \$remaining; if (!defined $output_count) { print 'output_count undef'; die; } #print " output_count ($output_count)\n";
$outputs = read_outputs $txn_fd, $output_count, \$remaining; #print Data::Dumper->Dump ([$outputs],['outputs']);
$read = read $txn_fd, $lock_time, 4; $remaining -= 4; $lock_time = unpack 'L', $lock_time; #print " lock_time ($lock_time)\n";
push @$txs, { version => $tx_ver, inputs => $inputs, outputs => $outputs, lock_time => $lock_time, }; }
return $txs; }
sub parse_block { my ($height, $block_data, $len) = @_; my $read; ## should be used to check ret vals from read/sysread
my $remaining = $len; open my $block_fd, '<', \$block_data or die "open: $!";
my $block_header; $read = read $block_fd, $block_header, 80; $remaining -= 80;
my ($ver, $prev_block, $mrkl, $ts, $bits, $nonce) = unpack 'L H64 H64 L H8 L', $block_header; $prev_block = reverse $prev_block=~/../g; $mrkl = reverse $mrkl=~/../g;
my $txn_data; $read = read $block_fd, $txn_data, $remaining;
close $block_fd;
#my $tx = parse_txs $txn_data, $remaining; ## commented out for faster parsing
return { version => $ver, height => $height, prev_block => $prev_block, merkle_tree => $mrkl, timestamp => $ts, bits => $bits, nonce => $nonce, #tx => $tx, }; }
my $blk_file_num = -1; my $fd; sub open_next_blk_file { close $fd if defined $fd; $blk_file_num++; my $blkfile = sprintf "$BLOCKS_DIR/blk%05d.dat", $blk_file_num; sysopen $fd, $blkfile, 0 or die "sysopen: $!"; binmode $fd; }
#################################################################################################
open_next_blk_file;
my $height = 0; my %prev_blocks_seen; while (1) { my $read; ## should be used to check ret vals from read/sysread my $data; my ($magic, $len, $remaining);
$read = sysread $fd, $data, 8; if (!defined $read) { die "sysread: $!"; } if (!$read) { warn "sysread: null, going to next file"; open_next_blk_file; redo; } if ($read < 8) { warn "sysread: short read, going to next file"; open_next_blk_file; redo; } ($magic, $len) = unpack 'L L', $data; $remaining = $len; next unless $magic; ## magic == 0, probably near end of file if ($MAGIC != $magic) { die "got magic ($magic) instead of ($MAGIC) at block $height\n"; } ## read whole block $read = sysread $fd, $data, $len; if ($len != $read) { $read or last; die "sysread: $!"; }
#print_dump $block_data; my $block = parse_block $height, $data, $len; ## orphan detection, untested on orphan chains larger than one single block if ($height and exists $prev_blocks_seen{ $block->{'prev_block'} }) { my $to_downgrade = ($height-1) - $prev_blocks_seen{ $block->{'prev_block'} }; warn "orphan, height ($block->{'height'}) pb ($block->{'prev_block'}) ts ($block->{'timestamp'}) to_downgrade ($to_downgrade)\n"; $height -= ($height-1) - $prev_blocks_seen{ $block->{'prev_block'} }; next; } print "$height,$len\n"; # if (128352 == $block->{'height'}) { # use bignum; # my $bits = join '', reverse $block->{'bits'} =~ /../g; # my ($b1, $b2) = map { hex $_ } $bits =~ /^(..)(.*)$/; # my $diff = (0xffff << 208) / ($b2 * 2 ** (8 * ($b1-3))); # $block->{'difficulty'} = "$diff"; # # print Data::Dumper->Dump ([$block],['block']); # }
$prev_blocks_seen{ $block->{'prev_block'} } = $height; $height++; } close $fd; Sent!
Thank you!
|
|
|
edicion mod: imagen no apta para insertar en el foro
¿Según lo establecido en…? (pregunta honesta)
|
|
|
Por cierto, todos los productos de BFL tienen garantia de por vida, asi que si se quema, solo lo tienen que mandar de vuelta.
Preferiblemente antes de 2014 y tal… Creo que no he entendido el tono y lo que has querido decir, lo siento. SigmaAlt, creo que lo que dserrano5 ha entendido con tu frase de "asi que si se quema, solo lo tienen que mandar de vuelta." es que les mandas a BFL el ASIC y ellos te mandan uno nuevo a ti, por eso ha respondido "Preferiblemente antes de 2014 y tal...", refiriéndose a que prefiere que no tarden otro año en procesar el ASIC quemado. Exactamente. Si te tienen meses esperando para que luego resulte que te mandan algo que no funciona y tienes que volver a esperar otros tantos meses para pillar otro, ejem… Wow, estoy a punto de creérmelo, ¿no te habrán pagado estos de BFL para que publiques una captura de pantalla falsa, verdad? xD.
|
|
|
|