Skip to content

Commit

Permalink
add 4626 integration (#66)
Browse files Browse the repository at this point in the history
* add initial tranche4626 draft

* add -deposit/mint flow

* fix error message

* decrease Order handling + more refactoring

* more refactoring

* add handle collectRedeem/Invest

* add requestDeposit

* fix function signature

* add requestRedeem + more refactoring

* Connector - add processRedeem & processWitdraw flows

* refactor and build fixes

* fix build

* add public Liquidity Pool deployment

* fix build

* add multi tranche support

* format connectors file

* add global escrow limits and more docs

* add global escrow limits and more docs

* fix fix incoming message interfaces

* Apply suggestions from code review

Co-authored-by: Jeroen Offerijns <Offerijns@users.noreply.github.com>

* improve liquidity pool docs

* EIP4626 deployment mvp

* remove test env

* sign commit

---------

Co-authored-by: Jeroen Offerijns <Offerijns@users.noreply.github.com>
  • Loading branch information
ilinzweilin and Jeroen Offerijns authored Aug 17, 2023
1 parent 6473e2b commit 075c03b
Show file tree
Hide file tree
Showing 31 changed files with 2,752 additions and 2,039 deletions.
38 changes: 19 additions & 19 deletions script/Connector-Axelar-EVM.s.sol → script/Axelar-EVM.s.sol
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.18;

import {ConnectorAxelarEVMRouter} from "src/routers/axelar/EVMRouter.sol";
import {ConnectorGateway} from "src/routers/Gateway.sol";
import {CentrifugeConnector} from "src/Connector.sol";
import {ConnectorEscrow} from "src/Escrow.sol";
import {ConnectorPauseAdmin} from "src/admin/PauseAdmin.sol";
import {ConnectorDelayedAdmin} from "src/admin/DelayedAdmin.sol";
import {AxelarEVMRouter} from "src/routers/axelar/EVMRouter.sol";
import {Gateway} from "src/Gateway.sol";
import {InvestmentManager} from "src/InvestmentManager.sol";
import {Escrow} from "src/Escrow.sol";
import {PauseAdmin} from "src/admin/PauseAdmin.sol";
import {DelayedAdmin} from "src/admin/DelayedAdmin.sol";
import {TrancheTokenFactory, MemberlistFactory} from "src/token/factory.sol";
import "forge-std/Script.sol";

// Script to deploy Connectors with an AxelarEVM router.
contract ConnectorAxelarEVMScript is Script {
contract AxelarEVMScript is Script {
// address(0)[0:20] + keccak("Centrifuge")[21:32]
bytes32 SALT = 0x000000000000000000000000000000000000000075eb27011b69f002dc094d05;

Expand All @@ -25,27 +25,27 @@ contract ConnectorAxelarEVMScript is Script {
uint256 gracePeriod = 48 hours;
address tokenFactory_ = address(new TrancheTokenFactory{ salt: SALT }());
address memberlistFactory_ = address(new MemberlistFactory{ salt: SALT }());
address escrow_ = address(new ConnectorEscrow{ salt: SALT }());
CentrifugeConnector connector =
new CentrifugeConnector{ salt: SALT }(escrow_, tokenFactory_, memberlistFactory_);
address escrow_ = address(new Escrow{ salt: SALT }());
InvestmentManager investmentManager =
new InvestmentManager{ salt: SALT }(escrow_, tokenFactory_, memberlistFactory_);

ConnectorAxelarEVMRouter router = new ConnectorAxelarEVMRouter{ salt: SALT }(
address(connector),
AxelarEVMRouter router = new AxelarEVMRouter{ salt: SALT }(
address(investmentManager),
address(vm.envAddress("AXELAR_GATEWAY"))
);
connector.file("router", address(router));
ConnectorPauseAdmin pauseAdmin = new ConnectorPauseAdmin();
ConnectorDelayedAdmin delayedAdmin = new ConnectorDelayedAdmin();
ConnectorGateway gateway =
new ConnectorGateway{ salt: SALT }(address(connector), address(router), shortWait, longWait, gracePeriod);
investmentManager.file("router", address(router));
PauseAdmin pauseAdmin = new PauseAdmin();
DelayedAdmin delayedAdmin = new DelayedAdmin();
Gateway gateway =
new Gateway{ salt: SALT }(address(investmentManager), address(router), shortWait, longWait, gracePeriod);
gateway.rely(address(pauseAdmin));
gateway.rely(address(delayedAdmin));
pauseAdmin.file("gateway", address(gateway));
delayedAdmin.file("gateway", address(gateway));
router.file("gateway", address(gateway));
connector.rely(address(gateway));
investmentManager.rely(address(gateway));
router.rely(address(gateway));
ConnectorEscrow(address(escrow_)).rely(address(gateway));
Escrow(address(escrow_)).rely(address(gateway));

// TODO: rely pauseMultisig on pauseAdmin
pauseAdmin.rely(address(0));
Expand Down
6 changes: 3 additions & 3 deletions script/Connector-Axelar-XCM.s.sol → script/Axelar-XCM.s.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.18;

import {ConnectorAxelarXCMRouter} from "src/routers/axelar/XCMRouter.sol";
import {AxelarXCMRouter} from "src/routers/axelar/XCMRouter.sol";
import "forge-std/Script.sol";

// Script to deploy Connectors with an AxelarXCM router.
contract ConnectorAxelarXCMScript is Script {
contract AxelarXCMScript is Script {
// address(0)[0:20] + keccak("Centrifuge")[21:32]
bytes32 SALT = 0x000000000000000000000000000000000000000075eb27011b69f002dc094d05;

Expand All @@ -14,7 +14,7 @@ contract ConnectorAxelarXCMScript is Script {
function run() public {
vm.startBroadcast();

ConnectorAxelarXCMRouter router = new ConnectorAxelarXCMRouter{ salt: SALT }(
AxelarXCMRouter router = new AxelarXCMRouter{ salt: SALT }(
address(vm.envAddress("CENTRIFUGE_CHAIN_ORIGIN")),
address(vm.envAddress("AXELAR_GATEWAY")),
address(vm.envAddress("AXELAR_EVM_ROUTER_ORIGIN"))
Expand Down
36 changes: 18 additions & 18 deletions script/Connector-XCM.s.sol → script/XCM.s.sol
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.18;

import {ConnectorXCMRouter} from "src/routers/xcm/Router.sol";
import {ConnectorGateway} from "src/routers/Gateway.sol";
import {CentrifugeConnector} from "src/Connector.sol";
import {ConnectorEscrow} from "src/Escrow.sol";
import {ConnectorPauseAdmin} from "src/admin/PauseAdmin.sol";
import {ConnectorDelayedAdmin} from "src/admin/DelayedAdmin.sol";
import {XCMRouter} from "src/routers/xcm/Router.sol";
import {Gateway} from "src/Gateway.sol";
import {InvestmentManager} from "src/InvestmentManager.sol";
import {Escrow} from "src/Escrow.sol";
import {PauseAdmin} from "src/admin/PauseAdmin.sol";
import {DelayedAdmin} from "src/admin/DelayedAdmin.sol";
import {TrancheTokenFactory, MemberlistFactory} from "src/token/factory.sol";
import "forge-std/Script.sol";

// Script to deploy Connectors with an XCM router.
contract ConnectorXCMScript is Script {
contract XCMScript is Script {
// address(0)[0:20] + keccak("Centrifuge")[21:32]
bytes32 SALT = 0x000000000000000000000000000000000000000075eb27011b69f002dc094d05;

Expand All @@ -25,28 +25,28 @@ contract ConnectorXCMScript is Script {
uint256 gracePeriod = 48 hours;
address tokenFactory_ = address(new TrancheTokenFactory{ salt: SALT }());
address memberlistFactory_ = address(new MemberlistFactory{ salt: SALT }());
address escrow_ = address(new ConnectorEscrow{ salt: SALT }());
CentrifugeConnector connector =
new CentrifugeConnector{ salt: SALT }(escrow_, tokenFactory_, memberlistFactory_);
address escrow_ = address(new Escrow{ salt: SALT }());
InvestmentManager investmentManager =
new InvestmentManager{ salt: SALT }(escrow_, tokenFactory_, memberlistFactory_);

ConnectorXCMRouter router = new ConnectorXCMRouter{ salt: SALT }(
XCMRouter router = new XCMRouter{ salt: SALT }(
address(vm.envAddress("CENTRIFUGE_CHAIN_ORIGIN")),
uint8(vm.envUint("CENTRIFUGE_CHAIN_CONNECTORS_PALLET_INDEX")),
uint8(vm.envUint("CENTRIFUGE_CHAIN_CONNECTORS_PALLET_HANDLE_INDEX"))
);
connector.file("router", address(router));
ConnectorPauseAdmin pauseAdmin = new ConnectorPauseAdmin();
ConnectorDelayedAdmin delayedAdmin = new ConnectorDelayedAdmin();
ConnectorGateway gateway =
new ConnectorGateway{ salt: SALT }(address(connector), address(router), shortWait, longWait, gracePeriod);
investmentManager.file("router", address(router));
PauseAdmin pauseAdmin = new PauseAdmin();
DelayedAdmin delayedAdmin = new DelayedAdmin();
Gateway gateway =
new Gateway{ salt: SALT }(address(investmentManager), address(router), shortWait, longWait, gracePeriod);
gateway.rely(address(pauseAdmin));
gateway.rely(address(delayedAdmin));
pauseAdmin.file("gateway", address(gateway));
delayedAdmin.file("gateway", address(gateway));
router.file("gateway", address(gateway));
connector.rely(address(gateway));
investmentManager.rely(address(gateway));
router.rely(address(gateway));
ConnectorEscrow(address(escrow_)).rely(address(gateway));
Escrow(address(escrow_)).rely(address(gateway));

// rely multisig on pauseAdmin
pauseAdmin.rely(address(0));
Expand Down
Loading

0 comments on commit 075c03b

Please sign in to comment.