Ir al contenido principal

Escrow

Introducci贸n al contrato de Celo Escrow y c贸mo utilizarlo para retirar, revocar y recuperar fondos.


驴Qu茅 es el contrato de Escrow?

El contrato de Escrow utiliza la funci贸n de identidad ligera de Celo para permitir a los usuarios enviar pagos a otros usuarios que a煤n no tienen un par de claves p煤blicas/privadas o una direcci贸n. Estos pagos se almacenan en el mismo contrato y pueden ser retirados por el destinatario o reclamados por el remitente. Esta funcionalidad soporta ambas versiones de la identidad ligera de Celo: identifier-based (por ejemplo, un n煤mero de tel茅fono para mapear direcciones) y privacy-based. Esto da a las aplicaciones que pretenden utilizar este contrato cierta flexibilidad a la hora de decidir qu茅 versi贸n de identidad prefieren utilizar.

驴C贸mo funciona?

Si Alice quiere enviar un pago a Bob, que a煤n no tiene una direcci贸n asociada, enviar谩 ese pago a este contrato Escrow y tambi茅n crear谩 un par temporal de claves p煤blicas/privadas. La direcci贸n temporal asociada se llamar谩 paymentId. Alice compartir谩 entonces externamente la nueva clave privada temporal, tambi茅n conocido como una invitation, a Bob, que m谩s tarde la utilizar谩 para reclamar el pago. Este paymentId ahora se almacenar谩 en este contrato y se asignar谩 a los detalles relevantes relacionados con este pago espec铆fico, tales como: el valor del pago, un identificador opcional del destinatario previsto, una cantidad opcional de attestations que el destinatario debe tener antes de poder retirar el pago, una cantidad de tiempo despu茅s de la cual el remitente puede revocar el pago (a trav茅s del campo expirySeconds - m谩s sobre eso en la secci贸n "withdrawing" de abajo), que activo est谩 siendo transferido en este pago, etc.

Retirando

El receptor de un pago incurrido puede optar por retirar su pago suponiendo que hayan creado con 茅xito su propio par de claves p煤blicas/privadas y ahora tengan una direcci贸n. Para demostrar su identidad, el receptor debe ser capaz de demostrar la propiedad de la clave privada del paymentId, que deber铆a haberles dado el remitente original. Si el remitente establece un n煤mero m铆nimo de certificaciones requeridas para retirar el pago, tambi茅n se comprobar谩 para retirar con 茅xito. Siguiendo el mismo ejemplo anterior, si Bob quiere retirar el pago que Alicia le envi贸, debe firmar un mensaje con la clave privada que le ha dado Alice. El mensaje ser谩 la direcci贸n de la nueva cuenta de Bob. Bob podr谩 entonces retirar su pago proporcionando el paymentId y la v, r y s salida de la firma ECDSA generada. Un pago incurrido puede tener establecido expirySeconds, que hace referencia a la cantidad de tiempo que debe pasar antes de que el remitente pueda revocar el pago. Ten en cuenta que despu茅s de que hayan pasado expirySegundds, el destinatario del pago puede seguir retirando el pago mientras no haya sido revocado.

Revocando & Reclamando

Alice env铆a a Bob un pago escrowed. Digamos que Bob nunca lo retira o, peor a煤n, la clave privada temporal que necesita para retirar el pago se pierde o se env铆a a la persona equivocada. Para ello, el protocolo de Celo tambi茅n permite a los remitentes reclamar cualquier pago sin reclamar que hayan enviado. Despu茅s de que haya pasado el pago escrowed expiryseconds (establecido por el remitente al crear el pago), el remitente del pago puede revocar el pago y recuperar sus fondos con s贸lo el pagmentId.