6. CoinJoinvolver al índiceGregory Maxwell presenta una solución alternativa para mejorar el nivel de privacidad de los usuarios de Bitcoin llamada
CoinJoin13, la cual es un desarrollo de las ideas anteriormente expuestas sobre el
Marcado o Manchado14. CoinJoin es un mecanismo que combina varias transacciones similares en una transacción que consta de muchos inputs y outputs. El concepto de CoinJoin se ha implementado dentro de una aplicación llamada igualmente CoinJoin
15.
Transacciones CoinJoin13La imagen de arriba explica cómo funciona CoinJoin y cómo se compara con transacciones de Bitcoin.
En la transacción 1, una dirección 1FF que tiene 50 BTC quiere enviar 0,5 BTC a otra dirección, 1A1, con una dirección de retorno de 1FF. Al final de la transacción, la dirección 1FF tendrá 49,5 Bitcoin.
En la transacción 2 hay muchas direcciones de input y output. Aunque dicho esquema parezca el de una transacción ordinaria de Bitcoin, se puede usar para proteger la identidad del usuario asociada con la transacción. Por ejemplo, el propietario de la dirección 1A1 quiere enviar 0,8 BTC a 1E5 y no quiere que nadie más sepa de su transacción, por lo que combina la misma con otra transacción del mismo tamaño, por ejemplo, de la dirección 1C3 a 1D4. Esto supone que, mirando la transacción, el observador no puede determinar quien recibe de la dirección 1A1, porque el Bitcoin se pudo haber originado desde 1D4 o 1E5.
ACTUALIZACIÓNEntre las aplicaciones que son pioneras en la implementación del concepto CoinJoin:
-snip-
Enlace a descarga:
https://wasabiwallet.io/¡Enhorabuena a los desarrolladores de Wasabi y JoinMarket! JoinMarket ha innovado mucho la ciencia de CoinJoin (y, por cierto, belcher escribió un completo y excelente
artículo wiki sobre privacidad), mientras que Wasabi es la primera cartera que incorpora CoinJoin con una
gran usabilidad. Como firmante y donante al fondo de recompensas de CoinJoin, ¡estoy entusiasmado porque estos dos software existan!
Para todo aquél que busque mejorar su privacidad, recomiendo encarecidamente echar un vistazo a Wasabi, especialmente antes que a otros "mixers" centralizados. -snip-
Nota:-snip-Wasabi ya no es nuestro amigo. Se han subido al barco de los enemigos. Así que creo que es importante o bien borrarlos del OP o añadir una nota muy llamativa informando de que ya no promueven la Privacidad y el Anonimato sino más bien lo contrario. Es una decisión muy decepcionante por parte de Wasabi y me enoja, pero es lo que hay. -snip-
Ver también el siguiente enlace:
https://blog.wasabiwallet.io/zksnacks-blacklisting-update/> Todavía no han explicado como zkSNACKs Ltd va a añadir a la lista negra determinados outputs de transacciones no gastadas si no están monitorizando y recopilando datos de usuario.
No lo explicamos porque es trivial. Por arquitectura, el coordinador de Wasabi no puede quebrantar la privacidad de sus usuarios. Esto no significa que que el coordinador decida no recopilar datos, sino que no podría ni aunque quisiera. El coordinador solo conoce las UTXOs que participan en coinjoins -como así lo hace el público- y no supone una filtración de cara a la privacidad.
Referencias:
13. gmaxwell, CoinJoin: Bitcoin privacy for the real world
14. gmaxwell, I taint rich! (Raw txn fun and disrupting 'taint' analysis; >51kBTC linked!)
15. P. Martin & A. Taaki. (2013, August 25, 2015) Anonymous Bitcoin Transactions.
- Dimaz A.W. & Oscar D., Blockchain dari Bitcoin untuk Dunia, pages 104-105, 2017: Jasakom
- Otras referencias ver post #1
7. CoinSwapvolver al índiceGregory Maxwell
16 presentó por primera vez CoinSwap en el siguiente hilo:
https://bitcointalk.org/index.php?topic=321228.0CoinSwap protege la información de transacción entre el emisor y el receptor. CoinSwap permite a las partes involucradas realizar transacciones garantizando que ninguna de ellas puede robar los Bitcoin de la otra. Para ello, un tercero es necesario como nexo entre pagador y receptor. Algunos métodos de transacciones usados en CoinSwap incluyen el escrow 2 de 2 y las transacciones con hash bloqueada.
Protocolo CoinSwap:En este protocolo, se asume que todas las partes tienen canales privados de comunicación.
El protocolo CoinSwap se puede explicar de la siguiente manera:
Alicia actúa como pagadora,
Pedro como el receptor del pago,
y Carolina como una intermediaria (escrow).
Este protocolo se divide en 3 fases, a saber, fase 0, fase 1 y fase 2.
Fase 0. Fija los escrows y los reembolsos tras el tiempo de espera.
Fase 1. Asegura que si se paga a Pedro no hay posibilidad de que Carolina no sea pagada.
Fase 2. Simplemente libera directamente al escrow porque todo el mundo está feliz de que quepa posibilidad de engaño.
Alicia Carolina Pedro (Bob)
=====================================================================================
0.Computes TX_0: 2of2{A,C} |Computes TX_1: 2of2{C,B} | \
1.Send TX_0 TXID ------------> | |
2. |Send TX_1 TXID ------------> |
3. |Computes TX_0 locked refund |Computes TX_1 locked refund|
4. <------------ Send TX_0_refund | | Fase 0
5. | <------------ Send TX_1_refund. |
6.Announces TX_0 to network |Announces TX_1 to network | |
7. | | |
8.****** Network confirms TX_0: Alice pays according to 2 of {Alice, Carol} ******|
9.****** Network confirms TX_1: Carol pays according to 2 of {Carol, Bob} ******/
A. | |Selects secret value X \
B. | |Computes HX = H(X) |
C. | <------------ Send HX |
D. <----------------------------------------- Send HX |
E.Computes TX_2: TX_0>Carol+X | | | Fase 1
F.Send TX_2 ------------> | |
G. | Computes TX_3: TX_1>Bob+X | |
H. | Send TX_3 ------------> |
I. | <------------ Send X /
J. | Computes TX_4: TX_1>Bob | \
K. | Send TX_4 ------------> |
L. | |Signs and announces TX_4 |
M.****** Network confirms TX_4: Carol pays Bob via 2 of {Carol, Bob} ******|
N.Computes TX_5: TX_0>Carol | | | Fase 2
O.Send TX_5 ------------> | |
P. |Signs and announces TX_5 | |
Q.****** Network confirms TX_5: Alice pays Carol via 2 of {Alice, Carol} ******/
=====================================================================================
Diagrama del Protocolo CoinSwap.16Fase 0En la Fase 0 se realiza el proceso de realizar una transacción de escrow entre los participantes. Alicia realiza una transacción de escrow TX_0 que es un escrow 2-de-2 entre Alicia y Carolina usando los Bitcoin de Alicia. Esta transacción se puede leer como:
"Alicia pagará una cantidad determinada de Bitcoin a Carolina si Alicia y Carolina están de acuerdo."
Después, Carolina también realiza una transacción TX_1, que es un escrow 2-de-2 entre Carolina y Pedro usando los Bitcoin de Carolina. Esta transacción se puede leer como: "Carolina pagará una cantidad determinada de Bitcoin a Pedro si Carolina y Pedro están de acuerdo."
Para asegurar esta fase, Alicia realiza un reembolso_TX_0 con un tiempo límite determinado, según el cual Alicia recuperará los Bitcoin pagados a Carolina si algo sucede en el futuro.
Al igual que Alicia, Carolina también realiza un reembolso_TX_1, que hará que Carolina recupere los Bitcoin pagados a Bot si algo sucede en el futuro. Las transacciones de reembolso_TX_0 y reembolso_TX_1 no se envían a la red por Alicia o Carolina. Las transacciones enviadas a la red Bitcoin en esta fase son la TX_0 y TX_1
Fase 1La Fase 1 fija garantías de transacción para todos los participantes involucrados. Esto significa que si Pedro toma las monedas de Carolina, Carolina también puede hacer pagos por parte de Alicia. Esto es posible gracias a un esquema de transacción de hash bloqueada.
En este esquema, Pedro elige una contraseña secreta X, luego calcula el valor HX, que es el valor de hash de X con la fórmula HX=H(X) y envía HX de Alicia y Carolina. Alicia crea una nueva transacción TX_2 que tomará las monedas de TX_0 usando la firma de Carolina y el valor X y le paga a la dirección de Carolina. Al igual que Alicia, Carolina realiza una nueva transacción con un esquema de transacción de hash bloqueado TX_3 que tomará las monedas de TX_1 usando la firma de Pedro y el valor X y le paga a Pedro.
En esta fase, si Pedro engañara y se llevara las monedas usando TX_3, entonces Carolina puede recuperar los pagos usando TX_2 porque el valor de X se puede saber cuando Pedro usa TX_3 y lo publica en la red Bitcoin.
Fase 2Si TX_2 y TX_3 no se envían a la red Bitcoin, entonces la Fase 2 puede continuar. En esta fase, Pedro le dice a Carolina el valor de X, y Carolina realiza una nueva transacción TX_4 que toma las monedas de TX_1 usando la firma de Pedro. Pedro puede usar la transacción TX_4 para recibir el pago. Del mismo modo, Alicia realiza una transacción TX_5 que tomará las monedas de TX_0 usando la firma de Carolina y le paga a Carolina. Carolina puede enviar la transacción TX_5 a la red de Bitcoin para recibir el pago.
Si este protocolo está completo, solo se envían a la red de Bitcoin las transacciones TX_4 y TX_5 usando TX_0 y TX_1, mientras que el resto de transacciones se borran y no se envían a la red de Bitcoin.
CoinSwap es un ejemplo de método Zero Knowledge Contingent Payment
17 que tiene las siguientes características:
1. Transacción de Hash bloqueada
2. Transacción de tiempo bloqueado
3. Transacción escrow 2-de-2
En CoinSwap, todos los pasos del protocolo deben seguir el orden correcto para producir una transacción segura y garantizada sin tener que confiar en un tercero.
Referencias:
16. gmaxwell, CoinSwap: Transaction graph disjoint trustless trading
17. Bitcoin Wiki. (2011, September 28, 2015), Zero Knowledge Contingent Payment
- Dimaz A.W. & Oscar D., Blockchain dari Bitcoin untuk Dunia, pages 105-107, 2017: Jasakom
- Otras referencias ver post #1