# Sending and simulating EIP-4844 Transactions
Currently there is no way for a application to request to send or simulate an [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) transaction. The only way to send a such transaction is to do do `eth_sendRawTransaction`:
```json
{
"method": "eth_sendRawTransaction",
"params": [signedEIP4844txWithType]
}
```
where `signedEIP4844txWithType` is:
```
TransactionType || TransactionPayload
```
where TransactionPayload is:
```
rlp([tx_payload_body, blobs, commitments, proofs])
```
and `tx_payload_body` is:
```
[chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_blob_gas, blob_versioned_hashes, y_parity, r, s]
```
# Support for eth_sendTransaction
We should have a support for `eth_sendTransaction` method that takes in the blob body, commitments, blob_versioned_hashes and proofs:
```json
{
...
"method": "eth_sendTransaction",
"params": [{
"type": "0x3",
"to": ...,
"data": ...,
"blobs": [
{
"payload": "0x...",
"commitment": "0x...",
"proof": "0x...",
"blob_versioned_hash": "0x...",
},
{
"payload": "0x...",
"commitment": "0x...",
"proof": "0x...",,
"blob_versioned_hash": "0x...",
}
]
...
}
}
```
The fields `blob_versioned_hash`, `commitment` and `proof` can be made optional as they can be calculated from `payload`.
# Simulating EIP-4844 transactions
Another challenge we face is that there is no way to simulate exact EIP-4844 transactions. We feel these should also be included parameters that can be passed.
The methods `eth_call`, `eth_estimateGas` and `eth_multicallV1` should all support for both
1) Either passing just `blob_versioned_hashes`
3) Or passing `blob payloads`, `blob_versioned_hashes`, `commitments` and `proofs`.
The syntax for the transaction object should be the same that is used for `eth_sendTransaction`.