# Plasma MVP without Confirmations ## Rules 1. A transaction must be included within two blocks of the time it was created. 2. A transactions inputs must be created at least 3 child chains blocks before. The two block and three block periods are based on child chain block root submission to the root chain. Rule 1 limits the operators ability to withhold a transaction from inclusion in a child chain for more than two blocks. Rule 2 limits the maximum length of the interactive game to check the validity of a withdrawal to two messages (the two inputs of the tx being exited). Rule 3 if proof of an invalid block is included in the child chain all transactions in the invalid block and going forward are invalid (the chain essentially halts). ### Changes 1. Root chain exits by including exiting transactions inputs and checking their validity (atleast 3 blocks old, that their `newOwner` matches the tx sig, etc) with the transaction being exited. 2. Users are able to prove a block is invalid by submitting two valid transactions that double spend, if a challenge is successful rule 3 comes into play. 3. The double spend challenge period on the root chain plasma smart contract is fixed to 4 days after an exit has been started started. This gives a transactions `newOwner`'s 3 days to submit a valid exit based off of the successful challenge (see story 1 for more info). ### Trade offs This increases gas costs by increasing the number of merkle proof checks from one to three but eliminates the need for confirmations. ### Stories 1. If a valid transaction is included within a block that’s submitted to the root chain but the operator withholds the actual block the funds can be exited in two ways: a) tx sender exits and operator doesn’t challenge with tx from block being withheld b) tx sender exits, operator challenges with tx being withheld within 4 days, tx newOwner has 3 days to use info from operator's challenge to exit safely 2. a) Alice creates a valid transaction b) The operator withholds it c) The operator creates an invalid block filled with valid transactions referencing the same inputs (double spending) d) Operator includes Alices transaction e) Everyone exits. As soon as an exit that double spends inputs is submitted it can be succesfully challenged using change 2.