24/10 Prática com contratos inteligentes
Desenvolver as questões abaixo e respondê-las em um pdf:
1) Descrever sucintamente o contrato inteligente jocoin.sol que se encontra no link https://github.com/joueyama/blockchain2/blob/main/jocoin.sol
A discussão não é limitada a estes aspectos, mas deve incluir
a) o que ele faz
b) qual a linguagem
c) as principais variáveis, os tipos e o que armazena
2) Descreva duas limitações que o contrato apresenta
3) Altere o contrato de forma que fique com
a) seu_nome_coin
b) taxa de conversão para seu NUSP
4) O que é um modificador e uma instrução require no Solidity?
5) Explique cada instrução e particularmente as palavras reservadas do Solidity no código abaixo.
function addBalance(uint _toAdd) public returns(uint) {
require(msg.sender == owner);
balance[msg.sender] += _toAdd;
return balance[msg.sender];
}
6) Carregar o código em https://github.com/joueyama/blockchain2/blob/main/sensitiveData.sol
a) Executar o contrato
b) Trocar de conta para verificar que o código não permite alterar dados sensíveis a partir de outra conta
c) Indicar o erro e citar qual a variável do solidity que permitiu fazer esta verificação
d) Inserir um print da tela com a mensagem de erro exibida
e) Fazer o deployment do contrato em uma plataforma pública (como a rede de teste do Goerli) e enviar a chave do contrato a um colega para que ele/ela execute o mesmo contrato
f) exibir todo o processo com prints de tela
7) Baixar o código do https://remix-ide.readthedocs.io/en/latest/create_deploy.html
a) Executar no Remix
b) Descrever o que é uma função “payable”
c) O que acontece se transferirmos Ether em uma função “non-payable” (veja a resposta em https://docs.alchemy.com/docs/solidity-payable-functions)
8) Implemente um modificador com a instrução require para verificar se o investidor tem saldo na venda de jocoin. O modificador deve ser incluído na função sell_jocoins