evm-note 0.3.1

Sends messages to be executed on other chains over IBC.
Documentation
union_version := v0.24.0
union_cmd := docker run --rm --network host -v /tmp:/tmp -v $(PWD)/cosmwasm/build:/build -v $(PWD)/cosmwasm/.keyring:/keyring ghcr.io/unionlabs/uniond-release:${union_version}

rpc_url := https://union-testnet-rpc.polkachu.com:443
chain_id := union-testnet-8
account_name := $(shell xxd -l16 -ps /dev/urandom)
contract_label := $(shell xxd -l16 -ps /dev/urandom)
contract_salt := $(shell xxd -l16 -ps /dev/urandom)
admin := union18k2uq7srsr8lwrae6zr0qahpn29rsp7tjznqdt
# Sepolia addresses
counter := 0x785B548D3d7064F77A26e479AC7847DBCE0c1B46
string_holder := 0xF67F4E25067b5B1D36EC8269cC8CE955C820680A
sender_counter := 0x313ff8Bf109bcEF105C3183039beFf0527d2cc38


channel_state_init := 1
channel_order_unordered := 1
# Pre-created by Union
channel_connection := connection-5


.PHONY: build deploy

build:
	mkdir -p build && RUSTFLAGS='-C target-cpu=mvp -C opt-level=z' cargo build --target wasm32-unknown-unknown --no-default-features --lib --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort && wasm-opt ../../target/wasm32-unknown-unknown/release/evm_note.wasm -o ../../artifacts/evm_note.wasm -O3 --converge

build-not-nix:
	RUSTFLAGS='-C link-arg=-s' cargo wasm && \
	    cp ../../target/wasm32-unknown-unknown/release/evm_note.wasm ../../artifacts/evm_note.wasm

deploy: build
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm store /build/contract.wasm --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} | \
		jq .txhash | \
		xargs -I{} sh -c "${union_cmd} query event-query-tx-for {} --output json --node ${rpc_url} || ${union_cmd} query tx {} --output json --node ${rpc_url}" | \
		jq -r '.events[] | select(.type == "store_code") | .attributes[] | select(.key == "code_id") | .value' | \
		xargs -I{} ${union_cmd} tx wasm instantiate2 {} '{ "config": { "protocol_timeout": 36000000000000 }}' ${contract_salt} --label ${contract_label} --admin ${admin} --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} | \
		jq .txhash | \
		xargs -I{} sh -c "${union_cmd} query event-query-tx-for {} --output json --node ${rpc_url} || ${union_cmd} query tx {} --output json --node ${rpc_url}" | \
		jq -r '.events[] | select(.type == "instantiate") | .attributes[] | select(.key == "_contract_address") | .value' | \
		xargs -I{} echo "Contract address {}" && \
		rm -rf /keyring/*

upload: build
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm store /build/contract.wasm --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} | \
		jq .txhash | \
		xargs -I{} sh -c "${union_cmd} query event-query-tx-for {} --output json --node ${rpc_url} || ${union_cmd} query tx {} --output json --node ${rpc_url}" | \
		jq -r '.events[] | select(.type == "store_code") | .attributes[] | select(.key == "code_id") | .value'

migrate:
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm migrate ${COSMWASM_CONTRACT_ADDRESS} ${CODE_ID} '{}' --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} | \
		jq .txhash | \
		xargs -I{} sh -c "${union_cmd} query event-query-tx-for {} --output json --node ${rpc_url} || ${union_cmd} query tx {} --output json --node ${rpc_url}" | \
		jq -r '.events[] | select(.type == "store_code") | .attributes[] | select(.key == "code_id") | .value'

interact:
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm execute ${COSMWASM_CONTRACT_ADDRESS} '{"execute":{"msg":{"call":{"to":"${counter}","data":"b49004e9"}},"callback":null,"timeout_seconds":50000000000000}}' --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} -b sync

update-string:
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm execute ${COSMWASM_CONTRACT_ADDRESS} '{"execute":{"msg":{"call":{"to":"${string_holder}","data":"4ed3885e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002b7468697320697320612064656d6f206f662073657474696e67206120737472696e67206f76657220494243000000000000000000000000000000000000000000"}},"callback":null,"timeout_seconds":50000000000000}}' --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} -b sync

count:
	${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
		${union_cmd} tx wasm execute ${COSMWASM_CONTRACT_ADDRESS} '{"execute":{"msg":{"call":{"to":"${sender_counter}","data":"5b34b966"}},"callback":null,"timeout_seconds":50000000000000}}' --gas auto --gas-adjustment 1.5 --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} -b sync

# channel-init:
#     ${union_cmd} keys import-hex ${account_name} ${COSMOS_KEY} --keyring-backend test --keyring-dir /keyring && \
#         ${union_cmd} tx ibc channel open-init ${channel_connection} ${contract_address} --output json -y --keyring-backend test --keyring-dir /keyring --node ${rpc_url} --chain-id ${chain_id} --from ${account_name} | \

check-channel:
	${union_cmd} --node ${rpc_url} query ibc channel channels  --limit 200 --output json | jq -r '.channels[] | select(.counterparty.port_id == "${CONTRACT_ADDRESS}")'

list-channels:
	${union_cmd} --node ${rpc_url} query ibc channel channels --limit 200 --output json | jq -r '.channels[] | select(.version | startswith("ucs01"))'