Pages:
Author

Topic: Lotería de Navidad. - page 3. (Read 14577 times)

legendary
Activity: 1568
Merit: 1032
Beyond the flavor!
November 08, 2014, 02:58:53 PM
Caramba!!! Sé que es algo mucho mas fácil de lo que aparenta. Pero yo mismo ahora no sabría como hacerlo. ¿Me lo pueden explicar como a un niño de 5 años? ¿Cual es el comando para obtener la pubkey de una direccion de mi cartera?

PD: Tengo el cliente 0.9.2.1 ¿Puedo con ese? ----> Confirmado, con ese se puede
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 08, 2014, 12:39:08 PM
Recapitulando, tenemos estas pubkeys:

Code:
alexr_96   17dMvurSgqb5XdyawqGcKDagydA42U6dz5  043DF00F55AA3053D9F92382C3278F786DCBEFC217204DACF8A11331D633A412467C8180DE58DFFCED5158AF065AD8E0CBEDF441BDF8F1E34909624DC6FE579056
fernarios  131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK  02bd29db9743a8b586fafa27d218f1dbd14b67a5e065e955c3ef1aa88aea20aad7
dserrano5  1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN  03f4de1a85a611b1aa2009d0423d6ec74754f3157024106cb4f2850c4864a5efc7

Venga, ¿quién más se apunta?
No es así, la que has puesto de fernarios es mía, solo estaba comprobando si la public key se puede sacar sin la privada. Sería así:
Code:
alexr_96   17dMvurSgqb5XdyawqGcKDagydA42U6dz5  043DF00F55AA3053D9F92382C3278F786DCBEFC217204DACF8A11331D633A412467C8180DE58DFFCED5158AF065AD8E0CBEDF441BDF8F1E34909624DC6FE579056
fernarios  1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA  02bd29db9743a8b586fafa27d218f1dbd14b67a5e065e955c3ef1aa88aea20aad7
dserrano5  1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN  03f4de1a85a611b1aa2009d0423d6ec74754f3157024106cb4f2850c4864a5efc7

legendary
Activity: 1974
Merit: 1029
November 08, 2014, 12:08:28 PM
Recapitulando, tenemos estas pubkeys:

Code:
alexr_96   17dMvurSgqb5XdyawqGcKDagydA42U6dz5  043DF00F55AA3053D9F92382C3278F786DCBEFC217204DACF8A11331D633A412467C8180DE58DFFCED5158AF065AD8E0CBEDF441BDF8F1E34909624DC6FE579056
fernarios  131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK  02bd29db9743a8b586fafa27d218f1dbd14b67a5e065e955c3ef1aa88aea20aad7
dserrano5  1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN  03f4de1a85a611b1aa2009d0423d6ec74754f3157024106cb4f2850c4864a5efc7

Venga, ¿quién más se apunta?
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 08, 2014, 11:17:01 AM
Supongo que puedes poner direcciones en lugar de pubkeys si están en tu wallet, o sea, si tienes la privkey, o sea, si todas son ismine=true. Pero esto es una suposición, nada más.
Es probable, con armory pasa lo mismo, porque la clave pública se saca de la clave privada

Code:


{
"isvalid" : true,
"address" : "17dMvurSgqb5XdyawqGcKDagydA42U6dz5",
"ismine" : true,
"isscript" : false,
"pubkey" : "043df00f55aa3053d9f92382c3278f786dcbefc217204dacf8a11331d633a412467c8180de58dffced5158af065ad8e0cbedf441bdf8f1e34909624dc6fe579056",
"iscompressed" : false,
"account" : ""
}
legendary
Activity: 1974
Merit: 1029
November 08, 2014, 10:56:24 AM
043DF0[…]

¿Por qué es tan grande??

Porque no está comprimida, empieza por 04. La tuya sí lo está, empieza por 02 o 03.


es extraño que la ayuda diga que pueden ser direcciones, en la wiki también dice "Each key is a bitcoin address or hex-encoded public key.".... hummm ¿tal vez pueden ser direcciones sólo si son direcciones del que ejecuta el comando?, de pronto internamente con validateaddress obtiene la llave pública, pero sólo si "ismine" es verdadero.

Supongo que puedes poner direcciones en lugar de pubkeys si están en tu wallet, o sea, si tienes la privkey, o sea, si todas son ismine=true. Pero esto es una suposición, nada más.
hero member
Activity: 616
Merit: 501
November 08, 2014, 10:28:08 AM
043DF00F55AA3053D9F92382C3278F786DCBEFC217204DACF8A11331D633A412467C8180DE58DFF CED5158AF065AD8E0CBEDF441BDF8F1E34909624DC6FE579056

PD La dirección que he usado antes ya no es la correcta. Ahora estoy usando esta, que corresponde a la clave pública de este mensaje: 17dMvurSgqb5XdyawqGcKDagydA42U6dz5

¿Por qué es tan grande?? creo que hay que hacerle un SHA-256 a la tuya para que sea válida... ¿me equivoco?, intenta con validateaddress, te lo da en el formato que se usa aquí.
hero member
Activity: 616
Merit: 501
November 08, 2014, 10:14:50 AM
Hmm, creo que al final sí que van a hacer falta claves públicas:

Code:
$ bitcoin-cli createmultisig 2 '["1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA","131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK","1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN"]'
error: {"code":-1,"message":"no full public key for address 1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA"}

Sí, esa duda también la tenía yo, es extraño que la ayuda diga que pueden ser direcciones, en la wiki también dice "Each key is a bitcoin address or hex-encoded public key.".... hummm ¿tal vez pueden ser direcciones sólo si son direcciones del que ejecuta el comando?, de pronto internamente con validateaddress obtiene la llave pública, pero sólo si "ismine" es verdadero.


Code:
validateaddress 131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK
{
"isvalid" : true,
"address" : "131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK",
"ismine" : false
}

validateaddress 1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA
{
"isvalid" : true,
"address" : "1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA",
"ismine" : true,
"isscript" : false,
"pubkey" : "02bd29db9743a8b586fafa27d218f1dbd14b67a5e065e955c3ef1aa88aea20aad7",
"iscompressed" : true,
"account" : "prueba multifirma"
}

Bueno, la mía entonces es: 02bd29db9743a8b586fafa27d218f1dbd14b67a5e065e955c3ef1aa88aea20aad7

hero member
Activity: 532
Merit: 500
0x9CE937CD
November 08, 2014, 09:46:04 AM
043DF00F55AA3053D9F92382C3278F786DCBEFC217204DACF8A11331D633A412467C8180DE58DFF CED5158AF065AD8E0CBEDF441BDF8F1E34909624DC6FE579056

PD La dirección que he usado antes ya no es la correcta. Ahora estoy usando esta, que corresponde a la clave pública de este mensaje: 17dMvurSgqb5XdyawqGcKDagydA42U6dz5
legendary
Activity: 1974
Merit: 1029
November 08, 2014, 09:27:51 AM
Hmm, creo que al final sí que van a hacer falta claves públicas:

Code:
$ bitcoin-cli createmultisig 2 '["1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA","131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK","1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN"]'
error: {"code":-1,"message":"no full public key for address 1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA"}
legendary
Activity: 1974
Merit: 1029
November 08, 2014, 09:25:30 AM
se necesitan 5 direcciones

Pensé que solo servían claves públicas, y estaba a punto de corregir esto, pero la ayuda dice que en efecto también sirven direcciones. TIL Smiley.

1M3PdugNuQJ7r8ygsvKxjvySQSaWGrrNVN
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 08, 2014, 08:57:15 AM
131H98fGdABQG5CnyR4ADo7FfLLmxZWmSK
hero member
Activity: 616
Merit: 501
November 08, 2014, 08:26:36 AM
Hagamos una prueba con el core, y así aprendemos y perdemos el miedo entre todos, veremos que no es para nada complicado... ¿alguien se anima?, se necesitan 5 direcciones, va la mía: 1A4Vy1MCSfU6hP6Qfpnetnd6m8AoEcoLjA
legendary
Activity: 1974
Merit: 1029
November 08, 2014, 05:04:38 AM
Me he mareado leyendo todos estos post.

Smiley

Desde tu punto de vista es muy sencillo:

- Al principio ejecutas un validateaddress sobre una dirección tuya y publicas el resultado.
- Después del sorteo alguien te pasará un churro hexadecimal y tú haces signrawtransaction y publicas el resultado.

Fin! Cheesy
legendary
Activity: 1212
Merit: 1052
November 08, 2014, 04:13:11 AM
Me he mareado leyendo todos estos post.
No puede ser tan complicado.
En mi modesta opinión, o hay algo más simple, o deberíamos hacerlo como el año pasado. Con un escrow de carne y hueso....
legendary
Activity: 1974
Merit: 1029
November 08, 2014, 03:54:40 AM
La explicación de multisig en bitcoin core es más complicada que el proceso en sí, la verdad. Básicamente:

- Los miembros del escrow publican la pubkey de una dirección suya.
- Uno cualquiera, o todos, crean la dirección multisig (addmultisigaddress).
- El sorteo tiene lugar.
- Uno cualquiera de los escrows crea una tx pagando los fondos a la dire del ganador, y le pone la firma (createrawtransaction, signrawtransaction).
- Todos comprueban que el pago va donde tiene que ir (decoderawtransaction).
- Otro de los escrows añade su firma a la tx (signrawtransaction).
- Y luego otro, y otro, hasta que el resultado de signrawtransaction dice que la tx ya está completa.
- Cualquier persona envía la tx a la red.

El problema es que haya el número suficiente de usuarios de armory/bitcoin core.
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 07, 2014, 09:09:19 PM
Aquí una conferencia de VEscudero sobre como se usa la multifirma, es 1:30h pero merece la pena verlo https://www.youtube.com/watch?v=tnbXUEstwrI
Pero si no quereis verla entera, la multifirma de armory esta entre el 15:18 al 29:30 mas o menos
hero member
Activity: 616
Merit: 501
November 07, 2014, 08:45:00 PM
Con lo intuitivo que es en armory Shocked

Bueno nunca he usado Armory por eso no tengo ni idea, pero creo que los comandos no tienen mayor dificultad, lo único engorroso es recolectar las txid de los depósitos para crear la transacción del premio (pero eso es puro copy/paste del blockchain.info)... pero sí, supongo que en Armory podría ser más "sencillo" con interfaz... por ahí hay un request hace tiempo para agregar la interfaz de multifirmado a bitcoin-qt, pero nada...
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 07, 2014, 08:37:32 PM
Con lo intuitivo que es en armory Shocked
hero member
Activity: 616
Merit: 501
November 07, 2014, 08:10:31 PM
Con bitcoind se puede hacer, sin que se necesite Armory, con un comando se crea la dirección a partir de las llaves públicas de los escrows, cuando alguien gane el premio con otro comando alguien crea la transacción del premio, y con otro comando cada escrow la firma hasta completar las 3 firmas necesarias, y con otro comando alguien la envía a la red. En cuanto a los participantes no tienen que hacer nada raro, se deposita como en cualquier otra dirección Bitcoin, todo el trabajo "raro" lo hacen los 5 escrows.

Algo así (me corrigen si me equivoco en algo por favor):

Un escrow usa la dirección de cada escrow para crear la dirección multifirma (3 firmas de 5):

Code:
addmultisigaddress 3 '["1escrow1blablablablablablabla","1escrow2blablablablablablabla","1escrow3blablablablablablabla","1escrow4blablablablablablabla","1escrow5blablablablablablabla"]'
resultado: 3multifirmablablablablablablabla

Los demás escrows (o cualquier usuario) ejecutan también el comando para comprobar que ese es el resultado correcto.

Cuando el sorteo tenga un ganador, uno de los escrow (digamos "escrow1") recolecta las id de las transacciones de depósito y crea una transacción que transfiera el premio a la dirección del ganador:

Code:
createrawtransaction '[{"txid":"txiddeposito1blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito2blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito3blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito4blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito5blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito6blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito7blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito8blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito9blablablablablablablablablablablablablablablablablabla","vout":0}, {"txid":"txiddeposito10blablablablablablablablablablablablablablablablablabl","vout":0}]' '{"1ganadorblablablablablablabla":0.9995}'
resultado: resultado1rawblablablablablablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablablablablablablablablablablab lablablablablablablablabla

escrow1 la firma:
Code:
signrawtransaction resultado1rawblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
resultado: resultado1firmadoblablablablablablablablablablablablablablablablablablablablabl ablablablablablablablablablablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablablablablablablablablablablab lablabla

escrow1 publica el resultado en el foro.

Entonces escrow2 comprueba que la transacción esté bien:
Code:
decoderawtransaction resultado1firmadoblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
El resultado es el JSON de la transacción, escrow2 comprueba que todo esté bien (que la dirección de destino sea la del ganador, que las txid sean todos los depósitos, y que el valor sea la suma correcta de todos los depósitos menos la comisión para mineros), si todo está bien entonces la firma:
Code:
signrawtransaction resultado1firmadoblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
resultado: resultado2firmadoblablablablablablablablablablablablablablablablablablablablabl ablablablablablablablablablablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablablablablablablablablablablab lablabla

escrow2 publica el resultado en el foro.
escrow3 comprueba que la transacción esté bien:
Code:
decoderawtransaction resultado2firmadoblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
Entonces la firma:
Code:
signrawtransaction resultado2firmadoblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
resultado: resultado3firmadoblablablablablablablablablablablablablablablablablablablablabl ablablablablablablablablablablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablablablablablablablablablablab lablabla

escrow3 publica el resultado en el foro.
Con las tres firmas necesarias, alguien envía la transacción a la red:
Code:
sendrawtransaction resultado3firmadoblablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla

Sería bueno hacer una prueba con algunos céntimos, o en testnet, para no pecar de novatos...
hero member
Activity: 532
Merit: 500
0x9CE937CD
November 07, 2014, 07:08:40 PM
Mira el split wallet en www.bitaddress.org

-----EDITO----

Habrá enlaces mejores. Pero yo también me tengo que actualizar.
Pero eso no es multisig, el que lo genere, va a tener todo el poder.
A ver si mañana hago un tutorial rápido con armory

y estoy de acuerdo con Abraxas
Con la excusa de la innovación en el sorteo tendrías una buena razón para aprender Wink
Que mejor excusa que tener que usarlo para aprender a usarlo, yo he tardado un día en aprender.
Pages:
Jump to: