Shevek (OP)
|
|
May 28, 2013, 04:09:14 PM |
|
En este hilo (en inglés) he manifestado mi preocupación por el alarmante incremento de bloques que no contienen transacciones (bueno, sólo una: la de generación). Me gustaría hacer una pequeña estadística para ver cuántos bloques son de este tipo (especialmente entre los últimos). Sé que "preguntando" a blockexplorer y blockchain (via sus APIs), o incluso bitcoind, se puede hacer, quizá con un poco de programación. Pero no sé muy bien cómo. Soy usuario de linux, no me da miedo el código Gracias anticipadas.
|
Proposals for improving bitcoin are like asses: everybody has one 1SheveKuPHpzpLqSvPSavik9wnC51voBa
|
|
|
|
|
|
|
You can see the statistics of your reports to moderators on the "Report to moderator" pages.
|
|
|
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
|
|
|
|
Anillos
|
|
May 28, 2013, 04:49:26 PM |
|
Lo de los bloques vacíos es fácil: que el resto de mineros detecten esos bloques y no minen sobre ese bloque sino sobre el anterior. Es decir, mientras haya transacciones en el aire (que las había, yo tengo alguna de hace una semana y aún no está confirmada) que no se acepte el bloque. Por mucho que se empeñe ese nodo en seguir minando, si el resto son mayoría, ese bloque quedará huérfano. Es posible que haya cierta picaresca en torno a estos bloques, quizás se minen más rápido y por eso sean producidos. ----------------------------- En cuanto a APIs no podría recomendarte mucho... Pero si podría proponerte un programa en C que usando wget se descargue los bloques siguiendo este formato: http://blockexplorer.com/b/238380 ------Podrías convertirlo en-------> http://blockexplorer.com/b/%iSólo necesitas un for(i=bloque_inicial;i<bloque_final;i++) para recorrer muchos bloques y entre medias ir descargando ficheros, abriéndolos y analizándolos. Finalmente podrías borrarlos para ahorrar disco duro. Si puedes montar una unidad virtual en la memoria, podrás analizar los bloques más rápido. Puedes analizar los bloques contando las apariciones de "<tr><td>", que te da el número de transacciones contando la de generación. No te preocupes por la columna del título, que se aparece como "<tr><th>" y no la contarías.Edito, tendrías que localizar esta cadena: Y analizar el número que aparece. Incluso puedes ir buscando carácter por carácter hasta contar 34 (asegúrate de que está bien) apariciones de ':' y entonces leer el número que aparezca a continuación y convertirlo a int con aoi(cadena). Si te parece bien puedo ayudarte con el código un poco, aunque en mi caso al tener MS/Windows no se si podré usar algún comando similar a wget, pero puedo realizar simulaciones en mi disco duro.
|
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 28, 2013, 05:00:05 PM |
|
Me gustaría hacer una pequeña estadística para ver cuántos bloques son de este tipo (especialmente entre los últimos). Sé que "preguntando" a blockexplorer y blockchain (via sus APIs), o incluso bitcoind, se puede hacer, quizá con un poco de programación. Pero no sé muy bien cómo. Soy usuario de linux, no me da miedo el código Formato "bloque,tamaño,transacciones": $ wget https://dl.dropboxusercontent.com/u/24587684/block-sizes-txns $ grep ',1$' block-sizes-txns |less Aquí un pequeño histograma que muestra el número de bloques con una sola transacción (la coinbase) por cada 1000 bloques: 0 984 ################################################################################################### 1 989 ################################################################################################### 2 990 ################################################################################################### 3 994 #################################################################################################### 4 995 #################################################################################################### 5 996 #################################################################################################### 6 994 #################################################################################################### 7 996 #################################################################################################### 8 997 #################################################################################################### 9 997 #################################################################################################### 10 996 #################################################################################################### 11 993 #################################################################################################### 12 997 #################################################################################################### 13 995 #################################################################################################### 14 992 #################################################################################################### 15 999 #################################################################################################### 16 999 #################################################################################################### 17 997 #################################################################################################### 18 994 #################################################################################################### 19 999 #################################################################################################### 20 997 #################################################################################################### 21 997 #################################################################################################### 22 997 #################################################################################################### 23 992 #################################################################################################### 24 997 #################################################################################################### 25 993 #################################################################################################### 26 990 ################################################################################################### 27 998 #################################################################################################### 28 996 #################################################################################################### 29 978 ################################################################################################## 30 995 #################################################################################################### 31 998 #################################################################################################### 32 998 #################################################################################################### 33 998 #################################################################################################### 34 994 #################################################################################################### 35 989 ################################################################################################### 36 987 ################################################################################################### 37 983 ################################################################################################### 38 981 ################################################################################################### 39 980 ################################################################################################## 40 966 ################################################################################################# 41 983 ################################################################################################### 42 982 ################################################################################################### 43 979 ################################################################################################## 44 978 ################################################################################################## 45 970 ################################################################################################# 46 958 ################################################################################################ 47 959 ################################################################################################ 48 964 ################################################################################################# 49 907 ########################################################################################### 50 885 ######################################################################################### 51 856 ###################################################################################### 52 859 ###################################################################################### 53 829 ################################################################################### 54 876 ######################################################################################## 55 857 ###################################################################################### 56 862 ####################################################################################### 57 821 ################################################################################### 58 807 ################################################################################# 59 745 ########################################################################### 60 726 ######################################################################### 61 759 ############################################################################ 62 735 ########################################################################## 63 722 ######################################################################### 64 763 ############################################################################# 65 575 ########################################################## 66 446 ############################################# 67 462 ############################################### 68 471 ################################################ 69 450 ############################################# 70 536 ###################################################### 71 641 ################################################################# 72 568 ######################################################### 73 562 ######################################################### 74 586 ########################################################### 75 556 ######################################################## 76 587 ########################################################### 77 555 ######################################################## 78 557 ######################################################## 79 529 ##################################################### 80 576 ########################################################## 81 387 ####################################### 82 459 ############################################## 83 415 ########################################## 84 492 ################################################## 85 589 ########################################################### 86 363 ##################################### 87 450 ############################################# 88 570 ######################################################### 89 596 ############################################################ 90 548 ####################################################### 91 610 ############################################################# 92 415 ########################################## 93 275 ############################ 94 443 ############################################# 95 523 ##################################################### 96 427 ########################################### 97 288 ############################# 98 337 ################################## 99 326 ################################# 100 335 ################################## 101 220 ###################### 102 229 ####################### 103 241 ######################### 104 194 #################### 105 185 ################### 106 349 ################################### 107 96 ########## 108 115 ############ 109 73 ######## 110 81 ######### 111 56 ###### 112 101 ########### 113 50 ##### 114 57 ###### 115 61 ####### 116 67 ####### 117 50 ##### 118 72 ######## 119 44 ##### 120 51 ###### 121 59 ###### 122 57 ###### 123 58 ###### 124 40 #### 125 33 #### 126 40 #### 127 27 ### 128 18 ## 129 15 ## 130 15 ## 131 18 ## 132 17 ## 133 14 ## 134 14 ## 135 13 ## 136 25 ### 137 22 ### 138 19 ## 139 12 ## 140 20 ## 141 22 ### 142 20 ## 143 20 ## 144 24 ### 145 29 ### 146 17 ## 147 25 ### 148 22 ### 149 19 ## 150 19 ## 151 25 ### 152 32 #### 153 21 ### 154 27 ### 155 22 ### 156 38 #### 157 22 ### 158 30 ### 159 36 #### 160 35 #### 161 29 ### 162 31 #### 163 32 #### 164 26 ### 165 19 ## 166 24 ### 167 33 #### 168 26 ### 169 53 ###### 170 146 ############### 171 144 ############### 172 148 ############### 173 141 ############### 174 28 ### 175 23 ### 176 17 ## 177 18 ## 178 19 ## 179 21 ### 180 19 ## 181 17 ## 182 13 ## 183 15 ## 184 18 ## 185 18 ## 186 17 ## 187 11 ## 188 9 # 189 21 ### 190 26 ### 191 18 ## 192 15 ## 193 20 ## 194 12 ## 195 15 ## 196 26 ### 197 8 # 198 5 # 199 17 ## 200 5 # 201 11 ## 202 13 ## 203 18 ## 204 14 ## 205 23 ### 206 19 ## 207 22 ### 208 12 ## 209 12 ## 210 13 ## 211 5 # 212 8 # 213 13 ## 214 11 ## 215 9 # 216 10 # 217 8 # 218 8 # 219 7 # 220 18 ## 221 10 # 222 7 # 223 4 # 224 6 # 225 15 ## 226 6 # 227 11 ## 228 6 # 229 5 # 230 3 # 231 3 # 232 9 # 233 8 # 234 9 # 235 4 # 236 11 ## 237 9 # 238 8 # Edito: y una media móvil de 10 períodos termina así: 215 12 216 11 217 10 218 9 219 9 220 9 221 10 222 10 223 9 224 8 225 9 226 8 227 9 228 9 229 8 230 7 231 6 232 6 233 7 234 7 235 6 236 6 237 6 238 6 O sea, actualmente sólo unos 6 de cada 1000 bloques vienen sin transacciones.
|
|
|
|
Shevek (OP)
|
|
May 28, 2013, 05:24:44 PM |
|
Lo de los bloques vacíos es fácil: que el resto de mineros detecten esos bloques y no minen sobre ese bloque sino sobre el anterior.
Es decir, mientras haya transacciones en el aire (que las había, yo tengo alguna de hace una semana y aún no está confirmada) que no se acepte el bloque. Por mucho que se empeñe ese nodo en seguir minando, si el resto son mayoría, ese bloque quedará huérfano.
Esa es la receta que pienso yo. Me parece mucha cara pasar olímpicamente de las transacciones y dedicarte a minar sólo con la "coinbase". Y en el caso de que algún minero consiga un bloque a partir del bloque vacío, pues qué remedio, a seguir la cadena. Pero si los "pools" más grandes se ponen de acuerdo, frenan en seco ese comportamiento incívico. Es posible que haya cierta picaresca en torno a estos bloques, quizás se minen más rápido y por eso sean producidos.
No, parece ser que son botnets (redes de ordenadores zombies, infectados con un troyano que se dedica a minar). El ordenador zombie se dedica a minar sobre bloques vacíos porque así no necesita descargarse la cadena completa (que es necesaria para comprobar transacciones) y pasa más desapercibido al usuario verdadero del ordenador. dserrano5: sabía que no me fallarías En cuanto pueda le echo un vistazo a ese código y te digo algo.
|
Proposals for improving bitcoin are like asses: everybody has one 1SheveKuPHpzpLqSvPSavik9wnC51voBa
|
|
|
Anillos
|
|
May 28, 2013, 05:25:50 PM |
|
¿Está bautizado el problema? Yo propongo "lazy nodes", porque son cazasubenciones.
Debería existir algún criterio, por ejemplo, si existen transacciones con más de 1 hora de antigüedad, que no se acepten bloques sin transacciones.
EDITO: he visto tu mensaje, y es una buena hipótesis. Pues unos 2500€ que se ganan cada vez que suena la flauta...
|
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 28, 2013, 05:41:21 PM |
|
dserrano5: sabía que no me fallarías En cuanto pueda le echo un vistazo a ese código y te digo algo. Jejeje . Lo quería poner hace un rato en el hilo inglés pero es que estaba un poco liado en el curro y no podía pararme 10 minutejos para esto .
|
|
|
|
Shevek (OP)
|
|
May 28, 2013, 09:02:34 PM |
|
Formato "bloque,tamaño,transacciones": $ wget https://dl.dropboxusercontent.com/u/24587684/block-sizes-txns $ grep ',1$' block-sizes-txns |less Muy interesante pero... ¿cómo generas el fichero block-sizes-txns? En algún otro hilo recuerdo haber visto programas tuyos para inquirir a la red por datos sobre bloques, y operando con ellos. O sea, actualmente sólo unos 6 de cada 1000 bloques vienen sin transacciones.
Sí, estoy de acuerdo en el cálculo. Además, parece que hace unos pocos meses el asunto fue un poco más intenso. Y al comienzo... casi todos eran así (lógicamente, por otro lado). Si los 3 "pools" principales se ponen de acuerdo en rechazar los bloques con menos del 50% de sus propias transacciones con la tasa apropiada, esta plaga se terminaba y a los botnets se les daba una buena patadita en el culo.
|
Proposals for improving bitcoin are like asses: everybody has one 1SheveKuPHpzpLqSvPSavik9wnC51voBa
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 29, 2013, 06:37:38 AM |
|
Muy interesante pero... ¿cómo generas el fichero block-sizes-txns?
Ojo que hay par de cochinadas ahí dentro : #!/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"; return $txn_count; ## just return this for shevek, don't parse any further
#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;
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,$block->{'tx'}\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; No usa RPC, esto parsea los archivos de la blockchain a pelo. La detección de huérfanos está poco probada.
|
|
|
|
Shevek (OP)
|
|
May 29, 2013, 11:46:17 AM |
|
Muy interesante pero... ¿cómo generas el fichero block-sizes-txns?
Ojo que hay par de cochinadas ahí dentro : No usa RPC, esto parsea los archivos de la blockchain a pelo. La detección de huérfanos está poco probada. Joer, qué flipada. No recordaba que lo hicieras a pelo sobre la cadena de bloques descargada. Y el código es bastante más complejo de lo que me esperaba Enhorabuena por tus habilidades y gracias por compartirlo.
|
Proposals for improving bitcoin are like asses: everybody has one 1SheveKuPHpzpLqSvPSavik9wnC51voBa
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 29, 2013, 12:33:38 PM |
|
Y el código es bastante más complejo de lo que me esperaba Enhorabuena por tus habilidades y gracias por compartirlo. Gracias. Si tienes preguntas estoy en el IRC, que va a ser más conveniente y menos spammy que ponerse a charlar por aquí.
|
|
|
|
|
LuisCar
Legendary
Offline
Activity: 1820
Merit: 1017
|
|
May 30, 2013, 12:25:30 PM |
|
En GitHub le leí a Gavin Andresen que iban a implementar un montante mínimo a partir del cual la red bitcoin no ejecutaría la transacción por considerarse antieconómica, es decir, dicha transacción implica mayores costos energéticos para su procesamiento por la red que el valor real de la cantidad que se pretende transferir. Esto impondría un límite inferior (que será móvil, supongo) a todos los micropagos.
En esa transacción la mayoría de los pagos son de unos cientos de satoshis, lo que significa que dichas cantidades representan unas pocas diezmilésimas de euro o unos céntimos de céntimos de euro. Se necesitarían unos 20 pagos de ese tipo para alcanzar el céntimo de euro; estoy seguro que ahora mismo no compensa el tiempo y la energía dedicados a un servicio que te aporta 0,000005 BTC, ni siquiera como experimento. Pienso que este tipo de transacciones son más perjudiciales que beneficiosas para bitcoin.
|
|
|
|
Anillos
|
|
May 30, 2013, 12:27:27 PM |
|
Si, pero lo lógico sería implementarlo de forma gradual, para que las páginas web se adapten y no queden transacciones sin confirmar.
|
|
|
|
LuisCar
Legendary
Offline
Activity: 1820
Merit: 1017
|
|
May 30, 2013, 12:44:53 PM |
|
Me imagino que cuando lo implementen se decidirá una fecha determinada a partir de la cual ya no se aceptarán transacciones por debajo de ese mínimo.
|
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 30, 2013, 02:44:10 PM |
|
El cambio va en la 0.8.2, que acaba de salir. A medida que la gente empiece a usarla, estas transacciones se considerarán no estándar. El límite es un simple valor por defecto (5430 satoshis, 0.00005430 btc) que cambiará según el precio de bitcoin evolucione al alza o a la baja. Y no sólo eso, los usuarios pueden configurarlo al gusto para ponerlo a cero si quieren, desde hoy mismo.
|
|
|
|
Shevek (OP)
|
|
May 30, 2013, 02:58:32 PM |
|
Vaya churro de transacción.... un mogollón de direcciones, cada una con unos pocos satoshis. ¿La has hecho tú? ¿Estas repartiendo BTCs entre muchas direcciones propias? Como te han dicho, el nuevo cliente de bitcoin no cotejará, por defecto, transacciones tan pequeñas. En blockchain.info no dicen lo que ocupa, pero debe ser bastante. Lo mismo los mineros consideran que la tasa ofrecida es demasiado pequeña para el tamaño que tiene. De todas formas, el hilo no va de esto, sino de los bloques resueltos sin transacciones.
|
Proposals for improving bitcoin are like asses: everybody has one 1SheveKuPHpzpLqSvPSavik9wnC51voBa
|
|
|
dserrano5
Legendary
Offline
Activity: 1974
Merit: 1029
|
|
May 30, 2013, 04:49:19 PM |
|
En blockchain.info no dicen lo que ocupa, pero debe ser bastante. Lo mismo los mineros consideran que la tasa ofrecida es demasiado pequeña para el tamaño que tiene.
Sí lo pone: "Tamaño 53235 (bytes)". A efectos de la comisión necesaria esto cuenta como 54 Kb, que multiplicados por la comisión mínima de 0.0005 resulta en 0.0270 BTC. Claro, ahora con la versión 0.8.2 la comisión mínima pasa a ser 0.0001, lo que multiplicado por 54 da 0.0054, que es precisamente lo que han pagado. O sea, que cuando algún minero se actualice a la 0.8.2 y lo configure para permitir salidas de menos de 5430 satoshis (concretamente 400 en este caso), esta transacción podrá incluirse en un bloque sin demasiados problemas. Lo que sí es un problema es que aparezcan mineros de esos…
|
|
|
|
Anillos
|
|
May 31, 2013, 10:46:43 AM |
|
Vaya churro de transacción.... un mogollón de direcciones, cada una con unos pocos satoshis. ¿La has hecho tú? ¿Estas repartiendo BTCs entre muchas direcciones propias? Como te han dicho, el nuevo cliente de bitcoin no cotejará, por defecto, transacciones tan pequeñas. En blockchain.info no dicen lo que ocupa, pero debe ser bastante. Lo mismo los mineros consideran que la tasa ofrecida es demasiado pequeña para el tamaño que tiene. De todas formas, el hilo no va de esto, sino de los bloques resueltos sin transacciones. No es mía, la he recibido de una página web. Ya comenté en otro hilo que lo ideal sería que esas páginas acumularan las transacciones a lo largo de una o varias semanas, pero las transacciones que ya están hechas, lo lógico es que fueran incluidas en bloques. Lo que venía a comentar es que ningún bloque sin transacciones debería ser válido si hay transacciones válidas con más de unas horas de antigüedad sin incluir. Bitcoin es una moneda, es para intercambiar valor, no para producirlo a partir de la nada con la "minería" y creer que la gente lo aceptará sin más.
|
|
|
|
|