anchor.diff:  ----
   
   
  -=== How to use it?
  +=== How to use it
   
   Create your contract using the following:
   
  
positive.code: }
  ----
  
  The bouncer rejects the tx if the real sender doesn't have enough tokens or it is not allowed to spend that amount.
  If the sender can spend the tokens, the bouncers approves the transaction and overrides _confirmRelayedCall to make that data available to pre and post.
  
  Let's see now how we perform the token transfer inside the _preRelayedCall method.
  
  [source,solidity]
  ----
  
negative.code: 
  == GSN Bouncers
  
  A *GSN Bouncer* decides which transaction gets approved and which transaction gets rejected. Bouncers are a key concept within GSN. Dapps need Bouncers to prevent malicious users from spending the subsidies for the transactions.
  
  As we have seen in the Basic Guide, in order to use GSN, your contracts need to extend from GSN Recipient.
  
  