Pular para o conteúdo
Skillpedia
Segurança41 mil · #4815

solidity-security

Ajuda seu agente a aplicar práticas de segurança em contratos inteligentes (smart contracts). É útil para proteger aplicações blockchain contra falhas.

O que ela faz

Esta ferramenta ajuda a escrever códigos de contratos inteligentes (programas para blockchain) mais seguros. Ela ensina as melhores práticas para evitar erros comuns e ataques, garantindo que seus programas funcionem corretamente e sem falhas.

Quando usar

  • ✓Ao criar um novo contrato inteligente.
  • ✓Ao revisar um contrato já existente para encontrar problemas.
  • ✓Ao implementar medidas de segurança em aplicativos de blockchain.

Exemplo do que pedir para a IA

“Como posso garantir que meu contrato inteligente não seja hackeado por reentrância?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/wshobson/agents/blob/main/plugins/blockchain-web3/skills/solidity-security/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/blockchain-web3/skills/solidity-security/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela analisa seu código e sugere padrões de programação seguros. Também mostra exemplos de como ataques comuns funcionam e como evitá-los, usando testes e documentação clara.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add wshobson/agents --skill solidity-security

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/blockchain-web3/skills/solidity-security/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Segurança em Solidity

Domine as melhores práticas de segurança de contratos inteligentes, prevenção de vulnerabilidades e padrões de desenvolvimento seguro em Solidity.

Quando Usar Esta Habilidade

  • Escrever contratos inteligentes seguros
  • Auditar contratos existentes em busca de vulnerabilidades
  • Implementar protocolos DeFi seguros
  • Prevenir problemas de reentrância, overflow e controle de acesso
  • Otimizar o uso de gas mantendo a segurança
  • Preparar contratos para auditorias profissionais
  • Entender vetores de ataque comuns

Padrões Detalhados e Exemplos Práticos

A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando o nível de navegação acima for insuficiente.

Testando para Segurança

// Hardhat test example
const { expect } = require("chai");
const { ethers } = require("hardhat");

describe("Security Tests", function () {
  it("Should prevent reentrancy attack", async function () {
    const [attacker] = await ethers.getSigners();

    const VictimBank = await ethers.getContractFactory("SecureBank");
    const bank = await VictimBank.deploy();

    const Attacker = await ethers.getContractFactory("ReentrancyAttacker");
    const attackerContract = await Attacker.deploy(bank.address);

    // Deposit funds
    await bank.deposit({ value: ethers.utils.parseEther("10") });

    // Attempt reentrancy attack
    await expect(
      attackerContract.attack({ value: ethers.utils.parseEther("1") }),
    ).to.be.revertedWith("ReentrancyGuard: reentrant call");
  });

  it("Should prevent integer overflow", async function () {
    const Token = await ethers.getContractFactory("SecureToken");
    const token = await Token.deploy();

    // Attempt overflow
    await expect(token.transfer(attacker.address, ethers.constants.MaxUint256))
      .to.be.reverted;
  });

  it("Should enforce access control", async function () {
    const [owner, attacker] = await ethers.getSigners();

    const Contract = await ethers.getContractFactory("SecureContract");
    const contract = await Contract.deploy();

    // Attempt unauthorized withdrawal
    await expect(contract.connect(attacker).withdraw(100)).to.be.revertedWith(
      "Ownable: caller is not the owner",
    );
  });
});

Preparação para Auditoria

contract WellDocumentedContract {
    /**
     * @title Well Documented Contract
     * @dev Example of proper documentation for audits
     * @notice This contract handles user deposits and withdrawals
     */

    /// @notice Mapping of user balances
    mapping(address => uint256) public balances;

    /**
     * @dev Deposits ETH into the contract
     * @notice Anyone can deposit funds
     */
    function deposit() public payable {
        require(msg.value > 0, "Must send ETH");
        balances[msg.sender] += msg.value;
    }

    /**
     * @dev Withdraws user's balance
     * @notice Follows CEI pattern to prevent reentrancy
     * @param amount Amount to withdraw in wei
     */
    function withdraw(uint256 amount) public {
        // CHECKS
        require(amount <= balances[msg.sender], "Insufficient balance");

        // EFFECTS
        balances[msg.sender] -= amount;

        // INTERACTIONS
        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Transfer failed");
    }
}
Perguntas frequentes

O que são 'vulnerabilidades' em contratos inteligentes?

São falhas no código que podem ser exploradas por hackers para roubar dinheiro ou causar outros problemas.

O que é 'reentrância'?

É um tipo de ataque onde um contrato malicioso chama repetidamente uma função antes que a primeira chamada seja concluída, podendo esvaziar carteiras.

O que é 'auditoria de contratos'?

É o processo de revisar o código de um contrato inteligente para encontrar e corrigir falhas de segurança antes que ele seja usado.

Detalhes

Descrição original do autor

Master smart contract security best practices to prevent common vulnerabilities and implement secure Solidity patterns. Use when writing smart contracts, auditing existing contracts, or implementing security measures for blockchain applications.

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4815
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas