# KernelProxy

## contract KernelProxy

is [IKernelEvents,](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/kernel/ikernelevents) [KernelStorage,](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/kernel/kernelstorage) [KernelAppIds](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/kernel/kernelappids), [KernelNamespaceConstants](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/kernel/kernelnamespaceconstants), [IsContract](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/common/iscontract), [DepositableDelegateProxy](https://legacy-docs.aragon.org/developers/tools/aragonos/smart-contract-references/common/depositabledelegateproxy)

Source: [contracts/kernel/KernelProxy.sol](https://github.com/aragon/aragonOS/blob/v4.4.0/contracts/kernel/KernelProxy.sol)

## Index

* [fallback](#fallback)
* [implementation](#implementation)
* [proxyType](#proxytype)

## Reference

### Functions

#### **fallback** <a href="#fallback" id="fallback"></a>

`function (IKernel _kernelImpl) public`

***

KernelProxy is a proxy contract to a kernel implementation. The implementation can update the reference, which effectively upgrades the contract.

Parameters:

* `_kernelImpl` - Address of the contract used as implementation for kernel

#### **implementation** <a href="#implementation" id="implementation"></a>

` function`` `` `**`implementation`**`() public view returns (address)`

***

ERC897, the address the proxy would delegate calls to.

Returns:

* address

#### **proxyType** <a href="#proxytype" id="proxytype"></a>

` function`` `` `**`proxyType`**`() public pure returns (uint256)`

***

ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy.

Returns:

* uint256
