blockchain-smart-contracts

// Develop secure smart contracts with Solidity for Ethereum and EVM-compatible blockchains. Use for DeFi, NFTs, and decentralized applications.

$ git log --oneline --stat
stars:0forks:0updated:January 28, 2026 at 00:26
SKILL.md
readonly
nameblockchain-smart-contracts
descriptionDevelop secure smart contracts with Solidity for Ethereum and EVM-compatible blockchains. Use for DeFi, NFTs, and decentralized applications.

name: blockchain-smart-contracts description: Develop secure smart contracts with Solidity for Ethereum and EVM-compatible blockchains. Use for DeFi, NFTs, and decentralized applications. categories: [blockchain, web3]

Blockchain Smart Contracts

Build secure, efficient smart contracts for decentralized applications.

Core Concepts

  • Solidity programming language
  • EVM (Ethereum Virtual Machine)
  • Gas optimization
  • Security best practices
  • Testing and deployment

Patterns

Basic Smart Contract

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleToken {
    mapping(address => uint256) public balances;
    uint256 public totalSupply;
    
    event Transfer(address indexed from, address indexed to, uint256 amount);
    
    constructor(uint256 _initialSupply) {
        totalSupply = _initialSupply;
        balances[msg.sender] = _initialSupply;
    }
    
    function transfer(address to, uint256 amount) public returns (bool) {
        require(balances[msg.sender] >= amount, "Insufficient balance");
        require(to != address(0), "Invalid address");
        
        balances[msg.sender] -= amount;
        balances[to] += amount;
        
        emit Transfer(msg.sender, to, amount);
        return true;
    }
}

Security Patterns

// Checks-Effects-Interactions pattern
function withdraw(uint256 amount) public {
    // Checks
    require(balances[msg.sender] >= amount, "Insufficient balance");
    
    // Effects
    balances[msg.sender] -= amount;
    
    // Interactions (external calls last)
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Transfer failed");
}

// ReentrancyGuard
bool private locked;

modifier noReentrant() {
    require(!locked, "No reentrancy");
    locked = true;
    _;
    locked = false;
}

Testing with Hardhat

const { expect } = require("chai");

describe("SimpleToken", function () {
  it("Should transfer tokens between accounts", async function () {
    const [owner, addr1] = await ethers.getSigners();
    
    const Token = await ethers.getContractFactory("SimpleToken");
    const token = await Token.deploy(1000);
    
    await token.transfer(addr1.address, 100);
    expect(await token.balances(addr1.address)).to.equal(100);
  });
});

Best Practices

  • Follow Checks-Effects-Interactions pattern
  • Use SafeMath or Solidity 0.8+ (built-in overflow protection)
  • Implement access control (Ownable, AccessControl)
  • Add pausable functionality for emergencies
  • Optimize gas usage
  • Conduct security audits
  • Use standard interfaces (ERC20, ERC721)

Resources

  • OpenZeppelin Contracts
  • Solidity Documentation
  • ConsenSys Best Practices