# Decentralization Efforts

YearnGPT addresses all centralization risks with Timelock and Multi sign, by delaying the sensitive operation and avoiding a single point of key management failure

**Multi-Sign wallets.**

YearnGPT adopts [Gnosis Safe](https://safe.global/) to improve the decentralization of the project.

Gnosis Safe was chosen as it is the most trusted platform to manage digital assets with their multi-signature format for DAOs and teams.

YearnGPT **Platform Deployment Address on Main-net**

{% embed url="<https://bscscan.com/address/0xe61aB07FE287D85FdBC2Be0b3a5a9F1b4D6BFF45>" %}

**The deployment of Gnosis Safe is at:**

{% embed url="<https://bscscan.com/address/0x3E5c63644E683549055b9Be8653de26E0B4CD36E>" %}

**Signer 1**:&#x20;

{% embed url="<https://bscscan.com/address/0xC152DAcd0f166089D02478d709eeEe57257e9852>" %}

**Signer 2**:&#x20;

{% embed url="<https://bscscan.com/address/0x6319C24cDBe4fb355bb97893574c22512E374aB7>" %}

**Signer 3:**&#x20;

{% embed url="<https://bscscan.com/address/0x912376428465Aff828e909d57aD6dfD75eed47E0>" %}

**Signer 4:**&#x20;

{% embed url="<https://bscscan.com/address/0x937D3914eF31426DBcBF0B18FeCF1d7D81B52292>" %}

**Signer 5:**&#x20;

{% embed url="<https://bscscan.com/address/0x2c41964ec1DC84A0E45B1D194Bd385aCEa534538>" %}

**Transaction Hash from Gnosis Safe**

{% embed url="<https://bscscan.com/tx/0x2418d3fd16d1e08134d922a1be26e2aed9f49162a859c64c524e057e283e6784>" %}

{% hint style="info" %}
Since only 4 out of 5 wallets are required to sign in order to proceed Gnosis Safe. Therefore, given first 4 wallet addresses are owned & signed by YearnTogether core team members and the fifth wallet is owned by CEO of YearnTogether.
{% endhint %}

**TimeLock smart contract**

{% embed url="<https://bscscan.com/address/0x67FfeB13e57E9d1355D5522E0203717fb199814d#code>" %}
YearnTogether TimeLock Contract
{% endembed %}

```
// TimeLock Config

uint public constant MIN_DELAY = 86_400; // seconds in a day (1 day)
uint public constant MAX_DELAY = 172_800; // seconds in a day (2 days)
uint public constant GRACE_PERIOD = 86_400; // seconds in a day (1 day)
```

```
// Withdrw With TimeLock

address public timeLock;   // delay admin transactions with Time Lock
/**
 * @notice Owner withdraw the liquidity funds from the contract
 */
function _withdrawLiquidityFunds(uint256 amount) external onlyTimeLock {
    require (amount <= liqidityFunds);
    liqidityFunds -= amount;

    tokenAddress.safeTransfer(liquidityAddress, amount);

    emit AvailableFund(currentDraw, liqidityFunds, exchangeListingFunds, charityFunds);
}
```

```
// TimeLock Usages
modifier onlyTimeLock() {
        require(msg.sender == timeLock);
        _;
}
```

```
// TimeLock Deployed Contract
timeLock = address(0x67FfeB13e57E9d1355D5522E0203717fb199814d);
```
