Funções da blockchain Cardano

Stake Pool: Entidade de rede, que entre outras coisas, está a cargo da produção e validação de blocos. É possível agir individualmente, ou como um terceiro em prole de vários utulizadores da rede que o escolhem fazer.

Stake: Quantia de ADA delegados a uma Stake pool que um utilizador controla, ou quantia de ADA que controla uma Stake Pool.

Slot: Unidade de tempo da rede Cardano que dura 1 segundo, dentro de cada Slot existe a possibilidade de criar um bloco.

Slot Leader: Stake Pool que foi designada com a possibilidade de criar um bloco para um Slot em particular.

Verified Random Function (VFR): A VRF é usada, entre outras coisas, para descobrir se és eleito como um Slot Leader para um Slot em particular.

Cálculo de assinatura do Slot OUROBOROS: Os factores que são tidos em consideração são a chave VRF, a percentagem de stake activo (sigma), o factor dedescentralização d e um parâmetro chamado nonce que é aleatório.

Key Evolving Signature (KES): Evolutionary signature key, é usada pelas Stake Pools para assinar os blocos que produzem.

Number that can only be used Once (Nonce): Number that can only be used once, é um dos valores do input da VRF.

Proof of Stake (PoS): É o algoritmo de consenso de uma Blockchain, na de Cardano é chamado Ouroboros.

Em termos simples, uma Stake Pool da rede Cardano, é um participante no algoritmo de concenso PoS, chamado Ouroboros.

Durante a fase Shelley, a rede Cardano usou o Ouroboros Praos. Em que as principais funções de uma Stake Pool são:

1- Forjar novos blocos 2- Verificar novos blocos 3- Confirmar transacções

1- Para cada Slot, que dura 1 segundo, a Stake Pool usa o VRF para verificar se é uma Slot Leader. Esta função engloba como valores de input: A ID do Slot, o Nonce, e as chaves VRF para assinar, e gera um valor aleatório como output. Se o valor do output for inferior a um certo limite, que é determinado pelo Stake relativo de cada Stake Pool, então é coroado como o Slot Leader para esse Slot em particular. Quanto maior o Stake de uma pool, maior a probabilidade de ser eleita como Slot Leader.

2- Se uma Stake Pool for designada como Slot Leader, então ela assina um bloco usando a chave de assinatura KES, juntamente com o output computado pela VRF, a prova como foi eleita como Slot Leader, e as transacções pendentes na rede.

3- Por fim, o novo bloco criado por determinada Stake Pool é transmitido aos outros nodes na rede.
Tendo a Stake Pool que verificar a cada segundo se foi eleita como Slot Leader, é imperativo que as Stake Pools estejam online 24/7, para garantir que podem produzir um bloco de forem eleitas como Slot Leader.

O valor Nonce usado na VRF é usado como um valor seed para gerar um número aleatório. É criado produzindo um hash com os outputs gerados pelos primeiros ⅔ das VRF’s dos blocos das épocas anteriores.

Se uma Stake Pool não esta a forjar blocos, desempenha ainda assim um papel na rede a verificar blocos e confirmar transacções.

1. A Stake Pool's usa o VRF para verificar se foi seleccionada como Slot Leader para cada Slot.
2. Um novo bloco é recebido pelos Nodes emparelhados com os próprios.
3. A Stake Pool verifica a prova VRF do bloco, usando a chave pública VRF da Stake Pool correspondente que assina o bloco. Se válida, é adicionada à blockchain local.

Uma propriedade interessante do PoS Ouroboros Praos é que cada Stake Pool tenta independentemente determinar com o VRF se foi ou não escolhida como Slot Leader:

O calendário da alocação do líder não é conhecido em avanço, e as pools apenas irão saber quem foi escolhido como Slot Leader quando o bloco é recebido e verificado.

É também possível que por coincidência, duas ou mais Stake Pools sejam eleitas pelo protocolo como Slot Leader de um único Slot.

Este fenômeno chama-se Battle of Slots. Batalhas de Slots são resolvidas pelo VRF, o bloco com o menor valor de output ditado pela VRF é eleito como o vencedor desse Slot.

O código usado pelos Cardano Nodes desenvolvido pela IOHK desempenha todas estas acções, depois de o Stake Pool Operator (SPO) ter configurado o programa para o operar.

Autor: @Arielfavio Tradutor: @jpsrrv