diff --git a/base/Makefile b/base/Makefile index 6656f48..7563deb 100644 --- a/base/Makefile +++ b/base/Makefile @@ -1,31 +1,36 @@ -include .env -BASE_RPC=https://base-sepolia.cbhq.net -# BASE_RPC=https://mainnet.base.org +# BASE_RPC=https://base-sepolia.cbhq.net +BASE_RPC=https://mainnet.base.org + +ifndef LEDGER_ACCOUNT +override LEDGER_ACCOUNT = 0 +endif # Update values in this section to specify token recipients / token amount #################################################################################################### -# alpha or prod -ENV_NAME=alpha +# mainnet, sepolia_alpha or sepolia_prod +ENV_NAME=mainnet -SOLANA_SOL_RECEIVER = 0x9827993b7b317eb6c74279d49074a13b33a3495a30637c86a7513922014ba424 -USER_SPL_ATA = 0x6621d2d930ef7ada6260d3e0a5679a8fe81fde41262314f2efbf9c4c828550b1 -USER_REMOTE_ERC20_ATA = 0x4394d16902c022f8f87c7667429bc8b2860d033e316b9f9515534505fae314e9 -USER_REMOTE_ETH_ATA = 0x15e9307085f98b2e64eb3dd36b7fbafea201cc2a9fcb36c8c207e99bc7b97f30 +SOLANA_SOL_RECEIVER = 0x6e0019e37547b086395a9a6834f731bab5b631004ac22a6c9102047301e40c77 +USER_SPL_ATA = 0xfc6697ab185712eed628c12e499a3f4c2d4f73ced9dcc6eab8658bea86adb0e7 +USER_REMOTE_ERC20_ATA = 0x7227267f49cac157705e1a5f7ac9f9933c902ae5368cbcc2a12e06d0566f826c +USER_REMOTE_ETH_ATA = 0x3e506b04e88dab39a3687fc5eb822c18f8301fc09cfe945c3394fc6baf9aef25 AMOUNT = 1000000000 #################################################################################################### -BRIDGE = $(shell jq -r '.Bridge' deployments/base_sepolia_$(ENV_NAME).json) -LOCAL_SOL = $(shell jq -r '.WrappedSOL' deployments/base_sepolia_$(ENV_NAME).json) -REMOTE_SOL = $(shell jq -r '.RemoteSOL' deployments/base_sepolia_$(ENV_NAME).json) -LOCAL_SPL = $(shell jq -r '.WrappedSPL' deployments/base_sepolia_$(ENV_NAME).json) -REMOTE_SPL = $(shell jq -r '.RemoteSPL' deployments/base_sepolia_$(ENV_NAME).json) -REMOTE_ERC20 = $(shell jq -r '.RemoteERC20' deployments/base_sepolia_$(ENV_NAME).json) -REMOTE_ETH = $(shell jq -r '.RemoteETH' deployments/base_sepolia_$(ENV_NAME).json) +BRIDGE = $(shell jq -r '.Bridge' deployments/base_$(ENV_NAME).json) +LOCAL_SOL = $(shell jq -r '.WrappedSOL' deployments/base_$(ENV_NAME).json) +REMOTE_SOL = $(shell jq -r '.RemoteSOL' deployments/base_$(ENV_NAME).json) +LOCAL_SPL = $(shell jq -r '.WrappedSPL' deployments/base_$(ENV_NAME).json) +REMOTE_SPL = $(shell jq -r '.RemoteSPL' deployments/base_$(ENV_NAME).json) +REMOTE_ERC20 = $(shell jq -r '.RemoteERC20' deployments/base_$(ENV_NAME).json) +REMOTE_ETH = $(shell jq -r '.RemoteETH' deployments/base_$(ENV_NAME).json) LOCAL_ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE -LOCAL_ERC20 = 0x62C1332822983B8412A6Ffda0fd77cd7d5733Ee9 +LOCAL_ERC20 = 0x4870D23984Dd663005EB8E2b616e4Ef62630183c +# LOCAL_ERC20 = 0x62C1332822983B8412A6Ffda0fd77cd7d5733Ee9 check: @echo $(REMOTE_ERC20) @@ -72,11 +77,11 @@ create-wrapped-sol: .PHONY: create-wrapped-spl create-wrapped-spl: - BRIDGE_ENVIRONMENT=$(ENV_NAME) TOKEN_NAME=WrappedSPL TOKEN_SYMBOL=wSPL REMOTE_TOKEN=$(REMOTE_SPL) forge script CreateTokenScript --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + BRIDGE_ENVIRONMENT=$(ENV_NAME) TOKEN_NAME=WrappedSPL TOKEN_SYMBOL=wSPL REMOTE_TOKEN=$(REMOTE_SPL) forge script CreateTokenScript --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: create-mock-token create-mock-token: - ADMIN=$(shell cast wallet address --account testnet-admin) forge script DeployERC20 --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + ADMIN=0x644e3DedB0e4F83Bfcf8F9992964d240224B74dc forge script DeployERC20 --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: bridge-sol-to-solana bridge-sol-to-solana: @@ -85,7 +90,7 @@ bridge-sol-to-solana: REMOTE_TOKEN=$(REMOTE_SOL) \ TO=$(SOLANA_SOL_RECEIVER) \ AMOUNT=$(AMOUNT) \ - forge script BridgeTokensToSolanaScript --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + forge script BridgeTokensToSolanaScript --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: bridge-spl-to-solana bridge-spl-to-solana: @@ -94,7 +99,7 @@ bridge-spl-to-solana: REMOTE_TOKEN=$(REMOTE_SPL) \ TO=$(USER_SPL_ATA) \ AMOUNT=$(AMOUNT) \ - forge script BridgeTokensToSolanaScript --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + forge script BridgeTokensToSolanaScript --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: bridge-erc20-to-solana bridge-erc20-to-solana: @@ -104,7 +109,7 @@ bridge-erc20-to-solana: TO=$(USER_REMOTE_ERC20_ATA) \ AMOUNT=$(AMOUNT) \ NEEDS_APPROVAL=true \ - forge script BridgeTokensToSolanaScript --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + forge script BridgeTokensToSolanaScript --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: bridge-eth-to-solana bridge-eth-to-solana: @@ -113,7 +118,7 @@ bridge-eth-to-solana: REMOTE_TOKEN=$(REMOTE_ETH) \ TO=$(USER_REMOTE_ETH_ATA) \ AMOUNT=$(AMOUNT) \ - forge script BridgeTokensToSolanaScript --account testnet-admin --rpc-url $(BASE_RPC) --broadcast -vvvv + forge script BridgeTokensToSolanaScript --ledger --hd-paths "m/44'/60'/$(LEDGER_ACCOUNT)'/0/0" --rpc-url $(BASE_RPC) --broadcast -vvvv .PHONY: check-root check-root: diff --git a/scripts/src/commands/sol/bridge/base-to-solana/prove-message.handler.ts b/scripts/src/commands/sol/bridge/base-to-solana/prove-message.handler.ts index 9833018..dd8f03c 100644 --- a/scripts/src/commands/sol/bridge/base-to-solana/prove-message.handler.ts +++ b/scripts/src/commands/sol/bridge/base-to-solana/prove-message.handler.ts @@ -13,7 +13,7 @@ import { type Address, type Hash, } from "viem"; -import { baseSepolia } from "viem/chains"; +import { base, baseSepolia } from "viem/chains"; import { decodeEventLog } from "viem/utils"; import { fetchBridge, getProveMessageInstruction } from "@base/bridge/bridge"; @@ -25,7 +25,7 @@ import { getKeypairSignerFromPath, getIdlConstant, } from "@internal/sol"; -import { CONFIGS, DEPLOY_ENVS } from "@internal/constants"; +import { CONFIGS, DEPLOY_ENVS, type Config } from "@internal/constants"; import { BRIDGE_ABI } from "@internal/base/abi"; export const argsSchema = z.object({ @@ -82,6 +82,7 @@ export async function handleProveMessage(args: Args) { logger.info(`Output Root: ${outputRootAddress}`); const { event, rawProof } = await generateProof( + config, args.transactionHash as Hash, baseBlockNumber, config.base.bridgeContract @@ -138,12 +139,13 @@ export async function handleProveMessage(args: Args) { } async function generateProof( + cfg: Config, transactionHash: Hash, bridgeBaseBlockNumber: bigint, baseBridgeAddress: Address ) { const publicClient = createPublicClient({ - chain: baseSepolia, + chain: cfg.base.chain, transport: http(), }); diff --git a/scripts/src/commands/sol/bridge/solana-to-base/bridge-wrapped-token.command.ts b/scripts/src/commands/sol/bridge/solana-to-base/bridge-wrapped-token.command.ts index 963ec81..0884806 100644 --- a/scripts/src/commands/sol/bridge/solana-to-base/bridge-wrapped-token.command.ts +++ b/scripts/src/commands/sol/bridge/solana-to-base/bridge-wrapped-token.command.ts @@ -84,7 +84,7 @@ async function collectInteractiveOptions( opts.amount = await getOrPromptDecimal( opts.amount, "Enter amount to bridge (in token units)", - 0.001 + 0.000000001 ); opts.payerKp = await getOrPromptFilePath( diff --git a/scripts/src/internal/constants.ts b/scripts/src/internal/constants.ts index aa3cf93..f4745d1 100644 --- a/scripts/src/internal/constants.ts +++ b/scripts/src/internal/constants.ts @@ -151,9 +151,9 @@ export const CONFIGS = { ), // SPLs - spl: "" as Address, - wEth: "" as Address, - wErc20: "" as Address, + spl: address("9YEGpFKedz7i8hMB7gDWQGuAfCRHUKBMCbTjnMi8vtUc"), + wEth: address("2ZCFyWM6WthDLBo41zJsMQmjJ4Kvb6yumvrbLpVh9LMX"), + wErc20: address("7qxnUBBmW8oiuz9skKkGQFvY1qRUP6zF3emA5bneyGaJ"), }, base: { chain: base, @@ -163,9 +163,9 @@ export const CONFIGS = { counterContract: "0x", // ERC20s - erc20: "0x", + erc20: "0x4870D23984Dd663005EB8E2b616e4Ef62630183c", wSol: "0x311935Cd80B76769bF2ecC9D8Ab7635b2139cf82", - wSpl: "0x", + wSpl: "0xcd9E97cf45BC53acC35A5aFb70458c47c214E7C7", }, }, } as const satisfies Record;