Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
module github.com/datachainlab/cosmos-ethereum-ibc-lcp

go 1.22.2
go 1.23.0

replace (
github.com/datachainlab/ethereum-ibc-relay-prover v0.3.14 => github.com/dai1975/ethereum-ibc-relay-prover v0.3.11-0.20260319023513-9da90ec15947
github.com/datachainlab/lcp-go v0.2.23 => github.com/datachainlab/lcp-go v0.2.24-0.20260319044325-86c77ca6172a
)

require (
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.18
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.21
github.com/datachainlab/ethereum-ibc-relay-prover v0.3.14
github.com/datachainlab/ibc-hd-signer v0.1.2
github.com/datachainlab/lcp-go v0.2.23
github.com/hyperledger-labs/yui-relayer v0.5.19
github.com/datachainlab/lcp-go v0.2.24-0.20260319044325-86c77ca6172a
github.com/hyperledger-labs/yui-relayer v0.5.20
)

require (
Expand Down Expand Up @@ -249,7 +254,7 @@ require (
golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect
golang.org/x/net v0.35.0 // indirect
golang.org/x/oauth2 v0.26.0 // indirect
golang.org/x/sync v0.11.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/term v0.29.0 // indirect
golang.org/x/text v0.22.0 // indirect
Expand Down
24 changes: 14 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -421,18 +421,20 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U=
github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
github.com/dai1975/ethereum-ibc-relay-prover v0.3.11-0.20260319023513-9da90ec15947 h1:tdqC4VeuvGpuWtL8JN1CzY8UPYXJoIwJjz03HNBXyn8=
github.com/dai1975/ethereum-ibc-relay-prover v0.3.11-0.20260319023513-9da90ec15947/go.mod h1:gZ+BP9TA3zvc8rEJK82F0CfM7R4GfLBf3yxWwd14xtQ=
github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0=
github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.18 h1:bfHPAZv7BXCWjlnhiWuBifhA65C81x23GtSjsyZINss=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.18/go.mod h1:Hqfxa2dcbK7P6yheoVwu09q8rN1kiC1HxSL0S9K4dDU=
github.com/datachainlab/ethereum-ibc-relay-prover v0.3.14 h1:gDIR/sANkDpiM+gNre2WXolrBkkBhQRJCEORmAJLB5M=
github.com/datachainlab/ethereum-ibc-relay-prover v0.3.14/go.mod h1:kuznUQ69vzXBE/H43m56v6YwgEqXGKhqUy3PeyQp9FY=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.21 h1:vbTDtACccXprQAjpYrFWwdROyO5nS+lmnwPUt7/ZN/s=
github.com/datachainlab/ethereum-ibc-relay-chain v0.3.21/go.mod h1:GT1LRgak5RWkyvyzgptmcWgxD3lz3bD0pI4736vROew=
github.com/datachainlab/go-risc0-verifier v0.1.3 h1:iEIVqGzLK1+AdZCfNqSxXJhMLDg7lEzbAfOZ8b/stRM=
github.com/datachainlab/go-risc0-verifier v0.1.3/go.mod h1:O+uLSIdkN9rvqDXuZCnAOSPf/IT5SVjK/PxxJP3sPPU=
github.com/datachainlab/ibc-hd-signer v0.1.2 h1:fWAYjMBVyM390OllX/l58mZYA7we0spEBFLYKWYTwfw=
github.com/datachainlab/ibc-hd-signer v0.1.2/go.mod h1:nwH0Z3TK/7jbu/oInGGWGRimQ+LCn6yvDyjMZrw9mR4=
github.com/datachainlab/lcp-go v0.2.23 h1:1cAlDjP2TBcbeHscRGO300FqDlNlm/tlRiaM7iabUpU=
github.com/datachainlab/lcp-go v0.2.23/go.mod h1:mz3W29NtNskPk1zVXde5xcurWmG1U0Wiucj4imXkN3g=
github.com/datachainlab/ibc-mock-client v0.4.3 h1:vFl8P4lx0aAgvnZIMfmwhDcj8atps1aP+sthzKdVNo8=
github.com/datachainlab/ibc-mock-client v0.4.3/go.mod h1:Fn37FzeevLp5gmla4TSoDY56Jm2tBcqz+p0lIyRCOsg=
github.com/datachainlab/lcp-go v0.2.24-0.20260319044325-86c77ca6172a h1:MxD/6vhSvjsVXUoYqSTTydSI2tv2IMCL9RvIlkJnE2w=
github.com/datachainlab/lcp-go v0.2.24-0.20260319044325-86c77ca6172a/go.mod h1:mz3W29NtNskPk1zVXde5xcurWmG1U0Wiucj4imXkN3g=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down Expand Up @@ -803,8 +805,8 @@ github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXM
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
github.com/hyperledger-labs/yui-relayer v0.5.19 h1:PuEOXXGjq9tjzzdOTYtA1KAE0hETAsMd3a8YMkMjZuE=
github.com/hyperledger-labs/yui-relayer v0.5.19/go.mod h1:tGNMIE1y4cGNyRRKhR9rfBtCGLVjgejf3EIXouvdDQc=
github.com/hyperledger-labs/yui-relayer v0.5.20 h1:dUpK7F5/7A5401WV8GH1m67iKBemm32gP9d5pBFVA78=
github.com/hyperledger-labs/yui-relayer v0.5.20/go.mod h1:CVjTRJI3RW452i48XGyOQ9/mtcwqd/lo8CwZrPI5wDw=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
Expand Down Expand Up @@ -1304,6 +1306,8 @@ go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
Expand Down Expand Up @@ -1473,8 +1477,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand Down
1 change: 1 addition & 0 deletions tests/e2e/cases/tm2eth/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ elc-updater-stop:
test:
RLY_BIN=$(RLY_BIN) ./scripts/test-tx
RLY_BIN=$(RLY_BIN) ./scripts/test-service
RLY_BIN=$(RLY_BIN) ./scripts/test-tx-timeout

.PHONY: restore
restore:
Expand Down
66 changes: 66 additions & 0 deletions tests/e2e/cases/tm2eth/scripts/test-tx-timeout
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash
set -eux

RLY="${RLY_BIN} --debug"

# XXX set proper value
PATH_NAME=ibc01
TX_INTERVAL=120
TM_USER_ADDRESS=$(${RLY} tendermint keys show ibc0 testkey)

retry() {
local -r -i max_attempts="$1"; shift
local -r cmd="$@"
local -i attempt_num=1

until $cmd
do
if (( attempt_num == max_attempts ))
then
echo "Attempt $attempt_num failed and there are no more attempts left!"
return 1
else
echo "Attempt $attempt_num failed! Trying again in $attempt_num seconds..."
sleep $(( attempt_num++ ))
fi
done
}

TMPFILE=/tmp/tm2eth-test-tx-timeout.log

echo "!!! ibc0 -> ibc1 !!!"

docker exec tendermint-chain sh -c "simd --home /root/data/ibc0 tx --keyring-backend=test --from ${TM_USER_ADDRESS} --chain-id ibc0 mockapp send --packet-timeout-height 0-1 mockapp channel-0 'mock packet data' --yes"
sleep ${TX_INTERVAL}
retry 10 ${RLY} tx relay ${PATH_NAME} 2>&1 | tee $TMPFILE
if grep -i 'Error' $TMPFILE; then exit 1; fi
grep -e 'core\.(\*RelayMsgs)\.Send' $TMPFILE | grep ProofUnreceived


echo "!!! ibc1 -> ibc0 !!!"
RPC_ADDRESS_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.rpc_addr')
PORT_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."port-id"')
CHANNEL_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."channel-id"')
MNEMONIC_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.signer.mnemonic')
BOB_INDEX=2
ADDRESSES_DIR_B=$(dirname $0)/../../../chains/ethereum/contracts/addresses
MOCKAPP_CONTRACT_B=`cat ${ADDRESSES_DIR_B}/AppV1`

cast send \
--rpc-url $RPC_ADDRESS_B \
--mnemonic "$MNEMONIC_B" \
--mnemonic-index ${BOB_INDEX} \
$MOCKAPP_CONTRACT_B \
'sendPacket(bytes,string,string,(uint64,uint64),uint64)' \
$(cast from-utf8 'mock packet data') \
$PORT_B \
$CHANNEL_B \
'(0,100000)' \
$(date -d 1sec +%s%N)
sleep ${TX_INTERVAL}
sleep ${TX_INTERVAL}
cast block-number --rpc-url $RPC_ADDRESS_B
${RLY} tx relay $PATH_NAME 2>&1 | tee $TMPFILE

if grep -i 'Error' $TMPFILE; then exit 1; fi
grep -e 'core\.(\*RelayMsgs)\.Send' $TMPFILE | grep ProofUnreceived
1 change: 1 addition & 0 deletions tests/e2e/chains/ethereum/contracts/contracts/App.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ contract AppV1 is IBCContractUpgradableUUPSMockApp {

function __AppV1_init(string memory initialVersion) public initializer {
__IBCContractUpgradableUUPSMockApp_init(initialVersion);
allowCloseChannel(true);
}
}

Expand Down
Loading