Proposal description
Plainsign is a free, open-source tool that simulates an Ethereum transaction before it is signed and states its effects in plain language: what leaves the wallet now, which permissions are granted and whether they are unlimited, whether the destination merely resembles a previously used address, and who ends up in control.
The reasoning engine exists and is public: 13 rules, 55 tests, five worked cases reconstructed from published post-mortems, and a page generated from the engine itself so the demonstration cannot drift from the code.
What does not exist yet is the part that makes it usable by a non-developer: decoding a raw transaction, and simulating it against forked chain state. Today the engine reasons correctly about effects that something else must supply.
This proposal funds exactly that gap. Three deliverables, all public:
- Calldata decoding — resolve the contract interface where source is verified, fall back to function-signature lookup where it is not.
- Fork simulation producing the state diff the rules already expect.
- A public page where anyone can paste a transaction and read what it does. No account, no tracking, nothing stored.
Followed by replacing the reconstructed cases with live transactions, so every reading can be checked against what actually happened on chain.
Plainsign has no token, sells nothing, and gives donors nothing in return. It never holds keys, never signs and never broadcasts — by design, it cannot move funds.
Repository: https://github.com/alyasik1/Plainsign
Page: Plainsign — read before you sign
Giveth: Plainsign |<!-- --> Giveth
Proposal rationale
Signature-level protection is where the largest individual losses in this ecosystem happen, and it is currently sold rather than shared. It ships as a paid feature inside particular wallets, or as a service that collects the data it promises to protect. Everyone using any other wallet is unprotected, and safety becomes a function of what you can afford.
ERC-7730 Clear Signing addresses part of this properly: contract teams publish descriptors, wallets render intent. But it covers contracts that opt in. The incidents that actually drain people involve contracts deployed days ago, addresses with no code deployed yet, and off-chain permit signatures where the wallet displays nothing more than “Signature request”. Nobody publishes a descriptor for a drainer.
Plainsign works from the opposite direction: not declared intent, but observed effect. That makes it complementary to clear signing rather than competing with it, and useful precisely where clear signing has nothing to show.
Why this matters to GIV holders specifically: donors on Giveth sign transactions constantly, and the platform’s own value proposition is peer-to-peer giving with no middleman — which means no middleman to catch a mistake either. A tool that makes signing legible protects the people already in this ecosystem, and funding it is the kind of public good the GIVeconomy exists to support.
One honest note. This project is new. It has no user base yet, and I will not pretend otherwise. What it has instead is verifiable work: the code is public from the first commit, and two of its rules exist because running the engine against real incidents defeated the rules written first. The rule the project was built around missed both documented permit drains, because it assumed the interface lies when in fact it says nothing. That is published in the repository rather than hidden.
Expected duration
Three weeks per deliverable, sequential, roughly nine weeks total from funding:
Weeks 1–3: calldata decoding, merged and tested.
Weeks 4–6: fork simulation producing the state diff.
Weeks 7–9: the public page, plus live transactions replacing the reconstructed cases.
Progress is visible continuously in the repository — this is not a report-at-the-end proposal. If the work stalls, that will be apparent from the commit history before any deadline arrives.
Team
Solo maintainer. There is no team and no legal entity, and I would rather state that plainly than dress it up.
GitHub: alyasik1 (Arina) · GitHub
Giveth: Giveth | Arina Alyasova User Profile
Telegram: [ВСТАВЬТЕ ИСПРАВЛЕННУЮ ССЫЛКУ]
Skills and previous experience
Backend and application development: Python (FastAPI, PostgreSQL), Android (Kotlin, Jetpack Compose). Several projects delivered solo, end to end.
Relevant to this proposal specifically: the Plainsign engine itself — an architecture that separates reasoning from chain access, a test suite that enforces output discipline rather than only correctness, and CI that regenerates the public page and fails if it has drifted from the code.
I have not previously delivered a funded public-goods project. This would be the first.
Funding
Amount of GIV requested: [СУММА]
Ethereum address: [ОТДЕЛЬНЫЙ АДРЕС, НЕ ЛИЧНЫЙ]
How funds will be handled and used:
Infrastructure — archive node or paid RPC access for simulation, hosting, and storage for contract and signature reference data. This is the recurring cost that decides whether the tool stays open to everyone or ends up rate-limited behind an account.
Maintenance — attack patterns change and reference data goes stale. An unmaintained security tool is worse than none, because people keep trusting it.
Development time — a single maintainer working in public. I would rather say plainly that this compensates labour than disguise it as something else. Every funded hour produces commits anyone can read.
No token, no marketing spend, no rewards to donors of any kind.
Accountability: the receiving address is public, so incoming funds are visible on chain. A spending summary is published in the repository alongside the commit history, so the money and the work can be checked against each other. If the deliverables above are not met, I will say so in the same place.