## `startBroadcast`

### Signature

```solidity
function startBroadcast() external;
function startBroadcast(address who) external;
function startBroadcast(uint256 privateKey) external;
```

### Description

Using the address that calls the test contract or the address/private key provided as the sender, has all subsequent calls (at this call depth only and excluding cheatcode calls) create transactions that can later be signed and sent onchain.

### Parameters

| Parameter    | Type      | Description                                      |
|--------------|-----------|--------------------------------------------------|
| `who`        | `address` | The address to broadcast from (optional)         |
| `privateKey` | `uint256` | The private key to broadcast from (optional)     |

### Examples

```solidity [script/Deploy.s.sol]
function deploy() public {
    vm.startBroadcast(ACCOUNT_A);
    Test test = new Test();
    test.t(1); // Will trigger a transaction
    vm.stopBroadcast();

    // Broadcast again using a private key from environment
    vm.startBroadcast(vm.envUint("PRIVATE_KEY"));
    test.t(3);
    vm.stopBroadcast();
}
```

### Related Cheatcodes

* [`broadcast`](/reference/cheatcodes/broadcast) - Broadcast a single call
* [`stopBroadcast`](/reference/cheatcodes/stop-broadcast) - Stop broadcasting
* [`readCallers`](/reference/cheatcodes/read-callers) - Read the current caller mode
