Title: 1. User Proposed Transaction
note: ```
pub struct TransactionDataNoGas [escape-left-curley-bracket]
pub kind: TransactionKind,
pub sender: SuiAddress,
pub expiration: TransactionExpiration,
}
```
User -> Sponsor: gas request with ** TransactionDataNoGas **
Sponsor -> Sponsor: check transaction, select Gas, construct `TransactionData` with the Gas, and sign `TransactionData`
Sponsor -> User: `TransactionData` and sponsor signature
User -> User: Examine Gas and Sponsor sigature, sign `TransactionData`
User -> FullNode: submit dual signed transaction (could be sent via the Sponsor)