Avançar para o conteúdo principal

Compromisso

Introdução ao contrato de saque de Celo e como usá-lo para retirar, revogar e reivindicar fundos.


O que é o Contrato de Compromisso?

O contrato Escrow utiliza a característica de identidade leve da Celo para permitir que os usuários enviem pagamentos para outros usuários que ainda não tenham um par de chaves pública/privada ou um endereço. Esses pagamentos são armazenados neste próprio contrato e podem ser retirados pelo destinatário pretendido ou recuperados pelo remetente. Essa funcionalidade oferece suporte a both versões da identidade leve do Celo: baseada em identificador (como um número de telefone para mapeamento de endereço) e baseada em privacidade. Isto dá aos pedidos que tencionam utilizar este contrato uma certa flexibilidade para decidirem qual a versão da identidade que preferem utilizar.

Como funciona

Se Alice quer enviar um pagamento para Bob, que ainda não tem um endereço associado, ela enviará o pagamento para este Escrow e também criará um par de chaves público-privada temporárias. O endereço temporário associado será referido como o paymentId. Alice então compartilhará externamente a nova chave privada temporária, também conhecido como um invitation, para Bob, quem usará mais tarde para reivindicar o pagamento. Este Id de pagamento agora será armazenado neste contrato e será mapeado para detalhes relevantes relacionados a este pagamento específico, como: o valor do pagamento, um identificador opcional do destinatário pretendido, um valor opcional de attestations que o beneficiário deve ter antes de poder retirar o pagamento, um período de tempo após o qual o remetente pode revogar o pagamento (através do campo expirySegundos - mais sobre isso na seção "retirada" abaixo), que ativos estão sendo transferidos neste pagamento, etc.

Resgate

O destinatário de um pagamento de comprommisso pode optar por retirar seu pagamento assumindo que eles tenham criado com sucesso seu próprio par de chaves pública/privada e agora tenham um endereço. Para provar a sua identidade, o destinatário deve ser capaz de provar a propriedade da chave privada do Id de pagamento, que deveria ter sido dado a eles pelo remetente original. Se o remetente definir um número mínimo de certificados necessários para retirar o pagamento, isso também será verificado para retirar com êxito. Seguindo o mesmo exemplo de acima, se Bob quer retirar o pagamento que Alice enviou a ele, Ele tem de assinar uma mensagem com a chave privada que lhe foi dada por Alice. A mensagem será o endereço da conta recém-criada do Bob. Bob então será capaz de retirar seu pagamento fornecendo o paymentId e o v, r, e s saídas da assinatura ECDSA gerada. Um pagamento garantido pode ter expirySeconds definido, que faz referência à quantidade de tempo que deve passar antes que o remetente possa revogar o pagamento. Observe que depois de expirySegundos terem passado. o beneficiário do pagamento ainda pode sacar o pagamento, contanto que ele ainda não tenha sido revogado..

Revogando & Recuperando

Alice envia a Bob um pagamento caucionado. Digamos que Bob nunca o retirar ou pior, a chave privada temporária de que precisa para retirar o pagamento é perdida ou enviado para a pessoa errada. Para este propósito, o protocolo de Celo também permite que os remetentes reivindiquem qualquer pagamento não reivindicado que tenham enviado. Após os expirySeconds (definidos pelo remetente na criação do pagamento) de um pagamento em garantia passarem, o remetente do pagamento pode revogar o pagamento e recuperar seus fundos apenas com o paymentId.