Protocol Rules
TenCommandements.sol - on-chain specification
The Game
The protocol runs exactly 10 rounds. Each round is an open competition: any wallet can submit a prompt that shapes the smart contract. One prompt is selected at random per round — that author's suggestion becomes the next version of the contract.
Submitting a Prompt
Call submitPrompt(string promptText) with exactly 0.01 ETH attached. The prompt must be between 1 and 1 000
characters. Each submission is timestamped and stored on-chain in the current
round's isolated array — prompts from previous rounds never carry over.
round.endTime0.01 ETH required — no more, no lessWinner Selection
When a round's timer expires, Chainlink Automation triggers endRound(). The contract requests a verifiable
random number from Chainlink VRF V2. Once the
coordinator responds, the winning index is computed as:
winnerIndex = randomWords[0] % prompts.lengthThe winning prompt's author is recorded on-chain as round.winnerAddress. Their prompt text is stored as round.winningPrompt and applied by the team to produce the
next contract iteration. 1% of total token supply is minted
to the winner.
If a round ends with zero prompts, no VRF request is made. The round is marked completed and the next round starts immediately.
Round Lifecycle
checkUpkeep() every block.endRound() called. VRF request submitted. No new prompts
accepted.What You Can Change
The winning prompt is reviewed and applied by the team to produce a new version of the contract. Only regions outside the locked core may be modified.
TOKEN_NAME = "TenCommandements", TOKEN_SYMBOL = "CMD"INITIAL_SUPPLY = 10_000_000_000 ethertransfer, approve, transferFrom, totalSupplyCOMMUNITY_STATECOMMUNITY_LOGICCOMMUNITY_FUNCTIONSGame End
After round 10 completes, gameCompleted is set to true on-chain and the GameCompleted event is emitted.
No further rounds start. No new prompts can be submitted. The final contract
version — shaped by all 10 winning prompts — is the permanent result.
event GameCompleted();