Skip to content

Commit

Permalink
Adding Solana gateway address for supported x-chains (#689)
Browse files Browse the repository at this point in the history
Added Solana gateway addresses for Testnet and Mainnet for supported EVM
chains.
Added mapping scripts.

`wormhole_gateway` on
[mainnet](https://solscan.io/account/87MEvHZCXE3ML5rrmh5uX1FbShHmRXXS32xJDGbQ7h5t)
and
[testnet](https://solscan.io/account/87MEvHZCXE3ML5rrmh5uX1FbShHmRXXS32xJDGbQ7h5t?cluster=devnet)

Solana addresses are base58 encoded. In this PR Solana addresses are
represented in hex.
  • Loading branch information
nkuba authored Aug 14, 2023
2 parents eb268b4 + a32fa29 commit d9b9a6c
Show file tree
Hide file tree
Showing 16 changed files with 292 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {

Check warning on line 4 in cross-chain/arbitrum/deploy_l2/00_resolve_solana_wormhole_gateway.ts

View workflow job for this annotation

GitHub Actions / contracts-format

Unexpected unnamed async function
const { helpers, deployments } = hre
const { log } = deployments

const SolanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

if (
SolanaWormholeGateway &&
helpers.address.isValid(SolanaWormholeGateway.address)
) {
log(
`using existing SolanaWormholeGateway at ${SolanaWormholeGateway.address}`
)
} else if (hre.network.name === "hardhat") {
log("using fake SolanaWormholeGateway for hardhat network")
} else {
throw new Error("deployed SolanaWormholeGateway contract not found")
}
}

export default func

func.tags = ["SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre
const { execute, log } = deployments
const { deployer } = await getNamedAccounts()

// Fake SolanaWormholeGateway for local development purposes only.
const fakeSolanaWormholeGateway =
"0x11a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"

// See https://docs.wormhole.com/wormhole/blockchain-environments/solana
// This ID is valid for both Solana Devnet and Mainnet
const solanaWormholeChainID = 1

const solanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

let solanaWormholeGatewayAddress = solanaWormholeGateway?.address
if (!solanaWormholeGatewayAddress && hre.network.name === "hardhat") {
solanaWormholeGatewayAddress = fakeSolanaWormholeGateway
log(`fake SolanaWormholeGateway address ${solanaWormholeGatewayAddress}`)
}

await execute(
"ArbitrumWormholeGateway",
{ from: deployer, log: true, waitConfirmations: 1 },
"updateGatewayAddress",
solanaWormholeChainID,
solanaWormholeGatewayAddress
)
}

export default func

func.tags = ["SetSolanaGatewayAddress"]
func.dependencies = ["ArbitrumWormholeGateway", "SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
28 changes: 28 additions & 0 deletions cross-chain/base/deploy_l2/00_resolve_solana_wormhole_gateway.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { helpers, deployments } = hre
const { log } = deployments

const SolanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

if (
SolanaWormholeGateway &&
helpers.address.isValid(SolanaWormholeGateway.address)
) {
log(
`using existing SolanaWormholeGateway at ${SolanaWormholeGateway.address}`
)
} else if (hre.network.name === "hardhat") {
log("using fake SolanaWormholeGateway for hardhat network")
} else {
throw new Error("deployed SolanaWormholeGateway contract not found")
}
}

export default func

func.tags = ["SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre
const { execute, log } = deployments
const { deployer } = await getNamedAccounts()

// Fake SolanaWormholeGateway for local development purposes only.
const fakeSolanaWormholeGateway =
"0x11a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"

// See https://docs.wormhole.com/wormhole/blockchain-environments/solana
// This ID is valid for both Solana Devnet and Mainnet
const solanaWormholeChainID = 1

const solanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

let solanaWormholeGatewayAddress = solanaWormholeGateway?.address
if (!solanaWormholeGatewayAddress && hre.network.name === "hardhat") {
solanaWormholeGatewayAddress = fakeSolanaWormholeGateway
log(`fake SolanaWormholeGateway address ${solanaWormholeGatewayAddress}`)
}

await execute(
"BaseWormholeGateway",
{ from: deployer, log: true, waitConfirmations: 1 },
"updateGatewayAddress",
solanaWormholeChainID,
solanaWormholeGatewayAddress
)
}

export default func

func.tags = ["SetSolanaGatewayAddress"]
func.dependencies = ["BaseWormholeGateway", "SolanaWormholeGateway"]
3 changes: 3 additions & 0 deletions cross-chain/base/external/base/SolanaWormholeGateway.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {

Check warning on line 4 in cross-chain/optimism/deploy_l2/00_resolve_solana_wormhole_gateway.ts

View workflow job for this annotation

GitHub Actions / contracts-format

Unexpected unnamed async function
const { helpers, deployments } = hre
const { log } = deployments

const SolanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

if (
SolanaWormholeGateway &&
helpers.address.isValid(SolanaWormholeGateway.address)
) {
log(
`using existing SolanaWormholeGateway at ${SolanaWormholeGateway.address}`
)
} else if (hre.network.name === "hardhat") {
log("using fake SolanaWormholeGateway for hardhat network")
} else {
throw new Error("deployed SolanaWormholeGateway contract not found")
}
}

export default func

func.tags = ["SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre
const { execute, log } = deployments
const { deployer } = await getNamedAccounts()

// Fake SolanaWormholeGateway for local development purposes only.
const fakeSolanaWormholeGateway =
"0x11a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"

// See https://docs.wormhole.com/wormhole/blockchain-environments/solana
// This ID is valid for both Solana Devnet and Mainnet
const solanaWormholeChainID = 1

const solanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

let solanaWormholeGatewayAddress = solanaWormholeGateway?.address
if (!solanaWormholeGatewayAddress && hre.network.name === "hardhat") {
solanaWormholeGatewayAddress = fakeSolanaWormholeGateway
log(`fake SolanaWormholeGateway address ${solanaWormholeGatewayAddress}`)
}

await execute(
"OptimismWormholeGateway",
{ from: deployer, log: true, waitConfirmations: 1 },
"updateGatewayAddress",
solanaWormholeChainID,
solanaWormholeGatewayAddress
)
}

export default func

func.tags = ["SetSolanaGatewayAddress"]
func.dependencies = ["OptimismWormholeGateway", "SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {

Check warning on line 4 in cross-chain/polygon/deploy_sidechain/00_resolve_solana_wormhole_gateway.ts

View workflow job for this annotation

GitHub Actions / contracts-format

Unexpected unnamed async function
const { helpers, deployments } = hre
const { log } = deployments

const SolanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

if (
SolanaWormholeGateway &&
helpers.address.isValid(SolanaWormholeGateway.address)
) {
log(
`using existing SolanaWormholeGateway at ${SolanaWormholeGateway.address}`
)
} else if (hre.network.name === "hardhat") {
log("using fake SolanaWormholeGateway for hardhat network")
} else {
throw new Error("deployed SolanaWormholeGateway contract not found")
}
}

export default func

func.tags = ["SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { HardhatRuntimeEnvironment } from "hardhat/types"
import type { DeployFunction } from "hardhat-deploy/types"

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre
const { execute, log } = deployments
const { deployer } = await getNamedAccounts()

// Fake SolanaWormholeGateway for local development purposes only.
const fakeSolanaWormholeGateway =
"0x11a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"

// See https://docs.wormhole.com/wormhole/blockchain-environments/solana
// This ID is valid for both Solana Devnet and Mainnet
const solanaWormholeChainID = 1

const solanaWormholeGateway = await deployments.getOrNull(
"SolanaWormholeGateway"
)

let solanaWormholeGatewayAddress = solanaWormholeGateway?.address
if (!solanaWormholeGatewayAddress && hre.network.name === "hardhat") {
solanaWormholeGatewayAddress = fakeSolanaWormholeGateway
log(`fake SolanaWormholeGateway address ${solanaWormholeGatewayAddress}`)
}

await execute(
"PolygonWormholeGateway",
{ from: deployer, log: true, waitConfirmations: 1 },
"updateGatewayAddress",
solanaWormholeChainID,
solanaWormholeGatewayAddress
)
}

export default func

func.tags = ["SetSolanaGatewayAddress"]
func.dependencies = ["PolygonWormholeGateway", "SolanaWormholeGateway"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"address": "0x69a22dc2e01ecd2ae40864822d4406ff8aed4e2b8932385dabe818422ff67e1b"
}

0 comments on commit d9b9a6c

Please sign in to comment.