# Bounce: A High Performance Satellite-Based Blockchain System
## 4 Slot Protocol
### Core Bounce Blockchain Protocol
The satellite sends that negative Commit Record to Broadcast Ground Stations which will relay it to Mission Control to do a reset [3]. In the case of a positive Commit Record, the satellite will give a total order of the Merkle Tree roots. If the same Merkle Tree root is contained in multiple Sending Station messages, the satellite keeps only the first. ```
1:Verify the signature for the given root. 2:if signature verification fails or root doesn't match the one created by the Sending Station then
3:exit
4:endif
5:if the root from this Broadcast Ground Station has already been processed then
6:exit
7:endif
8:Add the signature to root_to_sigs map. 9: Retrieve the list of signatures for the root. 10:if number of signatures \(\geq f+1\)then
11: Initialize a bit vector signers_bitvec. 12:for each ground station public key pk do
13:for each signature in sigs do
14:if signature is valid for pk and root then
15: Set corresponding bit in signers_bitvec. 16:break inner loop. 17:endif
18:endfor
19:endfor
20:if at least \(f+1\) distinct signers then
21: Create multi_signed based on the signatures. 22: Cache multi_signed. 23: Mark root as processed and remove from root_to_sigs. 24:else
25:exit (f+1 check failed). 26:endif
27:endif
```  
**Algorithm 1** The Sending Stations constructs the Merkle Tree and sends the transactions to Broadcast Ground Stations  
(4) Satellite then broadcasts the Commit Record back to Broadcast Ground Stations. This in turn triggers Broadcast Ground Stations to create a multisignature for the Commit Record of slot \(i\). **Broadcast Ground Station broadcasts Satellite Commit Record:** The Broadcast Ground Stations make this message (positive or negative Commit Record) widespread by sending it (step 5 in Figure 2) (e.g., on a peer-to-peer network). They also send the Commit Record to the Sending Station (or, in general, Sending Stations) for the next slot, which handles it as described in Algorithm 4. **Users check validity of block:** Any user of block \(i\) can check the block's validity by confirming that the Commit Record for slot \(i\): (a) is signed by the satellite for slot \(i\), (b) the Commit Record is positive, (c) the signed Sending Station message has slot \(i\) and the Merkle root for slot \(i\) in the Commit Record corresponds to the Merkle tree of slot \(i\)Assuming the Commit Record is positive, it now remains for users to check transactions for double-spending and other such abuses. We discuss this in Section 4.3. ```
1:ifmomultisigned previous commit record is received then
2:exit
3:endif
4: Constructs the sending_station_message with:
5: reset_id
6: slot_id
7: txroots: the cached multisigned Merkle Tree roots. 8: prev_cr: the multisigned previous Commit Record. 9:Sends sending_station_message to the satellite. ```  
**Algorithm 3** The Sending Station constructs the Sending Station Message and sends it to the satellite  
```
1:ifCommitRecord signature verification fails then
2:exit. 3:endif
4:ifReceived cr.reset_id does not match expected self.reset_id then
5:exit. 6:endif
7:ifReceived cr.slot_id does not match expected self.slot_id then
8:exit. 9:endif
10:ifPrevious CommitRecord exists AND Previous CommitRecord hash does not match the received one then
11:exit. 12:endif
13:Set self.prev_cr to multi_signed_cr. ```  
**Algorithm 4** The Sending Station Handles a multisigned Commit Record  
**Negative Commit Record and Resets**  
If the user sees that some slot has no Commit Record or the Commit Record is negative, that user should alert Mission Control and show proof of the negative Commit Record. Mission Control then performs a reset [3], which will reassign roles to terrestrial components and create a new slot assignment for satellites. Briefly, a reset entails identifying the Commit Record of the last committed slot by polling Broadcast Ground Stations and users and re-starting the blockchain at the next slot value, possibly with new slot assignments for satellites and new Broadcast Ground Stations and Sending Stations.