# CCIP v1.6.0 Ownable2StepMsgSender Contract API Reference
Source: https://docs.chain.link/ccip/api-reference/evm/v1.6.0/ownable-2-step-msg-sender


<Aside type="note" title="This contract is now available in Chainlink Contracts v1.4.0">
  <Tabs sharedStore="ccip-move-core-v1-4-0-package" client:visible>
    <Fragment slot="tab.1">npm</Fragment>
    <Fragment slot="tab.2">yarn</Fragment>
    <Fragment slot="tab.3">foundry</Fragment>

    <Fragment slot="panel.1">
      If you use [NPM](https://www.npmjs.com/), install the [@chainlink/contracts NPM package](https://www.npmjs.com/package/@chainlink/contracts/v/1.4.0):

      ```shell
      npm install @chainlink/contracts@1.4.0
      ```

      <Aside type="note">
        Note: This contract is now maintained under the [@chainlink/contracts](https://www.npmjs.com/package/@chainlink/contracts) package instead of [@chainlink/contracts-ccip](https://www.npmjs.com/package/@chainlink/contracts-ccip).
      </Aside>
    </Fragment>

    <Fragment slot="panel.2">
      If you use [Yarn](https://yarnpkg.com/), install the [@chainlink/contracts NPM package](https://www.npmjs.com/package/@chainlink/contracts/v/1.4.0):

      ```shell
      yarn add @chainlink/contracts@1.4.0
      ```

      > **NOTE**
      >
      > Note: This contract is now maintained under the [@chainlink/contracts](https://www.npmjs.com/package/@chainlink/contracts) package instead of [@chainlink/contracts-ccip](https://www.npmjs.com/package/@chainlink/contracts-ccip).
    </Fragment>

    <Fragment slot="panel.3">
      If you use [Foundry](https://book.getfoundry.sh/), install the package:

      ```shell
      forge install smartcontractkit/chainlink-evm@e06cc226086ad91cfede63e96c63e5b3440c9801
      ```

      > **NOTE**
      >
      > Note: This contract is now maintained in the [chainlink-evm](https://github.com/smartcontractkit/chainlink-evm) repository instead of the [chainlink-ccip](https://github.com/smartcontractkit/chainlink-ccip) repository.
    </Fragment>
  </Tabs>
</Aside>

## Ownable2StepMsgSender

A contract that facilitates two-step ownership transfer, providing enhanced security for ownership management. This contract extends `Ownable2Step` and automatically sets the deploying address (`msg.sender`) as the initial owner with no pending owner.

**Inherits:**

- [`Ownable2Step`](/ccip/api-reference/evm/v1.6.0/ownable-2-step) - Provides secure two-step ownership transfer functionality

> **NOTE**
>
> The two-step ownership transfer process enhances security by:

1. Requiring the current owner to initiate the transfer (step 1)
2. Requiring the new owner to accept ownership (step 2)

This prevents accidental transfers to incorrect or inaccessible addresses.

[Git Source](https://github.com/smartcontractkit/chainlink-evm/blob/contracts-v1.4.0/contracts/src/v0.8/shared/access/Ownable2StepMsgSender.sol)

## Functions

### constructor

Initializes the contract with the deploying address as the owner and no pending owner.

```solidity
constructor() Ownable2Step(msg.sender, address(0));
```

> \*\*NOTE\*\*
>
>
>
> The constructor:
>
> - Sets `msg.sender` as the initial owner
> - Sets `address(0)` as the initial pending owner (indicating no pending transfer)
> - Inherits from Ownable2Step with these initial values