Skip to content

Commit

Permalink
chore: update ts sdk examples
Browse files Browse the repository at this point in the history
  • Loading branch information
o-az committed Aug 11, 2024
1 parent ea2e817 commit 4389cb2
Show file tree
Hide file tree
Showing 20 changed files with 244 additions and 8,976 deletions.
2 changes: 1 addition & 1 deletion typescript-sdk/.env.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
NODE_ENV="development"
DRY_RUN=0 # for ./scripts/publish.ts
HUBBLE_URL="https://noble-pika-27.hasura.app"
HUBBLE_URL=""
Binary file modified typescript-sdk/bun.lockb
Binary file not shown.
15 changes: 7 additions & 8 deletions typescript-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,26 @@
},
"dependencies": {
"@cosmjs/cosmwasm-stargate": "0.32.4",
"@cosmjs/encoding": "^0.32.4",
"@cosmjs/proto-signing": "^0.32.4",
"@cosmjs/stargate": "0.32.4",
"@cosmjs/tendermint-rpc": "0.32.4",
"ofetch": "^1.3.4",
"viem": "^2.18.8"
"viem": "^2.19.3"
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.15.3",
"@cosmjs/tendermint-rpc": "^0.32.4",
"@cosmjs/proto-signing": "^0.32.4",
"@arethetypeswrong/cli": "^0.15.4",
"@cosmjs/amino": "0.32.4",
"@scure/base": "^1.1.7",
"@total-typescript/ts-reset": "^0.5.1",
"@types/bun": "^1.1.6",
"@types/node": "^22.1.0",
"@types/node": "^22.2.0",
"consola": "^3.2.3",
"cosmjs-types": "^0.9.0",
"jsr": "^0.13.1",
"patch-package": "^8.0.0",
"tsx": "^4.16.5",
"tsx": "^4.17.0",
"typescript": "^5.5.4",
"vite-tsconfig-paths": "^4.3.2",
"vite-tsconfig-paths": "^5.0.1",
"vitest": "^2.0.5"
},
"overrides": {
Expand Down
2 changes: 1 addition & 1 deletion typescript-sdk/playground/all.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
# list all the files in the playground directory
for file in playground/*.ts; do
echo "$file"
# bun "$file" --private-key "1bdd5c2105f62c51d72c90d9e5ca6854a94337bcbcbb0b959846b85813d69380" || true
bun "$file" --private-key "1bdd5c2105f62c51d72c90d9e5ca6854a94337bcbcbb0b959846b85813d69380" || true
done
100 changes: 100 additions & 0 deletions typescript-sdk/playground/arbitrum-to-union.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/usr/bin/env bun
import { parseArgs } from "node:util"
import { fallback, http } from "viem"
import { consola } from "scripts/logger"
import { cosmosHttp } from "#transport.ts"
import { raise } from "#utilities/index.ts"
import { arbitrumSepolia } from "viem/chains"
import { privateKeyToAccount } from "viem/accounts"
import { hexStringToUint8Array } from "#convert.ts"
import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing"
import { createCosmosSdkClient, offchainQuery, type TransferAssetsParameters } from "#mod.ts"

/* `bun playground/arbitrum-to-union.ts --private-key "..."` */

const { values } = parseArgs({
args: process.argv.slice(2),
options: {
"private-key": { type: "string" },
"estimate-gas": { type: "boolean", default: false }
}
})

const PRIVATE_KEY = values["private-key"]
if (!PRIVATE_KEY) raise("Private key not found")
const ONLY_ESTIMATE_GAS = values["estimate-gas"] ?? false

const evmAccount = privateKeyToAccount(`0x${PRIVATE_KEY}`)

const cosmosAccount = await DirectSecp256k1Wallet.fromKey(
Uint8Array.from(hexStringToUint8Array(PRIVATE_KEY)),
"union"
)

const LINK_CONTRACT_ADDRESS = "0xb1d4538b4571d411f07960ef2838ce337fe1e80e"

try {
/**
* Calls Hubble, Union's indexer, to grab desired data that's always up-to-date.
*/
const {
data: [arbitrumInfo]
} = await offchainQuery.chain({
chainId: `${arbitrumSepolia.id}`,
includeEndpoints: true,
includeContracts: true
})
if (!arbitrumInfo) raise("Berachain info not found")

const ucsConfiguration = arbitrumInfo.ucs1_configurations
?.filter(config => config.destination_chain.chain_id === "union-testnet-8")
.at(0)
if (!ucsConfiguration) raise("UCS configuration not found")

const { channel_id, contract_address, source_chain, destination_chain } = ucsConfiguration

const client = createCosmosSdkClient({
evm: {
account: evmAccount,
chain: arbitrumSepolia,
transport: fallback([http(arbitrumSepolia?.rpcUrls.default.http.at(0))])
},
cosmos: {
account: cosmosAccount,
gasPrice: { amount: "0.0025", denom: "muno" },
transport: cosmosHttp("https://rpc.testnet-8.union.build")
}
})

const transactionPayload = {
amount: 1n,
approve: true,
sourceChannel: channel_id,
network: arbitrumInfo.rpc_type,
denomAddress: LINK_CONTRACT_ADDRESS,
relayContractAddress: contract_address,
// or `client.cosmos.account.address` if you want to send to yourself
recipient: "union14qemq0vw6y3gc3u3e0aty2e764u4gs5lnxk4rv",
path: [source_chain.chain_id, destination_chain.chain_id]
} satisfies TransferAssetsParameters

const gasEstimationResponse = await client.simulateTransaction(transactionPayload)

consola.info(`Gas cost: ${gasEstimationResponse.data}`)

if (ONLY_ESTIMATE_GAS) process.exit(0)

if (!gasEstimationResponse.success) {
console.info("Transaction simulation failed")
process.exit(1)
}

const transfer = await client.transferAsset(transactionPayload)

consola.info(transfer)
} catch (error) {
const errorMessage = error instanceof Error ? error.message : error
console.error(errorMessage)
} finally {
process.exit(0)
}
8 changes: 3 additions & 5 deletions typescript-sdk/playground/stride-to-berachain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ const cosmosAccount = await DirectSecp256k1Wallet.fromKey(
"stride"
)

const [account] = await cosmosAccount.getAccounts()

try {
/**
* Calls Hubble, Union's indexer, to grab desired data that's always up-to-date.
Expand Down Expand Up @@ -58,11 +60,7 @@ try {
cosmos: {
account: cosmosAccount,
gasPrice: { amount: "0.0025", denom: "ustrd" },
transport: cosmosHttp(
//
// "https://stride.testnet-1.stridenet.co/"
"https://stride-testnet-rpc.polkachu.com/"
)
transport: cosmosHttp("https://stride-testnet-rpc.polkachu.com")
},
evm: {
account: berachainAccount,
Expand Down
100 changes: 100 additions & 0 deletions typescript-sdk/playground/union-to-arbitrum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/usr/bin/env bun
import { parseArgs } from "node:util"
import { fallback, http } from "viem"
import { consola } from "scripts/logger"
import { cosmosHttp } from "#transport.ts"
import { raise } from "#utilities/index.ts"
import { arbitrumSepolia } from "viem/chains"
import { privateKeyToAccount } from "viem/accounts"
import { hexStringToUint8Array } from "#convert.ts"
import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing"
import { createCosmosSdkClient, offchainQuery, type TransferAssetsParameters } from "#mod.ts"

/* `bun playground/union-to-arbitrum.ts --private-key "..."` --estimate-gas */

const { values } = parseArgs({
args: process.argv.slice(2),
options: {
"private-key": { type: "string" },
"estimate-gas": { type: "boolean", default: false }
}
})

const PRIVATE_KEY = values["private-key"]
if (!PRIVATE_KEY) raise("Private key not found")
const ONLY_ESTIMATE_GAS = values["estimate-gas"] ?? false

const evmAccount = privateKeyToAccount(`0x${PRIVATE_KEY}`)

const cosmosAccount = await DirectSecp256k1Wallet.fromKey(
Uint8Array.from(hexStringToUint8Array(PRIVATE_KEY)),
"union"
)

const [account] = await cosmosAccount.getAccounts()

try {
/**
* Calls Hubble, Union's indexer, to grab desired data that's always up-to-date.
*/
const {
data: [unionTestnetInfo]
} = await offchainQuery.chain({
chainId: "union-testnet-8",
includeEndpoints: true,
includeContracts: true
})

if (!unionTestnetInfo) raise("Union testnet info not found")

const ucsConfiguration = unionTestnetInfo.ucs1_configurations
?.filter(config => config.destination_chain.chain_id === `${arbitrumSepolia.id}`)
.at(0)
if (!ucsConfiguration) raise("UCS configuration not found")

const { channel_id, contract_address, source_chain, destination_chain } = ucsConfiguration

const client = createCosmosSdkClient({
evm: {
account: evmAccount,
chain: arbitrumSepolia,
transport: fallback([http(arbitrumSepolia?.rpcUrls.default.http.at(0))])
},
cosmos: {
account: cosmosAccount,
gasPrice: { amount: "0.0025", denom: "muno" },
transport: cosmosHttp("https://rpc.testnet-8.union.build")
}
})

const transactionPayload = {
amount: 1n,
denomAddress: "muno",
sourceChannel: channel_id,
// or `client.evm.account.address` if you want to send to yourself
recipient: evmAccount.address,
network: unionTestnetInfo.rpc_type,
relayContractAddress: contract_address,
path: [source_chain.chain_id, destination_chain.chain_id]
} satisfies TransferAssetsParameters

const gasEstimationResponse = await client.simulateTransaction(transactionPayload)

consola.info(`Gas cost: ${gasEstimationResponse.data}`)

if (ONLY_ESTIMATE_GAS) process.exit(0)

if (!gasEstimationResponse.success) {
console.info("Transaction simulation failed")
process.exit(1)
}

const transfer = await client.transferAsset(transactionPayload)

console.info(transfer)
} catch (error) {
const errorMessage = error instanceof Error ? error.message : error
console.error(errorMessage)
} finally {
process.exit(0)
}
24 changes: 7 additions & 17 deletions typescript-sdk/playground/union-to-berachain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { privateKeyToAccount } from "viem/accounts"
import { hexStringToUint8Array } from "#convert.ts"
import { berachainTestnetbArtio } from "viem/chains"
import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing"
import { createCosmosSdkClient, offchainQuery } from "#mod.ts"
import { createCosmosSdkClient, offchainQuery, type TransferAssetsParameters } from "#mod.ts"

/* `bun playground/union-to-berachain.ts --private-key "..."` --estimate-gas */

Expand Down Expand Up @@ -69,14 +69,11 @@ try {
cosmos: {
account: cosmosAccount,
gasPrice: { amount: "0.0025", denom: "muno" },
transport: cosmosHttp(
// "https://rpc.testnet.bonlulu.uno"
"https://rpc.testnet.seed.poisonphang.com:443"
)
transport: cosmosHttp("https://rpc.testnet-8.union.build")
}
})

const gasEstimationResponse = await client.simulateTransaction({
const transactionPayload = {
amount: 1n,
denomAddress: "muno",
sourceChannel: channel_id,
Expand All @@ -85,7 +82,9 @@ try {
recipient: berachainAccount.address,
relayContractAddress: contract_address,
path: [source_chain.chain_id, destination_chain.chain_id]
})
} satisfies TransferAssetsParameters

const gasEstimationResponse = await client.simulateTransaction(transactionPayload)

consola.box("Union to Berachain gas cost:", gasEstimationResponse)

Expand All @@ -96,16 +95,7 @@ try {
process.exit(1)
}

const transfer = await client.transferAsset({
amount: 1n,
denomAddress: "muno",
sourceChannel: channel_id,
network: unionTestnetInfo.rpc_type,
// or `client.evm.account.address` if you want to send to yourself
recipient: berachainAccount.address,
relayContractAddress: contract_address,
path: [source_chain.chain_id, destination_chain.chain_id]
})
const transfer = await client.transferAsset(transactionPayload)

console.info(transfer)
} catch (error) {
Expand Down
2 changes: 1 addition & 1 deletion typescript-sdk/playground/union-to-union.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ try {
cosmos: {
account: cosmosAccount,
gasPrice: { amount: "0.025", denom: "muno" },
transport: cosmosHttp("https://rpc.testnet.bonlulu.uno")
transport: cosmosHttp("https://rpc.testnet-8.union.build")
}
})

Expand Down
1 change: 1 addition & 0 deletions typescript-sdk/scripts/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ if (chainId) {
}

consola.info(JSON.stringify(data, undefined, 2))
process.exit(0)
}

const data = await offchainQuery.chains({
Expand Down
Loading

0 comments on commit 4389cb2

Please sign in to comment.