# 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`.