# Ownable (Ownable.sol)

View Source: [openzeppelin-solidity/contracts/ownership/Ownable.sol](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/openzeppelin-solidity/contracts/ownership/Ownable.sol)

**↘ Derived Contracts:** [**MakerDAOOracle**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/MakerDAOOracle.md)**,** [**ModuleFactory**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ModuleFactory.md)**,** [**ReclaimTokens**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ReclaimTokens.md)**,** [**StableOracle**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/StableOracle.md)**,** [**STFactory**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/STFactory.md)

**Ownable**

The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of "user permissions".

## Contract Members

**Constants & Variables**

```javascript
address private _owner;
```

**Events**

```javascript
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
```

## Modifiers

* [onlyOwner](/polymath/api/ownable.md#onlyowner)

### onlyOwner

Throws if called by any account other than the owner.

```javascript
modifier onlyOwner() internal
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

## Functions

* [()](/polymath/api/ownable.md)
* [owner()](/polymath/api/ownable.md#owner)
* [isOwner()](/polymath/api/ownable.md#isowner)
* [renounceOwnership()](/polymath/api/ownable.md#renounceownership)
* [transferOwnership(address newOwner)](/polymath/api/ownable.md#transferownership)
* [\_transferOwnership(address newOwner)](/polymath/api/ownable.md#_transferownership)

The Ownable constructor sets the original `owner` of the contract to the sender account.

```javascript
function () internal nonpayable
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### owner

```javascript
function owner() public view
returns(address)
```

**Returns**

the address of the owner.

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### isOwner

```javascript
function isOwner() public view
returns(bool)
```

**Returns**

true if `msg.sender` is the owner of the contract.

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### renounceOwnership

Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.

```javascript
function renounceOwnership() public nonpayable onlyOwner
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### transferOwnership

Allows the current owner to transfer control of the contract to a newOwner.

```javascript
function transferOwnership(address newOwner) public nonpayable onlyOwner
```

**Arguments**

| Name     | Type    | Description                           |
| -------- | ------- | ------------------------------------- |
| newOwner | address | The address to transfer ownership to. |

### \_transferOwnership

Transfers control of the contract to a newOwner.

```javascript
function _transferOwnership(address newOwner) internal nonpayable
```

**Arguments**

| Name     | Type    | Description                           |
| -------- | ------- | ------------------------------------- |
| newOwner | address | The address to transfer ownership to. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.polymath.network/polymath/api/ownable.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
