Docs
GitStory is a place to keep Solidity in repositories and deploy it to Ethereum straight from your wallet. This page is the whole manual.
Accounts
There are no passwords. Connect a wallet, sign a short message, and you are signed in. Your wallet address is your account; a username is optional and only changes your URLs. Signing costs nothing and never sends a transaction.
Repositories
A repository is a set of files (Solidity, Markdown, JSON) with a commit history. Create one from a template or blank, edit in the browser, commit with a message. Anyone can read, fork and star public repos. Limits: 64 files, 256 KB per file, 2048 KB per repo.
An optional gitstory.json sets the compiler defaults:
{ "compiler": "0.8.26", "optimizer": true, "runs": 200, "viaIR": false }Compiling
The Deploy tab compiles every .sol file in the repo with solc on the server. Relative imports inside the repo work, and so does @openzeppelin/contracts/… (v5). Supported compilers: . Errors and warnings are shown in full; a contract over 24 KB is listed but cannot be deployed.
Deploying
You pick a contract, fill in the constructor arguments and sign one transaction to the GitStory factory. The factory runs CREATE (or CREATE2 if you give a salt), forwards the fee to the treasury and emits a Deployed event. The new address is yours; GitStory keeps no control over it.
Number fields accept 1000000e18 or 5 ether as shorthand. Arrays and tuples are entered as JSON. Payable constructors can receive ETH on top of the fee.
Ownership inside the constructor
Because the factory creates the contract, msg.sender during construction is the factory, not you. A contract that does owner = msg.sender would make the factory the owner. GitStory flags this at compile time; write constructors that take initialOwner as an argument, like every template does.
Verification
The exact standard-json compiler input is stored with every deployment. Press Verify source and it is submitted to Etherscan with the constructor arguments; the result usually comes back within a minute. The ABI is always shown on the deployment page, verified or not.
Fees
Creating repos, committing, forking and starring are free. Deploying costs a flat … per deploy, paid to the GitStory treasury in the same transaction, plus the network gas. The fee is set by the factory owner and is always readable on chain (fee()); the site shows the current value before you sign.
Paying with $STORY
Once the $STORY token is live, deploys can also be paid with it at a discount; part of every payment is burned.
0x4720707BeD55863cAaebCB5F62A2a0F5c9373564Etherscan Bounties & tips
A bounty locks ETH or $STORY in the bounty contract with a title, a description and a deadline (1 hour to 90 days). Builders answer by submitting one of their GitStory repos (one free transaction). The asker awards one submission and the prize goes straight to that builder. If nobody is awarded before the deadline, anyone can trigger the refund to the asker. GitStory takes no cut.
A tip sends ETH or $STORY from your wallet to a repo owner through the same contract, 100% forwarded, with an optional public note.
AI audit
Any repo can be read by a language model that returns a grade (A–D), a score and a list of findings with severity, file and line. It flags the usual suspects (reentrancy, access control, owner powers that can rug, tx.origin, unbounded loops) and the factory-specific msg.sender trap. It is a quick second opinion, not a professional audit. Free, 5 per wallet per day. When the code changes the audit is marked outdated.
Issues
Every repo has issues with Markdown comments, like GitHub. Anyone signed in can open one; the author or the repo owner can close and reopen it.
Marketplace
A repo owner can sell access to the source from the repo's Settings, priced in ETH, $STORY, or both. The README and the file list stay public; the code, compiling, forking and deploying unlock after purchase. The buyer pays the marketplace contract, which sends 10% to GitStory and the rest to the seller in the same transaction, and records the purchase on chain forever. Listings are tied to the seller's own wallet, so nobody can sell someone else's repo. Be aware that a buyer can copy what they bought and that verified contracts are public on Etherscan.
Interacting with a deployment
Every deployment page has Read and Write tabs built from the contract's ABI. Read calls are free and need no wallet; Write calls are transactions you sign, with an ETH field for payable functions. Number fields accept 5e18 or 5 ether.
Badges
Earned by what a wallet did, shown on its profile: Builder (deployed a contract), Verified builder (a verified deployment), Prolific (10+ deployments), Loved (25+ stars received), Bounty hunter (won a bounty), Patron (funded a bounty or tipped).
The factory contract
Address: …
function deploy(bytes32 repoId, bytes initCode, bytes32 salt) external payable returns (address);
function computeAddress(bytes32 salt, bytes initCode) external view returns (address);
function deployWithStory(bytes32 repoId, bytes initCode, bytes32 salt) external payable returns (address);
function fee() external view returns (uint256);
function feeStory() external view returns (uint256);
event Deployed(address indexed deployer, bytes32 indexed repoId, address addr, bytes32 codeHash, bytes32 salt, uint256 n, bool paidInStory);It holds no funds and has no withdraw function: the fee is forwarded in the same call, and any extra value goes to the constructor you are deploying. Anyone can call it directly without the site.
What GitStory stores
Your files and commits (off chain, on our database), your profile, stars, and the compile output of each deploy. Nothing private: no keys, no signatures beyond the login, no email. Deleting a repo removes it from GitStory; contracts already on chain are, of course, permanent.