2. Transações
Definimos uma moeda eletrônica como uma cadeia de assinaturas digitais. Cada proprietário transfere a moeda para o próximo assinando digitalmente um hash da transação anterior e a chave pública do próximo proprietário e adicionando-os ao final da moeda.
Um beneficiário pode verificar as assinaturas para verificar a cadeia de propriedade.
O problema, claro, é que o beneficiário não pode verificar se um dos proprietários não gastou o dobro da moeda.
Uma solução comum é introduzir uma autoridade central confiável, ou mint, que verifica todas as transações em busca de gastos duplos.
Após cada transação, a moeda deve ser devolvida à casa da moeda para a emissão de uma nova moeda, e apenas as moedas emitidas diretamente da casa da moeda são confiáveis para não serem gastas duas vezes.
O problema com esta solução é que o destino de todo o sistema monetário depende da empresa que administra a casa da moeda, e cada transação deve passar por ela, assim como um banco.
Precisamos de uma forma de o beneficiário saber que os proprietários anteriores não assinaram nenhuma transação anterior. Para os nossos propósitos, a transação mais antiga é a que conta, por isso não nos importamos com tentativas posteriores de duplicar os gastos.
A única forma de confirmar a ausência de uma transação é estar ciente de todas as transações. No modelo baseado na casa da moeda, a casa da moeda estava ciente de todas as transações e decidia quais chegavam primeiro.
Para conseguir isto sem uma parte confiável, as transações devem ser anunciadas publicamente[1], e precisamos de um sistema para que os participantes cheguem a acordo sobre um histórico único da ordem em que foram recebidas.
O beneficiário precisa de provas de que, no momento de cada transação, a maioria dos nós concordou que foi a primeira a ser recebida.