estevanx7pro-ctrl /
Teste-01
Estou criando meu diario/progressão de uso de linguagens HTML, Css, Java, Python.
49/100 healthLoading repository data…
UrsulaASobrinho / repository
"Estou criando meu primeiro CRUD em Solidity — uma biblioteca de livros direto na blockchain! 🚀📚" 1 BackEnd a criação do CRUD no REMIX 2 Integração MetaMask 3 FrontEnd exemplo com HTML e JavaScript
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Bem-vindo, um contrato inteligente em Solidity para gerenciar uma pequena biblioteca de livros direto na blockchain!
Vou dividir em três partes
Bem-vindo ao LivrosCRUD, um contrato inteligente em Solidity para gerenciar uma pequena biblioteca de livros direto na blockchain!
Este projeto demonstra como criar um CRUD básico (Criar, Ler, Atualizar, Deletar) para livros, usando Solidity — ideal para quem está começando a explorar contratos inteligentes.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract LivroCRUD { ... }
uint public contadorLivros = 0;
struct Livro {
uint id;
string titulo;
string autor;
}
mapping(uint => Livro) public livros;
function adicionarLivro(string memory _titulo, string memory _autor) public returns (uint) {
contadorLivros++;
livros[contadorLivros] = Livro(contadorLivros, _titulo, _autor);
return contadorLivros;
}
function buscarLivro(uint _id) public view returns (string memory, string memory) {
require(_id > 0 && _id <= contadorLivros, "Livro nao encontrado");
Livro memory livro = livros[_id];
return (livro.titulo, livro.autor);
}
function atualizarLivro(uint _id, string memory _novoTitulo, string memory _novoAutor) public {
require(_id > 0 && _id <= contadorLivros, "Livro nao encontrado");
livros[_id] = Livro(_id, _novoTitulo, _novoAutor);
}
function deletarLivro(uint _id) public {
require(_id > 0 && _id <= contadorLivros, "Livro nao encontrado");
delete livros[_id];
}
Este contrato permite:
Quando você deleta vários livros, os IDs continuam existindo no mapping! Porém, os dados ficam zerados:
| ID | Título | Autor |
|---|---|---|
| 1 | "Livro A" | "Autor A" |
| 2 | "" | "" |
| 3 | "Livro C" | "Autor C" |
| 4 | "" | "" |
| 5 | "Livro E" | "Autor E" |
Isso acontece porque:
delete apenas zera os dados do struct, mas o ID ainda existe.Para resolver esse problema, uma sugestão é adicionar um campo ativo (booleano) na struct Livro. Assim, ao deletar, basta marcar o livro como inativo:
struct Livro {
uint id;
string titulo;
string autor;
bool ativo;
}
Ao deletar:
livros[_id].ativo = false;
Vantagens:
Coloquei o constructor e restrições para dono do contrato
// Construtor
constructor() {
dono = msg.sender;
}
// Modificador para restringir acesso ao dono
modifier onlyOwner() {
require(msg.sender == dono, "Apenas o dono pode executar esta acao");
_;
}
E o modificador onlyOwner é um controle de permissoes onde tem que colocar manualmente nas funções que deseja controlar quem acessa. No caso a váriavel dono tera o acesso único nas funções :
| Função | Tem onlyOwner? | Quem pode usar? |
|---|---|---|
| adicionarLivro | ✅ Sim | Somente o dono |
| atualizarLivro | ✅ Sim | Somente o dono |
| deletarLivro | ✅ Sim | Somente o dono |
| buscarLivro | ❌ Não | Qualquer pessoa |
| listarLivrosAtivos | ❌ Não | Qualquer pessoa |
| livroExiste | ❌ Não | Qualquer pessoa |
Faça os testes usando frameworks como Remix IDE para interagir com o contrato e garantir o funcionamento de todas as operações.
MIT
Fique à vontade para sugerir melhorias, abrir issues ou enviar PRs!
Feito com carinho por [Ursula Sobrinho] 🚀
Selected from shared topics, language and repository description—not editorial ratings.
estevanx7pro-ctrl /
Estou criando meu diario/progressão de uso de linguagens HTML, Css, Java, Python.
49/100 healthvitinz04 /
Meu primeiro contato com html e css , anteriormente em meus estudos foram sobre algoritmos , java e pyhton . Nunca tinha estudado Front-End e estou feliz com resultado!
34/100 healthAnnaLeticiaTI /
Projeto em HTML, CSS e JAVASCRIPT, estou criando junto com meu parceiro um site para venda de softwares especializados em vendedores.
34/100 healthCaioSan7os /
Estou criando uma pagina web para uma empresa fictícia para um trabalho no instituto Ser +, para treinar meus conhecimentos de HTML e CSS
27/100 healthrgmeireles /
Este é meu primeiro site usando Html e CSS, estou criando um álbum de fotos da minha família, separei em categorias e já consegui incluir uma música no site, conforme for aprendendo vou estilizando mais o site. Obs: Ele ainda não foi publicado, não tem domínio nem hospedagem.
27/100 healthdionegomes /
Estou criando um currículo em HTML CSS para aprendizagem
27/100 health