{"repo":"mojtaba-eshghie/Sindi","free":true,"listed":false,"github":"https://github.com/mojtaba-eshghie/Sindi","clone":"git clone https://github.com/mojtaba-eshghie/Sindi.git","description":"Δ Sindi: Semantic Invariant Differencing for Solidity Smart Contracts","language":"Solidity","stars":10,"topics":["invariants","semantic-equivalence","smart-contracts","solidity","difference","equivalence-checker","rewrite-rules","semantic-analysis"],"license":"MIT","category":"blockchain-web3","readme_excerpt":"Δ Sindi: Semantic Invariant Differencing for Solidity Smart Contracts Sindi compares two Solidity boolean predicates (e.g., the guards in require / assert ) and decides whether they are equivalent , one is stronger , or unrelated . It’s designed to survive real-world Solidity syntax variations across versions and frameworks (e.g., OpenZeppelin patterns) by normalizing source, tokenizing, parsing to an AST, and reasoning over the structure. Sindi also includes a Witness Generator . If a predicate is weakened (e.g., a security check is relaxed), Sindi can produce a concrete variable assignment that passes the new check but fails the old one—a counter-example proving the regression. --- Why Sindi? Contract evolution: When you refactor or upgrade a contract (proxy patterns, library changes, Solidity version bumps), the same invariant often appears in a different syntactic form. Sindi checks whether behavior is preserved. Security Regression Testing: Automatically detect if a code change accidentally loosens a constraint (e.g., x 0 look different unless you know x is a uint . Complex Boolean Logic: --- Python APIIf you installed from PyPI: You can also use building blocks: --- The pipeline (architecture at a glance) 1. Rewriting / Normalization (string → string) Fixes cross-version and library-specific surface differences. 2. Tokenization & Parsing (string → tokens → AST) Produces a structured AST ( ASTNode ). 3. Simplification (AST → SymPy → simplified AST) Uses symbolic math to ","default_branch":null,"files":null,"tree":[],"storefront":"/r/mojtaba-eshghie","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mojtaba-eshghie/Sindi/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}