Entrega versus pagamento em um blockchain PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Entrega versus pagamento em uma blockchain

Como blockchains podem resolver o problema mais antigo do livro

O comércio entre pessoas é tão antigo quanto a própria humanidade. Tudo começou no momento em que o homem das cavernas Ogg disse ao homem das cavernas Ugg: “me dê pedra, você me dê bagas”. Mas o comércio traz consigo um problema fundamental: requer trust. O que impede Ogg de usar a pedra para esmagar Ugg e, em seguida, agarrar ambas as pedras e bagas antes de fugir? Como traduzimos um acordo de troca verbal em um mecanismo de aplicação que garante que ambos os lados mantenham sua palavra?

Para dar um exemplo moderno, há alguns anos vendi um carro no mercado de segunda mão. Encontrei um comprador na Internet, conhecemo-nos pessoalmente, ele mandou testar o carro e combinámos um preço. Então, ele foi ao banco pegar um cheque administrativo, que na verdade é dinheiro em forma mais compacta. Caminhamos juntos até um correio, onde posso assinar e enviar um formulário oficial do governo que transfere a propriedade legal do carro.

Então lá estamos nós, parados na janela do correio, e chegamos a um impasse estranho. O cheque ainda está em seu bolso e estou segurando o formulário assinado. Nós nos conhecemos há algumas horas e não temos motivos para confiar um no outro. Devo entregar o formulário primeiro e depois espero que ele me dê o cheque, em vez de fugir? Ou ele me entrega o cheque e espero que eu dê no formulário? De qualquer forma, alguém está se expondo ao risco de traição.

E então me ocorreu que deveria parar de me preocupar e apenas entregar o formulário. Porque? Porque uma das duas coisas pode acontecer a seguir. Ou o comprador me entrega o cheque, caso em que todos ficam satisfeitos e a troca é concluída. Mas e se ele fugir em vez disso? Nesse caso, o funcionário dos correios verá e rasgará o formulário que acabei de dar a ele. Bingo, temos uma troca segura.

Você viu o que aconteceu lá? Nosso dilema foi resolvido por meio de um intermediário, neste caso o caixa dos correios. O balconista garante que uma transação justa ocorra ou nenhuma transação. E não é qualquer intermediário que pode fornecer este serviço. Tem que ser alguém de confiança de ambas as partes. No caso de um funcionário de uma agência dos correios do governo, isso decorre de nossa confiança no próprio governo. Se os funcionários dos correios pudessem ser subornados, eu ou o comprador poderíamos arquitetar uma situação em que acabaríamos com dinheiro e carro. Na verdade, em muitos países, corrupção como essa pode ser um grande dreno na prosperidade.

Homens das cavernas e carros são uma coisa, mas vamos mudar nosso foco para o mundo financeiro, no qual o comércio desempenha um papel papel central. Claro, os bancos não pagam seus funcionários para fugir com ações de terceiros. Mas a troca segura de ativos financeiros continua sendo um problema importante, porque existem maneiras menos caricaturadas pelas quais os participantes de uma transação podem deixar de cumprir sua promessa. Por exemplo, uma parte pode se tornar insolvente ou uma mudança repentina nas condições de mercado pode impedi-la de garantir um ativo. Eles podem sofrer de erros administrativos ou dos efeitos indiretos de um fraude contábil em outra contraparte.

Como resultado desses “riscos de liquidação”, A maioria das transações financeiras são liquidadas usando entrega versus pagamento (DvP). Este é apenas um termo sofisticado para o processo postal descrito acima. O DvP garante que, se uma das partes de uma transação não entregar o que foi prometido, a outra parte poderá manter o ativo oferecido em troca.

E como a entrega versus pagamento é implementada no mundo das finanças? Você adivinhou, por meio de intermediários confiáveis. Podem ser outros bancos, câmaras de compensação ou depositários centrais de valores mobiliários. Como a maioria das negociações de hoje ocorre digitalmente, não se trata de gerenciar a transferência de certificados físicos ou dinheiro. Em vez disso, o DvP é obtido pelo intermediário atualizando simultaneamente uma série de registros em seu banco de dados e / ou transmitindo instruções a outras instituições.

Entrega versus pagamento por blockchain

Falar sobre bancos de dados nos leva diretamente ao assunto de blockchains. Um blockchain permite que um livro-razão ou banco de dados seja compartilhado e sincronizado entre várias partes. No entanto, ao contrário de bancos de dados regulares, os bancos de dados de blockchain podem ser modificados de forma segura e direta por vários usuários, mesmo se eles estiverem em competição feroz. Se você trabalha com TI corporativa, talvez queira refletir um pouco sobre as implicações dessa frase.

Para entender como a entrega versus pagamento funciona em um blockchain, precisamos começar entendendo o modelo transacional do bitcoin. Deve ser observado aqui que outros designs de blockchain usam um modelo diferente para transações, e falaremos mais sobre essas diferenças posteriormente.

Uma transação bitcoin tem um conjunto de entradas e saídas. Cada entrada é conectada a uma saída de uma transação anterior, com todo o bitcoin da saída anterior fluindo. O bitcoin nas entradas de uma transação são então redistribuídos por suas saídas de acordo com as quantidades escritas nelas. Além disso, cada saída de transação contém o identificador público de seu novo proprietário, para o qual o proprietário mantém uma chave privada correspondente. Uma transação bitcoin só é válida se:

  • A quantidade total de bitcoins nas entradas da transação é maior ou igual à quantidade escrita em suas saídas. Qualquer diferença é cobrada como uma taxa pelo “minerador” que confirma a transação em um bloco, criando um mecanismo de mercado pelo qual as transações podem licitar pela confirmação.
  • A transação é aprovada pelos proprietários de todas as saídas anteriores que essa transação “gasta”. Essa aprovação é expressa por meio de uma assinatura criptográfica do conteúdo da nova transação. A assinatura para uma saída anterior só pode ser criada usando a chave privada que corresponde ao seu identificador público.

Essas duas regras são cruciais em um livro-razão financeiro compartilhado entre partes não confiáveis. Sem o primeiro, qualquer um poderia criar bitcoins do nada. E sem o segundo, todo mundo poderia gastar os bitcoins de todo mundo. Mas também precisamos de uma terceira regra, que é aplicada globalmente, e não dentro de transações individuais:

  • Cada saída de transação só pode ser usada por uma transação subsequente. Isso evita um ataque conhecido como gastos duplos em que os mesmos bitcoins são enviados para mais de um destinatário.

Para impor essa regra, o blockchain contém um log cronológico de transações válidas que não entram em conflito entre si, e esse log é verificado de forma independente por cada nó da rede.

O modelo de transação bitcoin pode ser facilmente estendido para representar qualquer ativo financeiro. Em vez de uma saída de transação contendo bitcoins, ele pode conter um identificador de ativo e quantidade. Todas as regras que cobrem as transações de bitcoin ainda se aplicam, impedindo os participantes de (a) criar ativos do nada, (b) gastar os ativos de outras pessoas e (c) gastar o mesmo ativo duas vezes. Para ativos não criptomoeda, tendemos a insistir que as quantidades de entrada e saída sejam exatamente iguais, em vez de permitir que os mineiros cobrem a diferença.

Então, como criamos uma transação segura de entrega versus pagamento usando este modelo? Digamos que Alice e Bob tenham concordado em trocar os £ 10 de Alice pelos $ 15 de Bob. Por uma questão de conveniência, presumiremos que Alice já tem exatamente £ 10 em uma única saída de transação e Bob também tem $ 15. (Se este não for o caso, eles podem facilmente transferir seus fundos para fazer isso.)

Para começar, qualquer uma das partes constrói uma transação com duas entradas e duas saídas. As duas entradas gastam as saídas anteriores contendo £ 10 de Alice e $ 15 de Bob, respectivamente. Quanto às saídas, a primeira contém o identificador de Alice e $ 15, e a segunda vai para Bob contendo £ 10. Como as quantidades de entrada e saída em ambas as moedas se equilibram, nossa transação atende à primeira condição acima. Para cumprir o segundo, Alice e Bob devem agora assinar a transação, uma vez que gasta as saídas anteriores pertencentes a cada um deles.

A transação agora pode ser finalizada incluindo-a no blockchain, mas ainda precisamos considerar o problema de gastos duplos. E se Alice tivesse criado uma transação conflitante trocando as mesmas £ 10 com uma contraparte diferente que lhe oferecesse um negócio melhor? Aqui, a terceira regra entra em ação, na qual o blockchain garante que cada saída só possa ser gasta uma vez. Se a transação concorrente for transmitida depois que a troca de Alice com Bob estiver no blockchain, ela simplesmente não será confirmada. E se a transação concorrente for confirmada primeiro, a troca de Alice com Bob falhará. De qualquer forma, o blockchain garante entrega contra pagamento para a troca de Alice e Bob, bem como qualquer outra. Se Bob não receber os £ 10 de Alice, Alice não receberá os seus $ 15.

O poder das transações parciais

Portanto, os blockchains nos dão uma maneira de duas partes se unirem, construir e assinar uma transação de troca e garantir que ela seja bem-sucedida ou fracasse como um todo. Isso permite a entrega contra pagamento em um livro razão compartilhado, sem a necessidade de um intermediário confiável para gerenciar o processo. Os mineiros que confirmam as transações em blocos ainda têm algum poder, mas é muito menos do que um intermediário tradicional. O pior que podem fazer é se recusar a confirmar uma transação específica na sua totalidade, e isso não viola o DvP. Além disso, se a mineração for compartilhada entre as partes que realmente criam as transações, esse risco desaparece completamente, pois todos terão a chance de confirmar as suas.

Por enquanto, tudo bem. Mas os blockchains do estilo bitcoin têm mais truques na manga. Lembre-se de que uma transação deve ser assinada pelo proprietário de cada saída anterior que essa transação gasta. Por padrão, essa assinatura bloqueia a lista completa de entradas e saídas dentro da transação. A criptografia garante que a menor modificação em uma entrada ou saída tornaria a assinatura inválida. Para seguir o exemplo acima, se Bob substituísse Carol depois que Alice assinou a transação, a transação iria falhar completamente.

Mas e se Alice não se importar com quem realiza a troca? Para a maioria dos propósitos, por que ela deveria se importar? A menos que Alice esteja determinada a trabalhar especificamente com Bob, há apenas duas partes da transação que realmente a preocupam. Primeiro, o fato de que sua produção de £ 10 será gasta, em vez de uma quantidade ou ativo diferente. Em segundo lugar, ela recebe $ 15 em uma nova produção em troca. Desde que todo o dinheiro do sistema esteja limpo, Alice realmente não se importa de onde vêm esses $ 15 ou o que mais pode acontecer para facilitar sua troca.

Talvez um único partido apareça com $ 15 e faça uma troca direta pelos £ 10 de Alice. Mas talvez Bob e Carol só queiram trocar US $ 7.50 cada. Nesse caso, eles adicionariam duas entradas à transação, junto com duas saídas que cobram £ 5 cada. Ou talvez Carol realmente queira trocar US $ 15 por 950 rublos, enquanto Sasha em Moscou tem 950 rublos e está procurando por £ 10. Nesse caso, pode ocorrer uma troca de 3 vias, na qual cada parte ainda se preocupa apenas com sua própria peça do quebra-cabeça. A transação que Alice iniciou pode ser concluída de uma infinidade de maneiras diferentes. Mas, da perspectiva de Alice, todos eles atingem o mesmo propósito de dar a ela US $ 15 em troca de £ 10, e todos eles a fazem igualmente feliz.

Cenários de troca

Como um blockchain facilita isso? Por meio de transações parciais e assinaturas parciais. Alice inicia uma transação com uma única entrada (seus £ 10) e uma única saída ($ 15 para ela). Ela bloqueia essas partes da transação com uma assinatura digital que afirma que qualquer número de outras entradas ou saídas podem ser adicionadas. Ela entrega essa transação parcial para Bob e diz “veja o que você pode fazer”. Talvez ela o entregue a Carol também, e a qualquer número de outras contrapartes ou construtores de consórcios em potencial. Cada um deles pode adicionar seus próprios pares de entradas e saídas, seja para equilibrar a troca ou para criar uma transação parcial maior que pode ser transferida novamente. Não importa o que alguém faça, a transação só pode ser executada (ou seja, liquidada por meio de confirmação no blockchain) uma vez que os ativos de entrada e saída estejam equilibrados.

Uma transação blockchain é apenas um pedaço de dados digitais, então essas transações parciais podem ser enviadas por e-mail ou qualquer outro meio de comunicação. Eles podem até ser postados publicamente, porque os participantes da transação potencial sabem que o blockchain vai cuidar deles. A assinatura de Alice garante que ela gastará apenas £ 10 se alguém lhe der $ 15 em troca.

Finalmente, se Alice decidir desativar a oferta, tudo o que ela precisa fazer é gastar as mesmas £ 10 em outra transação, simplesmente enviando de volta para ela mesma. Como o blockchain não permite que a mesma saída seja gasta duas vezes, isso torna a transação parcial existente sem valor. Todos os outros participantes do blockchain verão isso e não perderão mais tempo tentando concluir a troca.

De DvP a contratos inteligentes

Como eu tenho discutido anteriormente, um blockchain no estilo bitcoin pode ser visto como uma forma de gerenciar a sincronização e a segurança em um banco de dados relacional compartilhado. Tanto as transações de bitcoins quanto de banco de dados são tratadas atomicamente, o que significa que têm sucesso ou falham como um todo. A chave para a analogia é a equivalência entre uma saída de transação em um blockchain e uma linha no banco de dados. Uma transação blockchain que gasta algumas saídas e cria outras é o mesmo que uma transação de banco de dados que exclui algumas linhas e cria outras. (Uma operação de banco de dados que modifica uma linha existente é equivalente a excluir essa linha e criar uma nova e atualizada em seu lugar. Esta equivalência fundamenta o popular MVCC método de controle de simultaneidade em bancos de dados, dos quais blockchains de estilo bitcoin podem ser vistos como uma forma distribuída.)

Então, vamos imaginar que nossos dados financeiros sejam mantidos em um banco de dados, no qual cada linha contém três informações: o identificador de seu proprietário, um identificador de ativo e uma quantidade de ativo. Um blockchain permite que esse livro-razão seja compartilhado com segurança entre seus participantes, mesmo que eles não confiem uns nos outros. Na linguagem dos bancos de dados, ele garante que:

  • As quantidades de ativos nas linhas excluídas por uma transação correspondem às das linhas que ela cria.
  • Para cada linha excluída (ou modificada) por uma transação, a transação deve ser assinada pelo proprietário dessa linha.
  • Se uma linha do banco de dados foi excluída por uma transação, isso impede que outra transação a exclua novamente.

Vejamos a primeira dessas regras, a saber, que as transações devem preservar as quantidades dos ativos. Podemos ampliar isso para a noção geral de uma “restrição de transação”. Uma restrição de transação assume a forma de uma caixa preta que vê dois conjuntos de linhas para cada transação: (a) as linhas excluídas pela transação, (b) as linhas que ela cria. O trabalho da caixa preta é olhar para esses dois conjuntos e responder 'sim' ou 'não' para saber se a transação é válida. Em nosso caso específico, ela só responderá sim se as quantidades totais de ativos em ambos os conjuntos corresponderem exatamente.

Assim que tivermos a capacidade de aplicar restrições de transação, elas podem ser estendidas para conter qualquer conjunto de regras. Alguns exemplos podem ser “uma unidade deste ativo só pode ser criada se esses três outros ativos estiverem simultaneamente bloqueados em depósito” ou “este ativo só pode ser transferido se houver uma linha correspondente informando chuva insuficiente”. Do ponto de vista da arquitetura distribuída de um blockchain, a lógica dentro da caixa não faz diferença, desde que possa nos dar uma avaliação definitiva e consistente de cada transação que vê.

Como resultado, as restrições de transação podem servir como um método geral para restringir as transformações de dados que os participantes do blockchain podem realizar. Esta abordagem para "contratos inteligentes" fornece uma alternativa para o procedimentos armazenados usado em Ethereum ea sua Eris derivado. Em um artigo futuro, vamos nos aprofundar nas vantagens e desvantagens desses dois paradigmas, em termos de simplicidade, escalabilidade e simultaneidade.

Você pode Siga-me no twitter aqui. Veja também: Terminando o debate bitcoin vs blockchain.

Adendo Técnico

Para construir transações DvP parciais, use um tipo de assinatura of SINGLE|ANYONECANPAY. Se você está usando MultiChain, preparelockunspent, createrawexchange e appendrawexchange Chamadas de API cuide dos detalhes para você. Veja o Iniciando página para um exemplo simples de como eles podem ser usados.

Por favor, poste comentários no LinkedIn.

Fonte: https://www.multichain.com/blog/2015/09/delivery-versus-payment-blockchain/

Carimbo de hora:

Mais de Multichain