Bitcoin Forum
June 07, 2024, 04:17:15 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 [222] 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 ... 276 »
4421  Local / Español (Spanish) / Re: Trading Bot para MtGox on: May 30, 2013, 06:56:15 AM
Yo es que lo de pagar por software… no lo acabo de ver.
4422  Local / Hardware y Minería / Re: Novedades BLF, mineros 7GH y el MiniRig pasa a 500GH on: May 29, 2013, 05:20:16 PM
Una cosa sí que hay que reconocerles a estos chicos: la verdad es que son unos profesionales del scam… no han entregado nada y la gente sigue lamiéndoles el ****.
4423  Local / Hardware y Minería / Re: Ayuda con APIs de blockexplorer y blockchain on: May 29, 2013, 12:33:38 PM
Y el código es bastante más complejo de lo que me esperaba  Shocked

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í.
4424  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 29, 2013, 10:37:25 AM
Bueno, tan offtopic no es, porque estamos hablando de poder construir una transacción offline a través del cliente_qt.

La razón última sí lo es porque a bitcoin hay que pasarle unas comillas (como parte del JSON) pero normalmente el intérprete de comandos que uses elimina algunas comillas y por tanto hay que "escaparlas"/"citarlas"/"quotearlas" y bla bla bla…
4425  Bitcoin / Development & Technical Discussion / Re: Pywallet: manage your wallets/addresses/keys/tx's on: May 29, 2013, 09:55:54 AM
To everybody
Do you think pywallet would be more practical as a Qt app?

Just as K1773R, I'd like to have a full working command-line interface, and am comfortable enough with a web browser for point n click usage.
4426  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 29, 2013, 09:32:31 AM
aunque intento construir una transacción mediante la ventana de depuración con el comando "createrawtransaction", siempre me da error aunque los parámetros que introduzca sean correctos.

¿Qué intentas hacer y qué error te da? Un copy-paste del texto sería bastante ilustrativo Wink.

Edito: con 0.8.2rc1 me funciona bien la misma sintaxis que en la terminal de linux, es decir, createrawtransaction '[{"txid":"blabla","vout":0}]' '{"12345":0.01}'.


En este hilo hablan sobre ello:

https://bitcointalk.org/index.php?topic=104512.0

Pero yo no entiendo ni el 50% de lo que están escribiendo en código allí Sad  ¿Tú me puedes ayudar a entenderlo?

Err, sí, pero es un poco off topic la verdad… además allí tienen la complicación adicional de trabajar en una ventana de msdos, no con la consola de depuración.
4427  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 29, 2013, 07:40:12 AM
Y si pruebo a obtener el txid de cualquier otra transacción (una transacción a cualquier otra dirección bitcoin de una paperwallet) mediante el comando "gettransaction"

No puedes obtener el txid de una transacción con ese comando, puesto que necesitas saberlo de antemano para poder usarlo Wink.


mira lo que dice la ayuda:

gettransaction <txid>
Get detailed information about in-wallet transaction <txid>

Te da información, pero siempre de transacciones que "entren" en la billetera, o sea, que tengan relación con las claves que conservas allí.

Esto es así porque el cliente no guarda toda la información de todas las transacciones de la red. Cuando haces un gettransaction el cliente se va a tu wallet a consultarla, ya que tus transacciones se guardan en él.

Esto, de todas formas, no tiene que ver con createrawtransaction. Siempre puedes ir a blockchain.info a mirar el txid que te interese y ponerlo en createrawtransaction, tal como he puesto en el anterior mensaje.
4428  Local / Hardware y Minería / Re: Ayuda con APIs de blockexplorer y blockchain on: 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 Tongue:

Code:
#!/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.
4429  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 29, 2013, 04:36:14 AM
dserrano5, veo un problemilla en tu planteamiento. Y es que, si no recuerdo mal, el cliente_qt sólamente puede crear transacciones que incluyen "unspent outputs" de direcciones bitcoin cuyas claves privadas se encuentran en tu billetera. Esto significa que con el comando createrawtransaction podrías construir una transacción válida según la cadena de bloques de tu cliente, pero con bitcoins cuyas claves privadas ya se encuentran en el archivo wallet.dat. Por lo tanto esa clave privada ya podría haber sido "expuesta" a posibles hackeos.

No dudes en corregirme si me equivoco, pero como te digo, creo que había un problemilla a la hora de construir raw transactions a través de comandos rpc sin tener la correspondiente clave privada en la billetera. De ahí que tuviera que consultarse a servidores externos (blockchain.org o electrum) la información sobre unspent outputs de direcciones bitcoin cuyas claves privadas no se encontraban en el equipo.

Aunque puede ser que esté equivocado, ya que no tengo ni idea de programación.

Code:
$ bitcoind createrawtransaction '[{"txid":"deadbeef","vout":0}]' '{"12345Vypv2QSmuRXcciT5oEB27mPbWGeva":2}'
0100000001efbeadde000000000000000000000000000000000000000000000000000000000000000000ffffffff0100c2eb0b000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000
$ bitcoind decoderawtransaction 0100000001efbeadde000000000000000000000000000000000000000000000000000000000000000000ffffffff0100c2eb0b000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000
{
    "txid" : "395791169994ef6826a952a21f8329ff132ffdb8c93a148103fc0ec069f2b670",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "00000000000000000000000000000000000000000000000000000000deadbeef",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "",
                "hex" : ""
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 2.00000000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 0b5b86d88f06861798ea629265fb793862c4755d OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a9140b5b86d88f06861798ea629265fb793862c4755d88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "12345Vypv2QSmuRXcciT5oEB27mPbWGeva"
                ]
            }
        }
    ]
}

Tú en createrawtransaction pones una transacción cualquiera, aunque como en este ejemplo no exista (quién sabe, a lo mejor la has creado localmente y todavía no está en la cadena de bloques, pero lo estará en el futuro). Esto no tiene ninguna relación con claves privadas ni nada, simplemente le dices qué inputs y outputs vas a conectar para crear una transacción nueva.

Con signrawtransaction sí que firmas, y sí que las claves privadas entran en juego, pero da igual porque esto idealmente lo realizas en un ordenador offline. Si las claves privadas no están en tu wallet las puedes especificar en la propia línea de comandos, quizá es eso lo que tenías en la cabeza… pero ya te digo, no es en el paso de construir la transacción sino al firmarla.
4430  Other / Off-topic / Re: Anyone still using bitmessage? on: May 28, 2013, 06:05:39 PM
I "use" it too.


They attach files to it all the time. There's a while mailing list just for sending nudie girl pictures. They have to Base64 encode them though, but BM has a 180mb file limit.
Really?  Well, that just shows how much I need to do more research.  That alone would make this greatly more useful for me.

There's even a proposal for implementing some kind of light MIME.
4431  Local / Hardware y Minería / Re: Ayuda con APIs de blockexplorer y blockchain on: May 28, 2013, 05:41:21 PM
dserrano5: sabía que no me fallarías  Wink En cuanto pueda le echo un vistazo a ese código y te digo algo.

Jejeje Cheesy. 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 Wink.
4432  Local / Español (Spanish) / Re: Apuestas con Bitcoins - Repercusiones legales on: May 28, 2013, 05:39:05 PM
Por ejemplo se me ocurre partir de Tor, aunque aquí el tema es la dificultad de acceso del player medio.

Bueno, tenemos onion.to y similares…
4433  Local / Hardware y Minería / Re: Ayuda con APIs de blockexplorer y blockchain on: 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  Wink

Formato "bloque,tamaño,transacciones":

Code:
$ 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:

Code:
  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í:

Code:
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.
4434  Bitcoin / Development & Technical Discussion / Re: Resubmit raw transactions on: May 28, 2013, 02:39:18 PM
Not off the top of my head, but look for the discussion around BIP 34.

And BIP 30 too. Thank you!
4435  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 28, 2013, 01:54:13 PM
Igual me pica la mano por invertir para saber como funciona todo el proceso.

Sería provechoso para todos que me des unas instrucciones de modo que el proceso quede documentado para todos.

En primer lugar creas la transacción, por ejemplo con createrawtransaction. Pongamos que queremos coger la primera salida de la transacción e9519006d274f9e54edea5a9751f342121e4f24f3c8a37be4ec3151dad53d71c y mandar 26 BTC a 12345Vypv2QSmuRXcciT5oEB27mPbWGeva:

Code:
$ bitcoind createrawtransaction '[{"txid":"e9519006d274f9e54edea5a9751f342121e4f24f3c8a37be4ec3151dad53d71c","vout":0}]' '{"12345Vypv2QSmuRXcciT5oEB27mPbWGeva":26}'
01000000011cd753ad1d15c34ebe378a3c4ff2e42121341f75a9a5de4ee5f974d2069051e90000000000ffffffff0100daf89a000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000

El churro resultante lo descodificamos con decoderawtransaction (no hace falta en la práctica):

Code:
$ bitcoind decoderawtransaction 01000000011cd753ad1d15c34ebe378a3c4ff2e42121341f75a9a5de4ee5f974d2069051e90000000000ffffffff0100daf89a000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000
{
    "txid" : "7fbb53a6e1b5abbe20cc9aa5142eb5d262ce6991c4db5a543168d1b952df07a2",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "e9519006d274f9e54edea5a9751f342121e4f24f3c8a37be4ec3151dad53d71c",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "",
                "hex" : ""
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [
        {
            "value" : 26.00000000,
            "n" : 0,
            "scriptPubKey" : {
                "asm" : "OP_DUP OP_HASH160 0b5b86d88f06861798ea629265fb793862c4755d OP_EQUALVERIFY OP_CHECKSIG",
                "hex" : "76a9140b5b86d88f06861798ea629265fb793862c4755d88ac",
                "reqSigs" : 1,
                "type" : "pubkeyhash",
                "addresses" : [
                    "12345Vypv2QSmuRXcciT5oEB27mPbWGeva"
                ]
            }
        }
    ]
}

Ahí puede verse que dentro de vin > scriptSig no hay nada; eso es porque la transacción está sin firmar. Como curiosidad, la parte donde dice "sólo el que tiene tal clave privada puede gastar" está en vout > scriptPubKey > asm. "0b5b86d88f06861798ea629265fb793862c4755d" y "12345Vypv2QSmuRXcciT5oEB27mPbWGeva" son lo mismo, representado de distintas maneras.

Para firmarla, procedemos con signrawtransaction (antes hay que desbloquear el wallet usando walletpassphrase):

Code:
$ bitcoind signrawtransaction 01000000011cd753ad1d15c34ebe378a3c4ff2e42121341f75a9a5de4ee5f974d2069051e90000000000ffffffff0100daf89a000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000
{
    "hex" : "01000000011cd753ad1d15c34ebe378a3c4ff2e42121341f75a9a5de4ee5f974d2069051e9000000006a4730440220143a4c3008f8502aa64cfffffffffffffffffffffffffa32d587da603d7e40b3022027ead7f994b52a412de6bbd7246f17ec45612c9829a2034b989c36ad10ec8c46012103bf7f10738469801723bb5bebbf54de86121eb48fca2dcd463805bbf7f54b3130ffffffff0100daf89a000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000",
    "complete" : true
}

Esto nos devuelve otro churro, que es la misma transacción ya firmada, y un valor que nos dice que ya están todas las firmas incluidas y la transacción puede enviarse a la red (usando sendrawtransaction).

Podemos hacer un decoderawtransaction del churro nuevo para comprobar la presencia de la firma:

Code:
$ bitcoind decoderawtransaction 01000000011cd753ad1d15c34ebe378a3c4ff2e42121341f75a9a5de4ee5f974d2069051e9000000006a4730440220143a4c3008f8502aa64cfffffffffffffffffffffffffa32d587da603d7e40b3022027ead7f994b52a412de6bbd7246f17ec45612c9829a2034b989c36ad10ec8c46012103bf7f10738469801723bb5bebbf54de86121eb48fca2dcd463805bbf7f54b3130ffffffff0100daf89a000000001976a9140b5b86d88f06861798ea629265fb793862c4755d88ac00000000
{
    "txid" : "72ca3d55d2774233c4afc72109607d3ea7269b101ed3008d0823ccf65ec95315",
    "version" : 1,
    "locktime" : 0,
    "vin" : [
        {
            "txid" : "e9519006d274f9e54edea5a9751f342121e4f24f3c8a37be4ec3151dad53d71c",
            "vout" : 0,
            "scriptSig" : {
                "asm" : "30440220143a4c3008f8502aa64cfffffffffffffffffffffffffa32d587da603d7e40b3022027ead7f994b52a412de6bbd7246f17ec45612c9829a2034b989c36ad10ec8c4601 03bf7f10738469801723bb5bebbf54de86121eb48fca2dcd463805bbf7f54b3130",
                "hex" : "4730440220143a4c3008f8502aa64cfffffffffffffffffffffffffa32d587da603d7e40b3022027ead7f994b52a412de6bbd7246f17ec45612c9829a2034b989c36ad10ec8c46012103bf7f10738469801723bb5bebbf54de86121eb48fca2dcd463805bbf7f54b3130"
            },
            "sequence" : 4294967295
        }
    ],
    "vout" : [    bla bla bla, lo mismo de antes   ]
}

He modificado la firma a mano para que sea inválida, de lo contrario cualquiera podría enviar esa transacción Wink.

Ahora bien, el meollo de las firmas offline es que las claves privadas no estén en un ordenador conectado a la red. En éste tendríamos lo necesario para consultar nuestras direcciones y sus saldos, y ver las transferencias nuevas que nos van llegando. A la hora de enviar fondos a otro sitio, podríamos hacer el createrawtransaction en esta máquina, pero el signrawtransaction hay que hacerlo allí donde estén las claves privadas, que idealmente sería una máquina sin conexión. Con la transacción ya firmada, podemos volver a la máquina conectada y enviarla con sendrawtransaction. Yo no lo he probado, pero todo el mundo dice que con Armory este proceso está chupao de hacer.
4436  Bitcoin / Development & Technical Discussion / Re: Resubmit raw transactions on: May 28, 2013, 12:30:26 PM
*  Once upon a time, it was possible to create identical chains of transactions.

Wow, got a link to this?
4437  Local / Español (Spanish) / Re: ¿Firmar transacciones offline? La parte más oscura de BTC on: May 28, 2013, 09:25:53 AM
No entiendo eso de firmar transacciones y menos transacciones offline. ¿Hay alguien con la suficiente paciencia y nivel pedagógico que pueda ayudarnos? (somos varios con la duda) 

Una transacción consta de "entradas" y "salidas". Las entradas apuntan a salidas de transacciones previas. Cuando tú me haces una transacción, las entradas apuntan a las salidas de otras transacciones que has recibido en el pasado. Y en las salidas no pones mi dirección, realmente lo que pones es "el que tenga la clave privada correspondiente a esta dirección". Y yo, a la hora de querer gastar esas coins, ¿cómo demuestro que la tengo? Pues firmando mi nueva transacción con ella.
4438  Local / Español (Spanish) / Re: ¿Qué sistema de protección de monedero utilizan? on: May 28, 2013, 09:06:46 AM
Con respecto a la privacidad, el problema que veo en Bitcoin-qt es la falta de un mecanismo de control de monedas que permita elegir la dirección desde la que se hace un pago.  [...] me parece más fácil gestionar estas cosas con una lista de direcciones en papel.

Es cierto que esa es una carencia notable; sin embargo a mí me parece que andar con papeles paquí y pallá es bastante más incómodo que usar alguna clase de parche o utilidad externa de las que hay disponibles. Yo mismo tengo un scriptcillo en perl y hace tiempo que no uso otra cosa.

Sobre lo de la seguridad de tener que meter la contraseña, estoy de acuerdo. En linux aún te puedes saltar los keyloggers de X11 si operas en la tty (en ese punto haría falta un keylogger a nivel de núcleo) pero entonces se vuelve más incómodo.
4439  Local / Español (Spanish) / Re: Pagos con BTC en formato papel o tarjeta on: May 28, 2013, 08:56:15 AM
En cualquier caso se puede implementar el sistema de https://bitcoinpaperwallet.com/, donde la clave privada queda escondida, y el billete queda inutilizado cuando es levantado el holograma.

Ese paper wallet es chulo, sí, pero no nos quita el problema original: yo te pago tus servicios con uno de estos y al mismo tiempo hago una transfe de esos mismos fondos a otra dirección mía.
4440  Local / Español (Spanish) / Re: ¿Qué sistema de protección de monedero utilizan? on: May 27, 2013, 08:23:02 PM
Yo doy ostias como panes.

¿Tiene ostias baguettes? Deme dos, gracias.

Yo tampoco entiendo eso de la privacidad con los paper wallets...
Pages: « 1 ... 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 [222] 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 ... 276 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!