Skip to content

Commit

Permalink
Fixes for operational scripts (#1373)
Browse files Browse the repository at this point in the history
* fixes for operational scripts

* revert
  • Loading branch information
alistair-singh authored Feb 4, 2025
1 parent edd004b commit f95dc27
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 57 deletions.
27 changes: 13 additions & 14 deletions web/packages/operations/src/global_transfer_history.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import "dotenv/config"
import { contextFactory, destroyContext, environment, subscan, history } from "@snowbridge/api"
import { environment, subscan, history, Context } from "@snowbridge/api"
import { BeefyClient__factory, IGateway__factory } from "@snowbridge/contract-types"
import { AlchemyProvider } from "ethers"

Expand All @@ -19,18 +19,16 @@ const monitor = async () => {
if (!config.SUBSCAN_API) throw Error(`Environment ${env} does not support subscan.`)

const ethereumProvider = new AlchemyProvider(ethChainId, process.env.REACT_APP_ALCHEMY_KEY)
const context = await contextFactory({
const context = new Context({
ethereum: {
execution_url: ethereumProvider,
beacon_url: config.BEACON_HTTP_API,
},
polkadot: {
url: {
bridgeHub: config.BRIDGE_HUB_URL,
assetHub: config.ASSET_HUB_URL,
relaychain: config.RELAY_CHAIN_URL,
parachains: config.PARACHAINS,
},
assetHubParaId: config.ASSET_HUB_PARAID,
bridgeHubParaId: config.BRIDGE_HUB_PARAID,
relaychain: config.RELAY_CHAIN_URL,
parachains: config.PARACHAINS,
},
appContracts: {
gateway: config.GATEWAY_CONTRACT,
Expand All @@ -48,18 +46,19 @@ const monitor = async () => {
const relaychainScan = subscan.createApi(config.SUBSCAN_API.RELAY_CHAIN_URL, subscanKey)
const skipLightClientUpdates = true

const [assetHub, bridgeHub] = await Promise.all([context.assetHub(), context.bridgeHub()])
const [
ethNowBlock,
assetHubNowBlock,
bridgeHubNowBlock,
bridgeHubParaIdCodec,
assetHubParaIdCodec,
] = await Promise.all([
context.ethereum.api.getBlock("latest"),
context.polkadot.api.assetHub.rpc.chain.getHeader(),
context.polkadot.api.bridgeHub.rpc.chain.getHeader(),
context.polkadot.api.bridgeHub.query.parachainInfo.parachainId(),
context.polkadot.api.assetHub.query.parachainInfo.parachainId(),
context.ethereum().getBlock("latest"),
assetHub.rpc.chain.getHeader(),
bridgeHub.rpc.chain.getHeader(),
bridgeHub.query.parachainInfo.parachainId(),
assetHub.query.parachainInfo.parachainId(),
])

if (ethNowBlock == null) throw Error("Cannot fetch block")
Expand Down Expand Up @@ -123,7 +122,7 @@ const monitor = async () => {
transfers.sort((a, b) => b.info.when.getTime() - a.info.when.getTime())
console.log(JSON.stringify(transfers, null, 2))

await destroyContext(context)
await context.destroyContext()
}

monitor()
Expand Down
48 changes: 27 additions & 21 deletions web/packages/operations/src/monitor.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { u8aToHex } from "@polkadot/util"
import { blake2AsU8a } from "@polkadot/util-crypto"
import { contextFactory, destroyContext, environment, status, utils } from "@snowbridge/api"
import { Context, environment, status, utils } from "@snowbridge/api"
import { sendMetrics } from "./alarm"
import { BlockLatencyThreshold } from "./alarm"

Expand All @@ -18,17 +18,21 @@ export const monitor = async (): Promise<status.AllMetrics> => {

const infuraKey = process.env.REACT_APP_INFURA_KEY || ""

const context = await contextFactory({
const parachains: { [paraId: string]: string } = {}
parachains[config.BRIDGE_HUB_PARAID.toString()] =
process.env["BRIDGE_HUB_URL"] ?? config.PARACHAINS[config.BRIDGE_HUB_PARAID.toString()]
parachains[config.ASSET_HUB_PARAID.toString()] =
process.env["ASSET_HUB_URL"] ?? config.PARACHAINS[config.ASSET_HUB_PARAID.toString()]
const context = new Context({
ethereum: {
execution_url: process.env["EXECUTION_NODE_URL"] || config.ETHEREUM_API(infuraKey),
beacon_url: process.env["BEACON_NODE_URL"] || config.BEACON_HTTP_API,
},
polkadot: {
url: {
bridgeHub: process.env["BRIDGE_HUB_URL"] || config.BRIDGE_HUB_URL,
assetHub: process.env["ASSET_HUB_URL"] || config.ASSET_HUB_URL,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
assetHubParaId: config.ASSET_HUB_PARAID,
bridgeHubParaId: config.BRIDGE_HUB_PARAID,
parachains: parachains,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
appContracts: {
gateway: config.GATEWAY_CONTRACT,
Expand All @@ -45,16 +49,16 @@ export const monitor = async (): Promise<status.AllMetrics> => {
})
console.log("Bridge Status:", bridgeStatus)

const assethub = await status.channelStatusInfo(
const assethubChannelStatus = await status.channelStatusInfo(
context,
utils.paraIdToChannelId(config.ASSET_HUB_PARAID),
{
toPolkadotCheckIntervalInBlock: BlockLatencyThreshold.ToPolkadot,
toEthereumCheckIntervalInBlock: BlockLatencyThreshold.ToEthereum,
}
)
assethub.name = status.ChannelKind.AssetHub
console.log("Asset Hub Channel:", assethub)
assethubChannelStatus.name = status.ChannelKind.AssetHub
console.log("Asset Hub Channel:", assethubChannelStatus)

const primaryGov = await status.channelStatusInfo(
context,
Expand All @@ -78,27 +82,29 @@ export const monitor = async (): Promise<status.AllMetrics> => {
secondaryGov.name = status.ChannelKind.Secondary
console.log("Secondary Governance Channel:", secondaryGov)

const [assetHub, bridgeHub] = await Promise.all([context.assetHub(), context.bridgeHub()])

let assetHubSovereign = BigInt(
(
(
await context.polkadot.api.bridgeHub.query.system.account(
await bridgeHub.query.system.account(
utils.paraIdToSovereignAccount("sibl", config.ASSET_HUB_PARAID)
)
).toPrimitive() as any
).data.free
)
console.log("Asset Hub Sovereign balance on bridgehub:", assetHubSovereign)

let assetHubAgentBalance = await context.ethereum.api.getBalance(
await context.ethereum.contracts.gateway.agentOf(
utils.paraIdToAgentId(context.polkadot.api.bridgeHub.registry, config.ASSET_HUB_PARAID)
let assetHubAgentBalance = await context.ethereum().getBalance(
await context.gateway().agentOf(
utils.paraIdToAgentId(bridgeHub.registry, config.ASSET_HUB_PARAID)
)
)
console.log("Asset Hub Agent balance:", assetHubAgentBalance)

const bridgeHubAgentId = u8aToHex(blake2AsU8a("0x00", 256))
let bridgeHubAgentBalance = await context.ethereum.api.getBalance(
await context.ethereum.contracts.gateway.agentOf(bridgeHubAgentId)
let bridgeHubAgentBalance = await context.ethereum().getBalance(
await context.gateway().agentOf(bridgeHubAgentId)
)
console.log("Bridge Hub Agent balance:", bridgeHubAgentBalance)

Expand All @@ -108,13 +114,13 @@ export const monitor = async (): Promise<status.AllMetrics> => {
let balance = 0n
switch (relayer.type) {
case "ethereum":
balance = await context.ethereum.api.getBalance(relayer.account)
balance = await context.ethereum().getBalance(relayer.account)
break
case "substrate":
balance = BigInt(
(
(
await context.polkadot.api.bridgeHub.query.system.account(
await bridgeHub.query.system.account(
relayer.account
)
).toPrimitive() as any
Expand All @@ -127,7 +133,7 @@ export const monitor = async (): Promise<status.AllMetrics> => {
relayers.push(relayer)
}

const channels = [assethub, primaryGov, secondaryGov]
const channels = [assethubChannelStatus, primaryGov, secondaryGov]

let sovereigns: status.Sovereign[] = [
{
Expand All @@ -139,7 +145,7 @@ export const monitor = async (): Promise<status.AllMetrics> => {
{
name: "AssetHubAgent",
account: utils.paraIdToAgentId(
context.polkadot.api.bridgeHub.registry,
bridgeHub.registry,
config.ASSET_HUB_PARAID
),
balance: assetHubAgentBalance,
Expand All @@ -157,7 +163,7 @@ export const monitor = async (): Promise<status.AllMetrics> => {

await sendMetrics(allMetrics)

await destroyContext(context)
await context.destroyContext()

return allMetrics
}
25 changes: 14 additions & 11 deletions web/packages/operations/src/transfer_to_ethereum.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import "dotenv/config"
import { Keyring } from "@polkadot/keyring"
import {
contextFactory,
destroyContext,
Context,
environment,
toEthereum,
} from "@snowbridge/api"
Expand All @@ -21,17 +20,21 @@ const transfer = async () => {

const { config } = snowbridgeEnv

const context = await contextFactory({
const parachains: { [paraId: string]: string } = {}
parachains[config.BRIDGE_HUB_PARAID.toString()] =
process.env["BRIDGE_HUB_URL"] ?? config.PARACHAINS[config.BRIDGE_HUB_PARAID.toString()]
parachains[config.ASSET_HUB_PARAID.toString()] =
process.env["ASSET_HUB_URL"] ?? config.PARACHAINS[config.ASSET_HUB_PARAID.toString()]
const context = new Context({
ethereum: {
execution_url: process.env["EXECUTION_NODE_URL"] || config.ETHEREUM_API(process.env.REACT_APP_INFURA_KEY || ""),
beacon_url: process.env["BEACON_NODE_URL"] || config.BEACON_HTTP_API,
},
polkadot: {
url: {
bridgeHub: process.env["BRIDGE_HUB_URL"] || config.BRIDGE_HUB_URL,
assetHub: process.env["ASSET_HUB_URL"] || config.ASSET_HUB_URL,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
assetHubParaId: config.ASSET_HUB_PARAID,
bridgeHubParaId: config.BRIDGE_HUB_PARAID,
parachains: parachains,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
appContracts: {
gateway: config.GATEWAY_CONTRACT,
Expand All @@ -42,10 +45,10 @@ const transfer = async () => {

const ETHEREUM_ACCOUNT = new Wallet(
process.env["ETHEREUM_KEY"] || "0x5e002a1af63fd31f1c25258f3082dc889762664cb8f218d86da85dff8b07b342",
context.ethereum.api
context.ethereum()
)
const ETHEREUM_ACCOUNT_PUBLIC = await ETHEREUM_ACCOUNT.getAddress()
const POLKADOT_ACCOUNT = process.env["SUBSTRATE_KEY"]?polkadot_keyring.addFromUri(process.env["SUBSTRATE_KEY"]):polkadot_keyring.addFromUri("//Ferdie")
const POLKADOT_ACCOUNT = process.env["SUBSTRATE_KEY"] ? polkadot_keyring.addFromUri(process.env["SUBSTRATE_KEY"]) : polkadot_keyring.addFromUri("//Ferdie")

const amount = 2_000_000_000_000n

Expand All @@ -67,7 +70,7 @@ const transfer = async () => {
const result = await toEthereum.send(context, POLKADOT_ACCOUNT, plan)
console.log("Execute:", result)
}
await destroyContext(context)
await context.destroyContext()
}

if (process.argv.length != 3) {
Expand Down
25 changes: 14 additions & 11 deletions web/packages/operations/src/transfer_to_polkadot.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import "dotenv/config"
import { Keyring } from "@polkadot/keyring"
import {
contextFactory,
destroyContext,
Context,
environment,
toPolkadot,
} from "@snowbridge/api"
Expand All @@ -22,17 +21,21 @@ const transfer = async () => {

const { config } = snowbridgeEnv

const context = await contextFactory({
const parachains: { [paraId: string]: string } = {}
parachains[config.BRIDGE_HUB_PARAID.toString()] =
process.env["BRIDGE_HUB_URL"] ?? config.PARACHAINS[config.BRIDGE_HUB_PARAID.toString()]
parachains[config.ASSET_HUB_PARAID.toString()] =
process.env["ASSET_HUB_URL"] ?? config.PARACHAINS[config.ASSET_HUB_PARAID.toString()]
const context = new Context({
ethereum: {
execution_url: process.env["EXECUTION_NODE_URL"] || config.ETHEREUM_API(process.env.REACT_APP_INFURA_KEY || ""),
beacon_url: process.env["BEACON_NODE_URL"] || config.BEACON_HTTP_API,
},
polkadot: {
url: {
bridgeHub: process.env["BRIDGE_HUB_URL"] || config.BRIDGE_HUB_URL,
assetHub: process.env["ASSET_HUB_URL"] || config.ASSET_HUB_URL,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
assetHubParaId: config.ASSET_HUB_PARAID,
bridgeHubParaId: config.BRIDGE_HUB_PARAID,
parachains: parachains,
relaychain: process.env["RELAY_CHAIN_URL"] || config.RELAY_CHAIN_URL,
},
appContracts: {
gateway: config.GATEWAY_CONTRACT,
Expand All @@ -43,9 +46,9 @@ const transfer = async () => {

const ETHEREUM_ACCOUNT = new Wallet(
process.env["ETHEREUM_KEY"] || "0x5e002a1af63fd31f1c25258f3082dc889762664cb8f218d86da85dff8b07b342",
context.ethereum.api
context.ethereum()
)
const POLKADOT_ACCOUNT = process.env["SUBSTRATE_KEY"]?polkadot_keyring.addFromUri(process.env["SUBSTRATE_KEY"]):polkadot_keyring.addFromUri("//Ferdie")
const POLKADOT_ACCOUNT = process.env["SUBSTRATE_KEY"] ? polkadot_keyring.addFromUri(process.env["SUBSTRATE_KEY"]) : polkadot_keyring.addFromUri("//Ferdie")
const POLKADOT_ACCOUNT_PUBLIC = POLKADOT_ACCOUNT.address

const amount = 2_000_000_000_000n
Expand Down Expand Up @@ -81,7 +84,7 @@ const transfer = async () => {
let result = await toPolkadot.send(context, ETHEREUM_ACCOUNT, plan)
console.log("Execute:", result)
}
await destroyContext(context)
await context.destroyContext()
}

if (process.argv.length != 3) {
Expand Down

0 comments on commit f95dc27

Please sign in to comment.