Quiz : REQUIRED AND REVERT

1. Em Solidity, o que acontece quando uma função marca explicitamente um erro com `revert`?

a) A execução da função continua normalmente, mas um aviso é gerado no console.

b) A execução da função é revertida imediatamente e todas as alterações de estado são desfeitas.

c) A função retorna um valor de erro que pode ser tratado pelo contrato chamador.

2. Qual é a principal razão para usar `revert` em contratos inteligentes?

a) Para interromper a execução do contrato e lançar um erro personalizado.

b) Para forçar uma exceção não tratada e encerrar o contrato abruptamente.

c) Para notificar o usuário sobre erros de execução do contrato.

3. Quando você pode utilizar `require` em vez de `revert` em Solidity?

a) Quando você quer retornar um valor específico ao invés de lançar uma exceção.

b) Quando você quer apenas registrar um aviso no console, mas continuar a execução.

c) Quando você quer impor condições para a execução de uma função e reverter se essas condições não forem atendidas.

4. O que o modificador `required` faz em Solidity?

a) Ele verifica se uma variável foi inicializada corretamente antes de permitir a execução de uma função.

b) Ele define um requisito que deve ser cumprido para que a função seja executada com sucesso.

c) Ele reverte a execução de uma função se uma condição específica não for atendida.

5. Qual é a diferença principal entre `required` e `assert` em Solidity?

a) `required` é usado para verificar condições de entrada em uma função, enquanto `assert` é usado para verificar invariantes internas do contrato.

b) `required` é usado para interromper a execução de uma função se uma condição não for atendida, enquanto `assert` é usado para validar expressões internas do contrato.

c) `required` e `assert` são sinônimos em Solidity e podem ser usados de forma intercambiável.

6. Quando é mais apropriado usar `required` em vez de `revert` em Solidity?

a) Quando a verificação é sobre condições externas, como entradas de usuário.

b) Quando a validação está relacionada a invariantes internos do contrato.

c) Não há diferença significativa entre eles em termos de uso apropriado.

7. Como o bloco de código a seguir, em Solidity, trata a validação de um índice de um array?

if (index >= mensagens.length)  revert ERRORInvalidIndex(index);

a) Reverte a execução do contrato se o índice fornecido for maior ou igual ao comprimento do array, lançando uma exceção com uma mensagem de erro personalizada.

b) Ignora a condição do índice e continua a execução do contrato normalmente, independentemente do valor fornecido.

c) Retorna um aviso no console se o índice estiver fora dos limites do array, mas não reverte a execução do contrato.

8. Como o bloco de código a seguir, em Solidity, trata a validação de um índice de um array?

require(index <= mensagens.length, "INDEX INVALID");

a) Interrompe a execução do contrato se o índice fornecido for maior do que o comprimento do array, lançando uma exceção com a mensagem "INDEX INVALID".

b) Continua a execução do contrato mesmo se o índice estiver fora dos limites do array, mas imprime um aviso no console.

c) Retorna um valor booleano indicando se o índice fornecido é válido ou não, sem interromper a execução do contrato.

Respostas:

1. b) A execução da função é revertida imediatamente e todas as alterações de estado são desfeitas.

2. a) Para interromper a execução do contrato e lançar um erro personalizado.

3. c) Quando você quer impor condições para a execução de uma função e reverter se essas condições não forem atendidas.

4. b) Ele define um requisito que deve ser cumprido para que a função seja executada com sucesso.

5. a) `required` é usado para verificar condições de entrada em uma função, enquanto `assert` é usado para verificar invariantes internas do contrato.

6. a) Quando a verificação é sobre condições externas, como entradas de usuário.

7. a) Reverte a execução do contrato se o índice fornecido for maior ou igual ao comprimento do array, lançando uma exceção com uma mensagem de erro personalizada.

8.a) Interrompe a execução do contrato se o índice fornecido for maior do que o comprimento do array, lançando uma exceção com a mensagem "INDEX INVALID".

Last updated