# Retriev/Web3Storage - batch change proposal ### 🌐 Context We are working on the [Batch operator smart contract](/zsITEgVjQW2yKEMqbIqz7Q) and we found a blocker since to make `createDealProposal` work we need to add another parameter `owner` to define who is requesting the deal proposal. ### 💣 Problem We want to be sure that no-one can create deal proposals on behalf to other users because we want to prevent any kind of spam. ### 📌 Proposal Overview - We have to add the parameter `owner` to `createDealProposal` so it will be `function createDealProposal(address owner, string memory _data_uri, uint256 duration, uint256 collateral, address[] memory _providers, address[] memory _appeal_addresses)` - We have to add another state variable which will be called `bulkContract` which will contain the address of the allowed contract - Mentioned variable `bulkContract` will be managed by the "Protocol Managers" so it can be changed over time - We have to add another additional check in `createDealProposal` function because we want to be sure it works in this way: - if `msg.sender == owner` it's all fine, because we know that sender (the address who sent the transaction) is the same of provided `owner`. - if `msg.sender != owner` means we have to do another check: - if `msg.sender == bulkContractAddress` the transaction is **valid**, because it arrives from a trusted source, the transaction will be accepted - if `msg.sender != bulkContract` the transaction is **you not valid**, bcause it arrives from an untrusted source, the transaction will fail