Skip to content

Latest commit

 

History

History
278 lines (252 loc) · 10.1 KB

UpgradableProxy.md

File metadata and controls

278 lines (252 loc) · 10.1 KB

Upgradable Proxy contract. (UpgradableProxy.sol)

View Source: contracts/proxy/UpgradableProxy.sol

↗ Extends: Proxy ↘ Derived Contracts: FeeSharingCollectorProxy, FourYearVesting, LiquidityMiningProxy, StakingProxy, StakingRewardsProxy, VestingRegistryProxy

UpgradableProxy contract

A disadvantage of the immutable ledger is that nobody can change the source code of a smart contract after it’s been deployed. In order to fix bugs or introduce new features, smart contracts need to be upgradable somehow.

  • Although it is not possible to upgrade the code of an already deployed smart contract, it is possible to set-up a proxy contract architecture that will allow to use new deployed contracts as if the main logic had been upgraded.
  • A proxy architecture pattern is such that all message calls go through a Proxy contract that will redirect them to the latest deployed contract logic. To upgrade, a new version of the contract is deployed, and the Proxy is updated to reference the new contract address.

Functions


setImplementation

⤿ Overridden Implementation(s): FourYearVesting.setImplementation

Set address of the implementation.

function setImplementation(address _implementation) public nonpayable onlyProxyOwner 

Arguments

Name Type Description
_implementation address Address of the implementation.
Source Code
nction setImplementation(address _implementation) public onlyProxyOwner {
        _setImplementation(_implementation);
    }

setProxyOwner

Set address of the owner.

function setProxyOwner(address _owner) public nonpayable onlyProxyOwner 

Arguments

Name Type Description
_owner address Address of the owner.
Source Code
nction setProxyOwner(address _owner) public onlyProxyOwner {
        _setProxyOwner(_owner);
    }
}

Contracts