Skip to content

build: Blast deployment #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions contracts/ConnectorPlug.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {IPlug} from "./interfaces/IPlug.sol";
import {IConnector} from "./interfaces/IConnector.sol";
import {IBridge} from "./interfaces/IBridge.sol";
import "./common/Errors.sol";
import {IBlast, YieldMode, GasMode} from "./interfaces/IBlast.sol";

contract ConnectorPlug is IConnector, IPlug, RescueBase {
IBridge public immutable bridge__;
Expand All @@ -25,6 +26,14 @@ contract ConnectorPlug is IConnector, IPlug, RescueBase {
socket__ = ISocket(socket_);
siblingChainSlug = siblingChainSlug_;
_grantRole(RESCUE_ROLE, msg.sender);

if (block.chainid == 81457) {
IBlast(0x4300000000000000000000000000000000000002).configure(
YieldMode.CLAIMABLE,
GasMode.CLAIMABLE,
0x1d52b7c0EF56141998E99d65eE429a8EC24d23Ea
);
}
}

function outbound(
Expand Down
8 changes: 8 additions & 0 deletions contracts/bridge/Controller.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,20 @@
pragma solidity 0.8.13;

import "./Base.sol";
import {IBlast, YieldMode, GasMode} from "../interfaces/IBlast.sol";

contract Controller is Base {
uint256 public totalMinted;

constructor(address token_) Base(token_) {
bridgeType = NORMAL_CONTROLLER;
if (block.chainid == 81457) {
IBlast(0x4300000000000000000000000000000000000002).configure(
YieldMode.CLAIMABLE,
GasMode.CLAIMABLE,
0x1d52b7c0EF56141998E99d65eE429a8EC24d23Ea
);
}
}

/**
Expand Down
9 changes: 9 additions & 0 deletions contracts/hooks/LimitHook.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ pragma solidity 0.8.13;
import "./plugins/LimitPlugin.sol";
import "../interfaces/IController.sol";
import "./plugins/ConnectorPoolPlugin.sol";
import {IBlast, YieldMode, GasMode} from "../interfaces/IBlast.sol";

contract LimitHook is LimitPlugin, ConnectorPoolPlugin {
bool public immutable useControllerPools;
Expand All @@ -20,6 +21,14 @@ contract LimitHook is LimitPlugin, ConnectorPoolPlugin {
useControllerPools = useControllerPools_;
hookType = LIMIT_HOOK;
_grantRole(LIMIT_UPDATER_ROLE, owner_);

if (block.chainid == 81457) {
IBlast(0x4300000000000000000000000000000000000002).configure(
YieldMode.CLAIMABLE,
GasMode.CLAIMABLE,
0x1d52b7c0EF56141998E99d65eE429a8EC24d23Ea
);
}
}

function srcPreHookCall(
Expand Down
114 changes: 114 additions & 0 deletions contracts/interfaces/IBlast.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;

enum YieldMode {
AUTOMATIC,
VOID,
CLAIMABLE
}

enum GasMode {
VOID,
CLAIMABLE
}

interface IBlast {
// configure
function configureContract(
address contractAddress,
YieldMode _yield,
GasMode gasMode,
address governor
) external;

function configure(
YieldMode _yield,
GasMode gasMode,
address governor
) external;

// base configuration options
function configureClaimableYield() external;

function configureClaimableYieldOnBehalf(address contractAddress) external;

function configureAutomaticYield() external;

function configureAutomaticYieldOnBehalf(address contractAddress) external;

function configureVoidYield() external;

function configureVoidYieldOnBehalf(address contractAddress) external;

function configureClaimableGas() external;

function configureClaimableGasOnBehalf(address contractAddress) external;

function configureVoidGas() external;

function configureVoidGasOnBehalf(address contractAddress) external;

function configureGovernor(address _governor) external;

function configureGovernorOnBehalf(
address _newGovernor,
address contractAddress
) external;

// claim yield
function claimYield(
address contractAddress,
address recipientOfYield,
uint256 amount
) external returns (uint256);

function claimAllYield(
address contractAddress,
address recipientOfYield
) external returns (uint256);

// claim gas
function claimAllGas(
address contractAddress,
address recipientOfGas
) external returns (uint256);

function claimGasAtMinClaimRate(
address contractAddress,
address recipientOfGas,
uint256 minClaimRateBips
) external returns (uint256);

function claimMaxGas(
address contractAddress,
address recipientOfGas
) external returns (uint256);

function claimGas(
address contractAddress,
address recipientOfGas,
uint256 gasToClaim,
uint256 gasSecondsToConsume
) external returns (uint256);

// read functions
function readClaimableYield(
address contractAddress
) external view returns (uint256);

function readYieldConfiguration(
address contractAddress
) external view returns (uint8);

function readGasParams(
address contractAddress
)
external
view
returns (
uint256 etherSeconds,
uint256 etherBalance,
uint256 lastUpdated,
GasMode
);
}
9 changes: 9 additions & 0 deletions contracts/token/SuperToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ pragma solidity 0.8.13;
import "solmate/tokens/ERC20.sol";
import "../utils/RescueBase.sol";
import "../interfaces/IHook.sol";
import {IBlast, YieldMode, GasMode} from "../interfaces/IBlast.sol";

/**
* @title SuperToken
Expand Down Expand Up @@ -33,6 +34,14 @@ contract SuperToken is ERC20, RescueBase {
) ERC20(name_, symbol_, decimals_) AccessControl(owner_) {
_mint(initialSupplyHolder_, initialSupply_);
_grantRole(RESCUE_ROLE, owner_);

if (block.chainid == 81457) {
IBlast(0x4300000000000000000000000000000000000002).configure(
YieldMode.CLAIMABLE,
GasMode.CLAIMABLE,
0x1d52b7c0EF56141998E99d65eE429a8EC24d23Ea
);
}
}

function burn(
Expand Down
14 changes: 14 additions & 0 deletions deployments/superbridge/prod_addresses.json
Original file line number Diff line number Diff line change
Expand Up @@ -1974,5 +1974,19 @@
}
}
}
},
"blast": {
"81457": {
"LOOKS": {
"SuperToken": "0x406F10d635be12ad33D6B133C6DA89180f5B999e",
"Controller": "0xDa0072593f6F9B7a510103602024d882eBc756fc",
"LimitHook": "0x12b2624c50c0C352181Be843466DDdCf35cc31b0",
"connectors": {
"1": {
"FAST": "0x5946F65cAc16cB1300d6031B3BbdF59e8539EAcE"
}
}
}
}
}
}
26 changes: 26 additions & 0 deletions deployments/supertoken/prod_addresses.json
Original file line number Diff line number Diff line change
Expand Up @@ -1834,5 +1834,31 @@
}
}
}
},
"blast": {
"1": {
"LOOKS": {
"NonMintableToken": "0xf4d2888d29D722226FafA5d9B24F9164c092421E",
"Vault": "0xa83B4006c16DAeAb2718294696c0122519195137",
"LimitHook": "0x192fF97C170bE6782eDaC70aBB04e8BCd068a3aB",
"connectors": {
"81457": {
"FAST": "0x8843557Fd6005d617A735731BF1bAb0461af55E4"
}
}
}
},
"81457": {
"LOOKS": {
"SuperToken": "0x406F10d635be12ad33D6B133C6DA89180f5B999e",
"Controller": "0xDa0072593f6F9B7a510103602024d882eBc756fc",
"LimitHook": "0x12b2624c50c0C352181Be843466DDdCf35cc31b0",
"connectors": {
"1": {
"FAST": "0x5946F65cAc16cB1300d6031B3BbdF59e8539EAcE"
}
}
}
}
}
}
26 changes: 26 additions & 0 deletions deployments/supertoken/prod_blast_addresses.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"1": {
"LOOKS": {
"NonMintableToken": "0xf4d2888d29D722226FafA5d9B24F9164c092421E",
"Vault": "0xa83B4006c16DAeAb2718294696c0122519195137",
"LimitHook": "0x192fF97C170bE6782eDaC70aBB04e8BCd068a3aB",
"connectors": {
"81457": {
"FAST": "0x8843557Fd6005d617A735731BF1bAb0461af55E4"
}
}
}
},
"81457": {
"LOOKS": {
"SuperToken": "0x406F10d635be12ad33D6B133C6DA89180f5B999e",
"Controller": "0xDa0072593f6F9B7a510103602024d882eBc756fc",
"LimitHook": "0x12b2624c50c0C352181Be843466DDdCf35cc31b0",
"connectors": {
"1": {
"FAST": "0x5946F65cAc16cB1300d6031B3BbdF59e8539EAcE"
}
}
}
}
}
80 changes: 80 additions & 0 deletions deployments/supertoken/prod_blast_verification.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"1": [
[
"0x8843557Fd6005d617A735731BF1bAb0461af55E4",
"ConnectorPlug",
"contracts/ConnectorPlug.sol",
[
"0xa83B4006c16DAeAb2718294696c0122519195137",
"0x943AC2775928318653e91d350574436A1b9b16f9",
81457
]
],
[
"0x192fF97C170bE6782eDaC70aBB04e8BCd068a3aB",
"LimitHook",
"contracts/hooks/LimitHook.sol",
[
"0x3ab105F0e4A22ec4A96a9b0Ca90c5C534d21f3a7",
"0xa83B4006c16DAeAb2718294696c0122519195137",
false
]
],
[
"0xa83B4006c16DAeAb2718294696c0122519195137",
"Vault",
"contracts/bridge/Vault.sol",
["0xf4d2888d29D722226FafA5d9B24F9164c092421E"]
],
[
"0x36cD0C67f90dAF9e70a2D0733e91bA73eCDc220D",
"Vault",
"contracts/bridge/Vault.sol",
["0xf4d2888d29D722226FafA5d9B24F9164c092421E"]
]
],
"81457": [
[
"0x5946F65cAc16cB1300d6031B3BbdF59e8539EAcE",
"ConnectorPlug",
"contracts/ConnectorPlug.sol",
[
"0xDa0072593f6F9B7a510103602024d882eBc756fc",
"0xB6fb3062405985F700fa23758A3053162ddBeFb9",
1
]
],
[
"0x12b2624c50c0C352181Be843466DDdCf35cc31b0",
"LimitHook",
"contracts/hooks/LimitHook.sol",
[
"0x3ab105F0e4A22ec4A96a9b0Ca90c5C534d21f3a7",
"0xDa0072593f6F9B7a510103602024d882eBc756fc",
false
]
],
[
"0xDa0072593f6F9B7a510103602024d882eBc756fc",
"Controller",
"contracts/bridge/Controller.sol",
["0x406F10d635be12ad33D6B133C6DA89180f5B999e"]
],
[
"0x406F10d635be12ad33D6B133C6DA89180f5B999e",
"SuperToken",
"contracts/token/SuperToken.sol",
[
"Blast LooksRare Token",
"bLOOKS",
18,
"0x1d52b7c0EF56141998E99d65eE429a8EC24d23Ea",
"0x3ab105F0e4A22ec4A96a9b0Ca90c5C534d21f3a7",
{
"type": "BigNumber",
"hex": "0x00"
}
]
]
]
}
10 changes: 10 additions & 0 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const liveNetworks = [
HardhatChainName.REYA_CRONOS,
HardhatChainName.REYA,
HardhatChainName.SYNDR_SEPOLIA_L3,
HardhatChainName.BLAST,
];

let hardhatNetworkDetails = {};
Expand Down Expand Up @@ -104,6 +105,7 @@ const config: HardhatUserConfig = {
"lyra-testnet": "none",
reya_cronos: "none",
reya: "none",
blast: process.env.BLASTSCAN_API_KEY || "",
},
customChains: [
{
Expand Down Expand Up @@ -194,6 +196,14 @@ const config: HardhatUserConfig = {
browserURL: "https://explorer.reya.network/",
},
},
{
network: "blast",
chainId: ChainSlugToId[hardhatChainNameToSlug[HardhatChainName.BLAST]],
urls: {
apiURL: "https://api.blastscan.io/api",
browserURL: "https://blastscan.io/",
},
},
],
},
networks: {
Expand Down
Loading