Tag:
Branch:
Tree:
3449fc76b1
0.2.4
0.4.1
0.5.0
0.5.1
0.5.2
0.5.3
06-19-add_ci-default-test
07-01-feat_cli_Add_hyperlane_warp_apply
1.0.0-beta8
3.1.4
CODEOWNERS-ascii
Defcon023/mock_mailbox_size_check
add-delegate
aggregation-hook-improvements
ameten/non-native-token
ameten/scraper-sealevel-e2e
ameten/sealevel-delivery-sequence
ancient8-eth-verify
asaj/addresses
asaj/agent-dev-env
asaj/announce
asaj/block-skew
asaj/check-middlewares
asaj/check-ownables
asaj/ci
asaj/ci-try
asaj/count-lag
asaj/debug
asaj/debug-ci
asaj/deploy
asaj/deploy-ergonomics
asaj/e2e-fast
asaj/enroll
asaj/fern
asaj/gas-profiling
asaj/hardhat
asaj/hardhat-plugin
asaj/hardhat-task
asaj/hooks
asaj/image
asaj/inbox-checkpoints
asaj/index
asaj/kathy-7
asaj/kathy-9
asaj/key-funder
asaj/lag-count
asaj/ll
asaj/metadata-debug
asaj/new-update
asaj/ownable-replicas-dev
asaj/ownership
asaj/ownerships
asaj/ownersss
asaj/pd
asaj/pi-deployer
asaj/poc
asaj/prettier
asaj/readonly
asaj/relayer-checkpoints
asaj/relayer-isms
asaj/router-govern
asaj/schnorr
asaj/schnorr-2
asaj/sdk-proposal
asaj/sealevel-inclusive
asaj/serialize
asaj/solc
asaj/sovereign
asaj/suffix
asaj/upgrade-dev-scripts
asaj/upgrade-rotate-updater
asaj/upgrades
asaj/v2-create2
asaj/v2-exploration
asaj/v2-helm
asaj/v2-main
asaj/workflows
asaj/zkevm
audit-coverage
audit-q3-2024
avious00-link-to-loglevel
avious00-typo-patch
aws-signer-retry
benchmark-multisig
buddies-main-deployment
build-ccip-server
changeset-release/main
changeset-release/release-test
checkInflight
ci-by-path
cli-2.0-beta
cli-figlet
cli-patches
core-msg-encoding
cosmos-gas-prices
cover-mailbox-100%
coverage-flake
create2-deploy
dan/aggregation-ism-rc
dan/bump-relayer-image
dan/configurable-fallback-deprio
dan/cw-types-reuse
dan/debug-cosmos-rpc
dan/e2e-fixes
dan/eip1967
dan/fast-relayer-startup-e2e
dan/gas-escalator-middleware
dan/index-range-refactor
dan/injective-e2e
dan/injective-testnet-agents
dan/keypair-cosmrs
dan/local-svm-setup
dan/lower-txid-channel-size
dan/merkle-tree-hook-indexer
dan/non-evm-cli-warp-deploy
dan/osmosis-test
dan/processed-commitment-sealevel
dan/rc-relayer-profiling
dan/relayer-images-bump
dan/relayer-migrations
dan/retry-cosmos-e2e
dan/rocksdb-config
dan/rust-caching
dan/stage-agent-fixes
dan/testnet-aggregation-ism
dan/tmp-branch
dan/token-config-schema
dan/v3-e2e
dan/v3-sealevel-e2e
dan/va-urls
dan/zksync-testing
danil/validator_deployment_latest_image
deploy-create2-factory-moonbeam
deploy-ica-proxied
deploy-middlewares-1.3.1
deploy-wait
deployer-options
docs-simplifications
drew/manual_processing_config
dynamic-cli-version
eigenlayer
erc165
fallback-routing-hook-deployer
feat/hl-starknet-29-oct
feat/v3-cosmos
flexible-voting-vault
github-pr-stats
hook-agent-testing
hook-ism-contract-READMEs
injective-ism-fix
interchain-call-tests
kunal/arb-l2-hook-contracts
kunal/arb-selfrelay
kunal/arb-sepolia-deployment
kunal/ascii-art
kunal/avs-contract-deployment
kunal/avs-temp
kunal/avs-update-reward
kunal/avs-validator-check-status
kunal/bump-solana-prio-fee-further
kunal/check-msg-value-send-auth-hooks
kunal/ci-checker-warp-fix
kunal/cli-register-ci
kunal/default-hook
kunal/ica-deployment
kunal/ica-govern-testing
kunal/igp-hook
kunal/ism-factory-warp-deploy
kunal/l2-native-bridge-hook
kunal/latest-height-merkle-root-index
kunal/manta-gas-overpayment-fix
kunal/messageIdAuth-replay-protection
kunal/native-arbitrum-hook
kunal/native-gnosis-hook
kunal/native-polygon-hook
kunal/null-metadata
kunal/op-stack-hook-custom-test
kunal/orphan-format-igp-async
kunal/ownable-caching-hook
kunal/rc-kathy-ism-config
kunal/relayer-metadata-null
kunal/revert-multisig-interface
kunal/revert-weighted-multisig-changes
kunal/rez-avs
kunal/special-case-plume-testnet
kunal/stake-weighted-ism
kunal/update-gasOracle-cron-job
kunal/update-gasOracle-deployer
kunal/v3-pr-comments-fixes
kunal/validator-el-sig-posting
kunal/validator-endpoints
kunal/value-router
kunal/verifiedMessageId-param
kunal/verify-ica
kunal/warp-route-checker
kunal/weighted-ism-relayer-change
light-optimistic
lint.only
liquidity-layer-v2
ltyu/core-apply-defaultIsm
ltyu/hook-config
ltyu/sp1-lightclient-ism
ltyu/warp-apply-hook
ltyu/warp-ism-config
ltyu/zerion-configs
mailbox-branch
mailbox-chainid
main
main-auditv2-merge
main-node-ci
main-to-v3
mattie/512-bit-txoutcomes
mattie/auto-update-prs
mattie/automated-vendoring
mattie/caching-requests
mattie/cosmos-stubs
mattie/finality-blocks-config
mattie/fix-kathy
mattie/inclusive-block-range
mattie/infra-drift-fix
mattie/large-runners
mattie/optional-agent-configuration
mattie/reclaim-funds-from-old-relayer-keys
mattie/relayer-debugging
mattie/sealevel-better-patching
mattie/sealevel-dependency-conflicts-fix
mattie/sealevel/dependencies-part-2
mattie/serejke-fix-1924
mattie/typescript-provider-timeouts
mattie/zkevm-context
merkle-tree-hook-indexer
merkle-vs-mapping
mo/check-avs-cli-command
mo/infra-warp-config-generation
mo/key-funder-debug
mo/keyfunder-707db4a27
mo/non-aw-owned-proxy-checks
mo/verify-proxy-contracts
mo/warp-balance-monitor-validator-names
monitor-war-routes-general
multi-message-relay
multisig-init
nam-rebase
nambrot-patch-1
nambrot/add-gcp-address-to-allconfigs
nambrot/arc-test
nambrot/callforwarder
nambrot/celo-safe
nambrot/chain-connection-to-provider
nambrot/checkpointer-local
nambrot/ci-build
nambrot/circle-relayer
nambrot/core-deploy-fixes
nambrot/debug-fork-ci
nambrot/deploy-aggregation-relayer
nambrot/deploy-helloworld
nambrot/deploy-igp
nambrot/deploy-test-recipient
nambrot/deployment-tooling
nambrot/dev-community
nambrot/dockerignore
nambrot/double-update-script
nambrot/extra-partial-config
nambrot/failed-refactor
nambrot/fix-contract-metrics-avalanche
nambrot/fix-contracts-metrics
nambrot/fix-polygon-updater-old-root
nambrot/foundry-in-ica
nambrot/fundraise-xapp
nambrot/generate-message-with-proof
nambrot/hyp7683
nambrot/igp-deployment-woes
nambrot/in-over-or
nambrot/infra-multiprovider
nambrot/kurtosis-cli
nambrot/loop-with-sleep
nambrot/manual-processing-deploy
nambrot/mintable-token-standard
nambrot/nam-run-feedback
nambrot/optics-ts-interface
nambrot/oracle-updates
nambrot/owner-without-ism
nambrot/parallelize-sol-testing
nambrot/polygon-updater-rotation
nambrot/processor-s3-pusher
nambrot/publish-script
nambrot/relay-specific-message
nambrot/remove-dependabot
nambrot/rename-abacus-solidity-typechain
nambrot/rename-network-to-chain
nambrot/repro-2-2-run-locally
nambrot/resolve-lock
nambrot/rotate-mainnet-etherscan
nambrot/rpc-validator
nambrot/scroll-overrides
nambrot/sdk-0.2.4
nambrot/selective-index-on
nambrot/speed-up-events
nambrot/staging-community-provider
nambrot/static-igp
nambrot/superchain-ism
nambrot/trace-level-s3
nambrot/transfer-owner-no-op
nambrot/try-gas-payment-test-abstraction
nambrot/update-kathy
nambrot/update-optics-provider
nambrot/updater-pause
nambrot/verification-fies
nambrot/watcher-test
nambrot/yo-deploy
nexus-neutron-validators
noah/agg-failure
noah/co
noah/dr-fix
noah/move-safe
noah/no-warp
noah/node-expwarn-cli
noah/prompt
noah/root
noah/warp-ica
noah/zod-2
op-interceptor-deployer
op-stack-hook-deployment
opt-mailbox-delivered
optics-v2
parameterize-infra-paths
pb/chore-test-conditions
pb/duplicate-chainid-support
pb/enable-hyperliquidevmtestnet
pb/sprint32-mainnet
pb/stride-va
pb/submitter-types
pb/test-e2e-breaks
pb/turbo
pb/verify-viction
pb/zerion
pb/zksync
pjson-pruning
pr-analytics
processor-fixes
public-main
rc-validators
rebalance-collateral
retry-signer
reverse-ica
revert-964-hacken-critical-1
rossy/cli-version-fix
rossy/codespell-changeset
rossy/multiprovider-no-generic
router-not-upgradeable
router<0.8
routing-interceptor
rpc-fork-cache
schema-fixes
sdk-release
snapshot-igp-config
storage-ism
submodules-1.0.0
submodules-path-2
suppress-coverage-patch
symbiotic
test-recipient-ism-config
test-sol-fixes
test-sol-speed
testnet-dtm
testnet4
testnet4-deployment
tmp-keyfunder
token-testing-forge
transfer-and-call
transient-current-message-id
trevor/1.4.2-beta69
trevor/add-injective-back
trevor/addtl-igp-cmds
trevor/arbitrum-gas-amounts
trevor/bridge-app-interchain-gas-contracts
trevor/conditional-middlewares-suck
trevor/cosmos-cleanup-2
trevor/dao-ism
trevor/debug-verbosity
trevor/debugging-sept-21
trevor/decimal-consistency-checker
trevor/dependency-attempts
trevor/deploy-relayer-funder-multi-context
trevor/deploy-testrecipient-rollup-testnets
trevor/deploy-v2
trevor/deploy-v2-relayer-feb-1-2024
trevor/deploying-ancient8
trevor/deploying-to-zbc-testnet
trevor/disable-rarichain-rpc
trevor/eclipsedevnet-deploy
trevor/env-var-tip
trevor/fallback-igp
trevor/fastusd-infra-checking
trevor/fix-announcement-issues
trevor/fix-e2e-mar-31
trevor/fix-feat/deploy-new-rc
trevor/fix-inaccurate-svm-comment
trevor/fix-polygon-updater-old-root
trevor/fix-processor-priority
trevor/force-readonly-collateral-mints
trevor/gelato-mainnet-abacus
trevor/gelato-testnet2
trevor/grpc-refactor
trevor/hacky-nautilus-indexing-fix-attempt
trevor/helloworld-check-mostly-works
trevor/helloworld-program
trevor/helloworld-program-and-tooling-not-working
trevor/higher-sol-fees
trevor/key-funder-fallbackprovider
trevor/last-agent-release
trevor/legacy-ethers
trevor/local-igp-for-playing-with
trevor/lz-reorg-periods
trevor/mainnet-rc-quorumprovider
trevor/merge-main-jul-6
trevor/merge-v3
trevor/merkle-indexing-as-message
trevor/native-warp-route-allow-donate
trevor/new-featv3-cosmos
trevor/nits-and-no-invariant
trevor/no-address-filter
trevor/no-eip-1559
trevor/on-chain-fee-quoting-calculator
trevor/opentelemetry
trevor/opentelemetry-stackdriver
trevor/oracle-updates-mode-blast-try-batching
trevor/parallel-pod-management-policy
trevor/play-with-ci
trevor/playing-with-validator-announce
trevor/port-over-addtl-igp-cmds
trevor/proteus-from-last-agent-release
trevor/proteus-from-last-agent-release-1
trevor/quick-scroll-moonbeam-fix
trevor/read-txs-nov-8
trevor/relayer-use-gelato-scaffolding
trevor/sealevel-igp
trevor/sealevel-igp-quotes
trevor/sei-fix
trevor/send-unblocking-tx
trevor/some-svm-improvements
trevor/suggestion
trevor/svm-collateral-readonly-mint
trevor/test-dispatch-return-value
trevor/try-ethers-quorum-estimate-gas-fix
trevor/try-fix-e2e
trevor/upgrade-registry-update
trevor/use-gas-estimate-components-in-arb
trevor/use-secret-rpc-urls-awk-branch-setup
trevor/wip-transfer-test
trusted-relayer-ism
typechain11
upgradable-warp-routes-rossy
upgrades-v2
v1
v2
v2-2
v2-create2
v3
v3-agents
v3-agents-feedback
v3-agents-rebase
v3-review
validator-correctness
verify-igp
verify-mainnet
verify-new-testnet2
warp-deploy-ism-config
warp-route-v3
webbhorn/gelato-PR-submitter-prep
webbhorn/gelato-tip
webbhorn/gelato-tip-wip
webbhorn/gelato/demo-cli
webbhorn/gelato/op
xeno/better-chain-selection-for-single-chain
xeno/ica-router-management
xeno/ica-router-management-update
xeno/update-ism-derivation-for-ica-support
yarn-4.1.0
yorhodes-patch-1
yorhodes/427
yorhodes/429
yorhodes/450
yorhodes/479
yorhodes/inbox-enrollments
zksync
0.2.1
0.2.4
0.3.1
1.0.0-beta5
2023-06-08
@hyperlane-xyz/cli@3.10.0
@hyperlane-xyz/cli@3.11.0
@hyperlane-xyz/cli@3.11.1
@hyperlane-xyz/cli@3.13.0
@hyperlane-xyz/cli@3.13.0-next.0
@hyperlane-xyz/cli@3.14.0
@hyperlane-xyz/cli@3.15.0
@hyperlane-xyz/cli@3.15.1
@hyperlane-xyz/cli@3.16.0
@hyperlane-xyz/cli@3.2.0
@hyperlane-xyz/cli@3.3.0
@hyperlane-xyz/cli@3.4.0
@hyperlane-xyz/cli@3.5.0
@hyperlane-xyz/cli@3.5.1
@hyperlane-xyz/cli@3.6.0
@hyperlane-xyz/cli@3.6.1
@hyperlane-xyz/cli@3.6.2
@hyperlane-xyz/cli@3.7.0
@hyperlane-xyz/cli@3.8.0
@hyperlane-xyz/cli@3.8.1
@hyperlane-xyz/cli@3.8.2
@hyperlane-xyz/cli@3.9.0
@hyperlane-xyz/cli@4.0.0
@hyperlane-xyz/cli@4.0.0-alpha.0
@hyperlane-xyz/cli@4.0.0-alpha.1
@hyperlane-xyz/cli@4.0.0-alpha.2
@hyperlane-xyz/cli@4.0.0-beta
@hyperlane-xyz/cli@4.1.0
@hyperlane-xyz/cli@5.1.0
@hyperlane-xyz/cli@5.1.1
@hyperlane-xyz/cli@5.1.2
@hyperlane-xyz/cli@5.2.0
@hyperlane-xyz/cli@5.2.1
@hyperlane-xyz/cli@5.2.1-beta.0
@hyperlane-xyz/cli@5.3.0
@hyperlane-xyz/cli@5.4.0
@hyperlane-xyz/cli@5.5.0
@hyperlane-xyz/cli@5.6.0
@hyperlane-xyz/cli@5.6.1
@hyperlane-xyz/cli@5.6.2
@hyperlane-xyz/cli@5.7.0
@hyperlane-xyz/cli@6.0.0
@hyperlane-xyz/cli@7.0.0
@hyperlane-xyz/cli@7.1.0
@hyperlane-xyz/cli@7.2.0
@hyperlane-xyz/core@3.1.10
@hyperlane-xyz/core@3.10.0
@hyperlane-xyz/core@3.11.0
@hyperlane-xyz/core@3.11.1
@hyperlane-xyz/core@3.12.0
@hyperlane-xyz/core@3.13.0
@hyperlane-xyz/core@3.13.0-next.0
@hyperlane-xyz/core@3.14.0
@hyperlane-xyz/core@3.15.0
@hyperlane-xyz/core@3.15.1
@hyperlane-xyz/core@3.16.0
@hyperlane-xyz/core@3.2.0
@hyperlane-xyz/core@3.3.0
@hyperlane-xyz/core@3.4.0
@hyperlane-xyz/core@3.5.0
@hyperlane-xyz/core@3.5.1
@hyperlane-xyz/core@3.6.0
@hyperlane-xyz/core@3.6.1
@hyperlane-xyz/core@3.6.2
@hyperlane-xyz/core@3.7.0
@hyperlane-xyz/core@3.8.0
@hyperlane-xyz/core@3.8.1
@hyperlane-xyz/core@3.8.2
@hyperlane-xyz/core@3.9.0
@hyperlane-xyz/core@4.0.0
@hyperlane-xyz/core@4.0.0-alpha.0
@hyperlane-xyz/core@4.0.0-alpha.1
@hyperlane-xyz/core@4.0.0-alpha.2
@hyperlane-xyz/core@4.0.0-beta
@hyperlane-xyz/core@4.1.0
@hyperlane-xyz/core@5.1.0
@hyperlane-xyz/core@5.1.1
@hyperlane-xyz/core@5.1.2
@hyperlane-xyz/core@5.2.0
@hyperlane-xyz/core@5.2.1
@hyperlane-xyz/core@5.2.1-beta.0
@hyperlane-xyz/core@5.3.0
@hyperlane-xyz/core@5.4.0
@hyperlane-xyz/core@5.4.1
@hyperlane-xyz/core@5.5.0
@hyperlane-xyz/core@5.6.0
@hyperlane-xyz/core@5.6.1
@hyperlane-xyz/core@5.7.0
@hyperlane-xyz/core@5.7.1
@hyperlane-xyz/core@5.8.0
@hyperlane-xyz/core@5.8.1
@hyperlane-xyz/core@5.8.2
@hyperlane-xyz/github-proxy@5.2.0
@hyperlane-xyz/github-proxy@5.2.1-beta.0
@hyperlane-xyz/helloworld@3.1.10
@hyperlane-xyz/helloworld@3.10.0
@hyperlane-xyz/helloworld@3.11.0
@hyperlane-xyz/helloworld@3.11.1
@hyperlane-xyz/helloworld@3.12.0
@hyperlane-xyz/helloworld@3.13.0
@hyperlane-xyz/helloworld@3.13.0-next.0
@hyperlane-xyz/helloworld@3.14.0
@hyperlane-xyz/helloworld@3.15.0
@hyperlane-xyz/helloworld@3.15.1
@hyperlane-xyz/helloworld@3.16.0
@hyperlane-xyz/helloworld@3.2.0
@hyperlane-xyz/helloworld@3.3.0
@hyperlane-xyz/helloworld@3.4.0
@hyperlane-xyz/helloworld@3.5.0
@hyperlane-xyz/helloworld@3.5.1
@hyperlane-xyz/helloworld@3.6.0
@hyperlane-xyz/helloworld@3.6.1
@hyperlane-xyz/helloworld@3.6.2
@hyperlane-xyz/helloworld@3.7.0
@hyperlane-xyz/helloworld@3.8.0
@hyperlane-xyz/helloworld@3.8.1
@hyperlane-xyz/helloworld@3.8.2
@hyperlane-xyz/helloworld@3.9.0
@hyperlane-xyz/helloworld@4.0.0
@hyperlane-xyz/helloworld@4.0.0-alpha.0
@hyperlane-xyz/helloworld@4.0.0-alpha.1
@hyperlane-xyz/helloworld@4.0.0-alpha.2
@hyperlane-xyz/helloworld@4.0.0-beta
@hyperlane-xyz/helloworld@4.1.0
@hyperlane-xyz/helloworld@5.1.0
@hyperlane-xyz/helloworld@5.1.1
@hyperlane-xyz/helloworld@5.1.2
@hyperlane-xyz/helloworld@5.2.0
@hyperlane-xyz/helloworld@5.2.1
@hyperlane-xyz/helloworld@5.2.1-beta.0
@hyperlane-xyz/helloworld@5.3.0
@hyperlane-xyz/helloworld@5.4.0
@hyperlane-xyz/helloworld@5.5.0
@hyperlane-xyz/helloworld@5.6.0
@hyperlane-xyz/helloworld@5.6.1
@hyperlane-xyz/helloworld@5.6.2
@hyperlane-xyz/helloworld@5.7.0
@hyperlane-xyz/helloworld@6.0.0
@hyperlane-xyz/helloworld@7.0.0
@hyperlane-xyz/helloworld@7.1.0
@hyperlane-xyz/helloworld@7.2.0
@hyperlane-xyz/sdk@3.1.10
@hyperlane-xyz/sdk@3.10.0
@hyperlane-xyz/sdk@3.11.0
@hyperlane-xyz/sdk@3.11.1
@hyperlane-xyz/sdk@3.12.0
@hyperlane-xyz/sdk@3.13.0
@hyperlane-xyz/sdk@3.13.0-next.0
@hyperlane-xyz/sdk@3.14.0
@hyperlane-xyz/sdk@3.15.0
@hyperlane-xyz/sdk@3.15.1
@hyperlane-xyz/sdk@3.16.0
@hyperlane-xyz/sdk@3.2.0
@hyperlane-xyz/sdk@3.3.0
@hyperlane-xyz/sdk@3.4.0
@hyperlane-xyz/sdk@3.5.0
@hyperlane-xyz/sdk@3.5.1
@hyperlane-xyz/sdk@3.6.0
@hyperlane-xyz/sdk@3.6.1
@hyperlane-xyz/sdk@3.6.2
@hyperlane-xyz/sdk@3.7.0
@hyperlane-xyz/sdk@3.8.0
@hyperlane-xyz/sdk@3.8.1
@hyperlane-xyz/sdk@3.8.2
@hyperlane-xyz/sdk@3.9.0
@hyperlane-xyz/sdk@4.0.0
@hyperlane-xyz/sdk@4.0.0-alpha.0
@hyperlane-xyz/sdk@4.0.0-alpha.1
@hyperlane-xyz/sdk@4.0.0-alpha.2
@hyperlane-xyz/sdk@4.0.0-beta
@hyperlane-xyz/sdk@4.1.0
@hyperlane-xyz/sdk@5.1.0
@hyperlane-xyz/sdk@5.1.1
@hyperlane-xyz/sdk@5.1.2
@hyperlane-xyz/sdk@5.2.0
@hyperlane-xyz/sdk@5.2.1
@hyperlane-xyz/sdk@5.2.1-beta.0
@hyperlane-xyz/sdk@5.3.0
@hyperlane-xyz/sdk@5.4.0
@hyperlane-xyz/sdk@5.5.0
@hyperlane-xyz/sdk@5.6.0
@hyperlane-xyz/sdk@5.6.1
@hyperlane-xyz/sdk@5.6.2
@hyperlane-xyz/sdk@5.7.0
@hyperlane-xyz/sdk@6.0.0
@hyperlane-xyz/sdk@7.0.0
@hyperlane-xyz/sdk@7.1.0
@hyperlane-xyz/sdk@7.2.0
@hyperlane-xyz/utils@3.1.10
@hyperlane-xyz/utils@3.10.0
@hyperlane-xyz/utils@3.11.0
@hyperlane-xyz/utils@3.11.1
@hyperlane-xyz/utils@3.12.0
@hyperlane-xyz/utils@3.13.0
@hyperlane-xyz/utils@3.13.0-next.0
@hyperlane-xyz/utils@3.14.0
@hyperlane-xyz/utils@3.15.0
@hyperlane-xyz/utils@3.15.1
@hyperlane-xyz/utils@3.16.0
@hyperlane-xyz/utils@3.2.0
@hyperlane-xyz/utils@3.3.0
@hyperlane-xyz/utils@3.4.0
@hyperlane-xyz/utils@3.5.0
@hyperlane-xyz/utils@3.5.1
@hyperlane-xyz/utils@3.6.0
@hyperlane-xyz/utils@3.6.1
@hyperlane-xyz/utils@3.6.2
@hyperlane-xyz/utils@3.7.0
@hyperlane-xyz/utils@3.8.0
@hyperlane-xyz/utils@3.8.1
@hyperlane-xyz/utils@3.8.2
@hyperlane-xyz/utils@3.9.0
@hyperlane-xyz/utils@4.0.0
@hyperlane-xyz/utils@4.0.0-alpha.0
@hyperlane-xyz/utils@4.0.0-alpha.1
@hyperlane-xyz/utils@4.0.0-alpha.2
@hyperlane-xyz/utils@4.0.0-beta
@hyperlane-xyz/utils@4.1.0
@hyperlane-xyz/utils@5.1.0
@hyperlane-xyz/utils@5.1.1
@hyperlane-xyz/utils@5.1.2
@hyperlane-xyz/utils@5.2.0
@hyperlane-xyz/utils@5.2.1
@hyperlane-xyz/utils@5.2.1-beta.0
@hyperlane-xyz/utils@5.3.0
@hyperlane-xyz/utils@5.4.0
@hyperlane-xyz/utils@5.5.0
@hyperlane-xyz/utils@5.6.0
@hyperlane-xyz/utils@5.6.1
@hyperlane-xyz/utils@5.6.2
@hyperlane-xyz/utils@5.7.0
@hyperlane-xyz/utils@6.0.0
@hyperlane-xyz/utils@7.0.0
@hyperlane-xyz/utils@7.1.0
@hyperlane-xyz/utils@7.2.0
@hyperlane-xyz/widgets@5.0.0
@hyperlane-xyz/widgets@5.1.0
@hyperlane-xyz/widgets@5.1.1
@hyperlane-xyz/widgets@5.1.2
@hyperlane-xyz/widgets@5.2.0
@hyperlane-xyz/widgets@5.2.1
@hyperlane-xyz/widgets@5.2.1-beta.0
@hyperlane-xyz/widgets@5.3.0
@hyperlane-xyz/widgets@5.4.0
@hyperlane-xyz/widgets@5.5.0
@hyperlane-xyz/widgets@5.6.0
@hyperlane-xyz/widgets@5.6.1
@hyperlane-xyz/widgets@5.6.2
@hyperlane-xyz/widgets@5.7.0
@hyperlane-xyz/widgets@6.0.0
@hyperlane-xyz/widgets@7.0.0
@hyperlane-xyz/widgets@7.1.0
@hyperlane-xyz/widgets@7.2.0
agents-1.0.0
agents-1.0.1
agents-2023-04-14
agents-2023-05-25
agents-2023-05-26
agents-2023-06-08
agents-2023-06-14
agents-2023-07-24
agents-2023-07-25
agents-2023-08-23
agents-2023-11-28
agents-2023-11-29
agents-2023-11-30
agents-2023-12-14
agents-2024-01-29
agents-2024-03-19
agents-2024-03-21
agents-2024-05-30
agents-2024-06-19
agents-v1.0.0
audit-fyeo-responses-0
audit-remediations
audit-scope-0
audit-v2
fyeo-fixes
hacken-fixes
mainnet-contracts
show
testnet2-contracts
testnet3
v.0.2.0
v.1.5.3
v0.0.0-testnet.0
v0.2.0
v0.2.1
v0.2.2
v0.2.3
v0.3.1
v0.4.0
v0.4.1
v0.5.0
v0.5.0-beta0
v0.5.1
v0.5.2
v0.5.3
v0.5.5
v1.0.0
v1.0.0-beta1
v1.0.0-beta5
v1.0.0-beta6
v1.1.0
v1.2.0
v1.2.1
v1.2.2
v1.2.3
v1.3.0
v1.3.1
v1.3.2
v1.3.3
v1.3.4
v1.3.7
v1.4.0
v1.4.1
v1.5.0
v1.5.1
v1.5.8
v2
v3-audit-remediations
v3-solidity
zksyncbeta
${ noResults }
159 Commits (3449fc76b10953b6cb5f7b1ec8fb34fa139ff8a6)
Author | SHA1 | Message | Date |
---|---|---|---|
Trevor Porter |
57bbb16cc1
|
feat: panics upon startup when RPC issues occur include the offending chain (#4323)
### Description Some quick low hanging fruit to make debugging easier in the future. Today (https://discord.com/channels/935678348330434570/1273582453889699843) some chains were having RPC issues and it caused an agent deploy to panic upon startup. Debugging this was hard because the panic message just indicates an error is occurring, but doesn't say what the offending chain is! Examples: - https://cloudlogging.app.goo.gl/puQk7hm4fXyJhYKs8 - https://cloudlogging.app.goo.gl/5qZrbc2Ww4LWQXWC6 - https://cloudlogging.app.goo.gl/ZL7mKbBzzJaePtty9 All these panic happen when constructing the cursor, which isn't yet done in an indexing task. The quick and easy fix is to just use expect instead of unwrap We still unwrap in a few places, but mostly in places that aren't susceptible to flaky RPC issues, e.g. reading from a HashMap that we know should always have an entry, etc ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
4 months ago |
Danil Nemirovsky |
d1bf212bf7
|
feat: Report git commit hash as agent metadata (#4282)
### Description * We are storing git commit hash as an environment variable when we compile the source code of an agent. * Validator uses git commit hash as a agent version in `metadata_latest.json` file. * File `metadata_latest.json` is overwritten every time when validator is restarted. * Git commit hash is extracted by `git` util, so, it should be available during build time. * If the directory with the source code does not contain `.git` folder, git commit hash will be defaulted to `VERGEN_IDEMPOTENT_OUTPUT`. Agent Metadata is propagated to Relayer and Scraper, but is not used there. We can use it in the future, reporting git hash commit in the logs, for example. ### Backward compatibility Yes ### Testing * Tested locally with E2E Tests. * Tested against S3 by deploying docker image into k8s --------- Co-authored-by: Danil Nemirovsky <4614623+ameten@users.noreply.github.com> |
4 months ago |
Paul Balaji |
ff3c9897ea
|
chore: migrate `test1` from `13371` to `133711` (#4252)
- chore: migrate `test1` from `13371` to `133711` - due to clash with immutablezkevm - drive-by registry update + agent config update --------- Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com> |
4 months ago |
Trevor Porter |
fe9365fdb3
|
chore: agent metric log tweaks (#4244)
### Description - some small tweaks as I looked into a recent issue with metrics ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
4 months ago |
Daniel Savu |
b643fba90a
|
feat: use multiple `mpsc` channels instead of `broadcast` for async interface (#4190)
### Description Follow up to https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/4180 Lowers txid broadcast channel capacity from 1M to 30k and refactors it to use a vec of `mpsc` under the hood. ### Context The heap profiler showed that each new chain takes up 100MB of memory because of the txid broadcast channel. In addition to this, the tokio broadcast channel is a ring buffer where new items simply overwrite old items, making it hard to safely lower the capacity. As such, to be able to safely lower the capacity of this channel, usage of `tokio`'s `broadcast` channel is replaced with a `Vec` of `mpsc`s, which offer an async `send` interface for backpressure. So instead of overwriting old items, senders will block on sends, which makes sense in our case as we absolutely don't want to miss items. The submitter is slower than the indexer based on empirical observation, so blocking on channel size doesn't bottleneck throughput. I noticed the max number of channel items we can reach is 29k, by running the RC relayer after an 8 day break, during which around 160k messages were submitted. Lowering the capacity to 30k should cause us to only encounter backpressure in very rare cases, and the footprint of this channel would lower from 100MB to 3MB. ### Drive-by changes The delivery indexer in the scraper is no longer passed a txid receiver, since message deliveries are not expected to occur in the same tx as message dispatches. ### Related issues - Fixes https://github.com/hyperlane-xyz/issues/issues/1293 ### Testing E2E, by adding invariants to make sure txid indexing works --------- Co-authored-by: Trevor Porter <tkporter4@gmail.com> |
4 months ago |
Daniel Savu |
d864c6a939
|
fix(evm): only create signer provider when needed (#4208)
### Description Adds an associated const to all ethereum provider builders to specify whether a signer is needed. For an e2e run with 20 messages, we now have 12 providers built with signers at the beginning (3 of which are validator announce), and 708 providers built without a signer. This should hopefully fix the gas escalator memory leak. ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
4 months ago |
Daniel Savu |
6140e6f397
|
feat: Relayer heap profiling (#4180)
### Description During the scalability audit we've identified relayer memory usage as a cause of concern. This PR runs the profiler each time e2e is run and outputs a report called `dhat-heap.json` in the current dir. That file can be visualised with a dhat viewer, such as the one hosted by the author [here](https://nnethercote.github.io/dh_view/dh_view.html). It adds a conditionally compiled heap memory profiler ([dhat-rs](https://docs.rs/dhat/latest/dhat/)), which is only included when both the `memory-profiling` feature is enabled and the `memory-profiling` cargo profile is used. The report can order the profiling results by total lifetime allocated bytes, peak allocated bytes, total allocation count, etc. Below is the result of sorting by total lifetime allocated bytes, which reveals that the biggest memory hogs are the hook indexing channel [senders](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/hyperlane-base/src/contract_sync/mod.rs#L52) (one per origin chain), taking up 100+ MB. Its size can most likely be reduced from 1M to 1k. ![Screenshot 2024-07-23 at 14 32 21](https://github.com/user-attachments/assets/f551ebfe-3ee0-40de-b53f-e5de1bc56dfa) ### Drive-by changes Adds the remaining IDs in the channel as a field to the hook indexing log, to know if it's safe to lower the channel size. ### Related issues - Fixes https://github.com/hyperlane-xyz/issues/issues/1293 ### Backward compatibility Yes, since everything is conditionally compiled / isolated in a new cargo profile. ### Testing Manual |
4 months ago |
Daniel Savu |
bf1dad7f77
|
feat(relayer): new status label for IGP not found (#4106)
### Description Adds new status label to relayer opqueue for operations whose gas payments were not found. This now creates a distinction between operations without a payment and those with insufficient payment. Helps better uncover cases where hook indexing misses events because there is no receipt yet |
4 months ago |
Daniel Savu |
befc38daba
|
fix: agent log verbosity (#4054)
### Description tbh I don't know why, but this makes all the logs we were previously missing show up in e2e: - |
5 months ago |
Daniel Savu |
aecb65a986
|
feat: persist status labels (#4043)
### Description Builds on top of https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/4003 to persist updates to an operation's status to the db, so we no longer default to `FirstPrepareAttempt` upon restarting the relayer ### Drive-by changes Moves `hyperlane_db` from `hyperlane_base` to `hyperlane_core` so it can be added to the `PendingOperation` trait. `PendingMessage` already stores a reference to the db in `ctx`, so I figured it doesn't break any assumptions. ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility Yes ### Testing Unit tests encoding of `PendingOperationStatus`, need to manually tests e2e |
5 months ago |
Daniel Savu |
d213e32341
|
feat: relayer queue operation labels (#4003)
### Description - adds status labels to operations in the relayer queues. In practice, the most useful ones are those for when a message is retried due to an error. Labels are defined as enums to keep the cardinality finite, the size of prometheus metrics could get very large - whenever a message is pushed to a queue, the interface requires specifying the new status as a `Option<PendingOperationStatus>`. If `None`, the status is left as before (such as in the case when an operation isn't ready to be retried). - a limitation is that labels aren't stored in the DB, so messages are loaded with the `FirstPrepareAttempt` label. I just triggered retries for destinations I wanted to get labels for, but we could persist to the db in a follow-up PR - Example prep queue labels for inevm: <img width="621" alt="Screenshot 2024-06-21 at 18 05 58" src="https://github.com/hyperlane-xyz/hyperlane-monorepo/assets/23065004/f53b2858-371f-4b6b-86d9-5c21409d641f"> ### Drive-by changes - removes `make_op_try` as it doesn't really add anything that couldn't be done with regular Rust - bumps the `strum` version because there was a bug in the previous one, preventing inner enum fields from being converted to strings ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Yes ### Testing Manual |
5 months ago |
Trevor Porter |
a109937f96
|
chore: some throughput tweaks (#4036)
### Description Context: https://discord.com/channels/935678348330434570/1254036693217054794 ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
5 months ago |
Trevor Porter |
c84a1dc73b
|
feat: address blacklisting in the relayer (#4000)
### Description See context here https://discord.com/channels/935678348330434570/1236041564673806427/1252918894755319920 and https://discord.com/channels/935678348330434570/1252953507833708605/1252954456400592997 This is a rudimentary first step toward blacklisting addresses. Future options are outlined in https://discord.com/channels/935678348330434570/1236041564673806427/1252918894755319920. Eventually we can also fetch these addresses directly within the agent from an updated list that we cache and re-fetch occasionally. For now, this just relies on configured addresses. The approach is: - Allow hex addresses to be configured. These are intentionally treated as a Vec<u8> instead of an H160 / H256. This is because treating them as H160 is a leak of Ethereum-specific logic into non-chain-specific code in the relayer, and treating them as H256 would pad Ethereum addresses with a bunch of zeroes which would diminish the accuracy of our heuristic implemented in this. The subsequence stuff is a bit unfortunate because it's O(n^2) but 🤷♂️ - The heuristic is as follows - if any of the configured addresses are found as a subsequence in the message sender, recipient, or body, it's thrown out by the message processor, and the message will never make its way to the op_submitter. This heuristic for the body is to prevent warp route transfers that include that address. We could maybe convert Vec<u8> to H256 for the sender and recipient, I'm open to this - I just went with the substring approach bc it felt easiest tbh. ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Fixes https://github.com/hyperlane-xyz/issues/issues/1285 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
5 months ago |
Connor McEwen | 897f627f09 |
fix: remove extra rust code from merge
|
6 months ago |
Daniel Savu |
826b4ae57f
|
feat: batching igp (#3870)
### Description Deducts IGP cost from senders of messages within a batch, based on the total gas used by the batch and the estimates for submitting messages individually. The formula is `gas_used_by_operation = gas_used_by_tx * (operation_estimated_gas / total_estimated_cost)` Note that the individual estimate have a buffer value added to them (currently 75k), which will slightly skew proportions, though by a negligible amount. For example, given these estimates in a batch: 150k, 160k, 180k, if we add 80k to each, we go from e.g. 0.312 for the first message to 0.319 -> 2.25% error which isn't so bad. The error can be larger if operations within a batch have very different estimates, but realistically within a 5% range based on back-of-the-napkin calculations. ### Drive-by changes - The batching feature introduced an bug whereby gas expenditure would only be deducted in the `confirm` step. Now this is done in the `submit` step to account for txs that revert - Sealevel e2e can now be disabled for faster iteration! I've not done the cleanest job, but even the fact that we have this will reduce the time to run e2e locally by more than half. To use it, set `SEALEVEL_ENABLED=false` when running `run-locally` - e2e uses a new utility called `get_matching_lines`, that can be used to count (and in the future _parse_) logs, to reconstruct the state of the relayer and have more expressive correctness checks. This is used to make sure that gas is deducted for all messages, including those in batches. ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3709 ### Backward compatibility Yes ### Testing E2E, using `get_matching_lines` |
6 months ago |
Daniel Savu |
942aba8e55
|
feat(evm): collaborative indexing through txid sharing (#3833)
### Description - improved indexing reliability by sharing channels between indexing tasks, such that they inform one another when they come across a hyperlane-related transaction - the receiving end will then get the receipt of that tx and filter it for events relevant to it - this adds some flexibility to indexing since we can stop relying on watermark cursor entirely: as long as we have one task using sequence indexing, all others can rely on being informed by their channels about what txs to index - this PR is only for the EVM chains, but can be easily extended ### Drive-by changes - Enforces gas payments for all chains in e2e (previously this only used to be the case for sealevel) - The channel size is configured per type, similarly to the indexing cursor, in `contract_sync/cursors/mod.rs` - Reduces log verbosity is some places, e.g. by manually implementing `Debug` to exclude fields that aren't relevant to debugging (maybe there's even a macro annotation to exclude, but I haven't checked) - Renames `MpmcReceiver` -> `BroadcastReceiver` ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3267 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing e2e tested with the watermark cursor manually disabled |
6 months ago |
Daniel Savu |
4261df74bb
|
chore: restrict for how long the backward syncer can block (#3918)
### Description <!-- What's included in this PR? --> ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
6 months ago |
Yorke Rhodes |
49f41d9759
|
chore: Merge branch 'main' into cli-2.0 (#3863)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Kunal Arora <55632507+aroralanuk@users.noreply.github.com> Co-authored-by: Connor McEwen <connor.mcewen@gmail.com> Co-authored-by: Trevor Porter <tkporter4@gmail.com> Co-authored-by: byeongsu-hong <hong@byeongsu.dev> Co-authored-by: Avi Atkin <103125634+avious00@users.noreply.github.com> Co-authored-by: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> Co-authored-by: J M Rossy <jm.rossy@gmail.com> Co-authored-by: Ali Alaoui <aalaoui2001@gmail.com> Co-authored-by: Nam Chu Hoai <nambrot@googlemail.com> Co-authored-by: Paul Balaji <paul@hyperlane.xyz> Co-authored-by: omahs <73983677+omahs@users.noreply.github.com> |
6 months ago |
omahs |
806f9842de
|
fix: duplicate word typos (#3854)
|
6 months ago |
Daniel Savu |
214f503e53
|
feat: forward-backward message processor (#3775)
### Description - adds logic for iterating message nonces in the processor task in forward-backward fashion - removes all manual calls that were updating the next nonce to query. This is done automatically in the iterator struct now - stores the highest known message nonce in the db, which is used to initialize the iterator ### Drive-by changes - Converts the concrete HyperlaneDb type stored in the processor to a trait obj, to enable mocking db responses ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3796 - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3816 ### Backward compatibility Yes - if there is no db entry for the new prefix, the processor starts from nonce zero, so no migration is required ### Testing Unit testing + e2e |
6 months ago |
Daniel Savu |
27aabf238c
|
feat: Relayer tokio task instrumentation (#3760)
### Description - Started off adding tokio-metrics but then realised those are quite general, so while we do have instrumentation it's not exposed in our metrics endpoint - switched to adding [tokio-console](https://github.com/tokio-rs/console/tree/main), which does give insight into the lifetime of specific tasks, so we can check which ones take up a long time during relayer startup. These are only visible at the `dependencyTrace` log level, so don't affect performance in the `hyperlane` context. ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Helps debug https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3454 and any future performance issues - Does half the work for https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3239 (still need to expose these in the metrics endpoint and import the grafana template) ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
6 months ago |
Daniel Savu |
be43b0fd91
|
feat: use batching configs on all execution environments (#3723)
### Description While we only have a tx batching implementation available for EVM chains, we still parallelize the `prepare` and `confirm` steps in the serial submitter according to the `maxBatchSize` config item. To reap the benefits of this change, we need to make these configs universal, because they were only defined within `h_eth::ChainConnectionConf`. This PR adds slight duplication because it adds the batching config on each individual connection config, but it's far simpler than including it in the `ChainConf` struct. The latter would've required changing all the trait impls of `BuildableWithProvider` to include the batching config. ### Drive-by changes Renames `serial_submitter` to `op_submitter` since it's no longer serial. ### Related issues Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3722 ### Backward compatibility Yes ### Testing Manually - added the configs to cosmos e2e and checked the logs |
7 months ago |
Daniel Savu |
f46cf7708e
|
Indexing Type Wrapper (#3610)
### Description Depends on https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3544. Wraps all types to be indexed in an `Indexed<T>` struct in the relayer. This allows for using sequece-aware cursors for data that doesn't contain a sequence but can have it inferred from metadata (as is the case for the IGP on sealevel). `Indexed<T>` stores the sequence as an `Option`, so the db can have additional sequence data stored in it when the sequence is defined - this is how `process_indexed_gas_payment` is implemented now. In addition, the IGP payments and Deliveries are configured to be indexed with a `SequenceAware` cursor on sealevel (see `cursors/mod.rs`). ### Drive-by changes Implements the custom `Encode` and `Decode` traits for `IndexingDecorator`, which can be generalized to `Option<T>` where `T: Encode + Decode`. ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing E2E |
7 months ago |
Daniel Savu |
5aeb83a2e5
|
Relayer Message Batching to EVM (#3656)
### Description Status: - [x] op-queue scaffolding - [x] hyperlane-ethereum integration with multicall - [x] new config items - [x] actually build batch in the op-queue submit step - [x] e2e tests with batching configured - [x] dynamic batch sizes (batch as many messages as the prepare step has ready) - [x] parallelize metadata building - [ ] proportional IGP deduction ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Fixes #3628 - Fixes #3630 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> --------- Co-authored-by: Trevor Porter <tkporter4@gmail.com> |
7 months ago |
Daniel Savu |
f4626eb4fe
|
Allow protocol-specific indexing (#3544)
### Description - Generalizes contract syncer hashmaps to store trait objects instead of concrete structs, since both `SequencedDataContractSync` and `WatermarkContractSync` implement `ContractSyncer` - The nice thing this enables is being able to instantiate a different type of syncer for the same contract, for different chain protocols (e.g. for IGP, we can use a sequenced syncer on sealevel and cosmwasm, and a watermark syncer on EVM). - The problem is that `ContractSyncer` is implemented on different trait bounds on `SequencedDataContractSync` and `WatermarkContractSync`. Most notably, the `SequencedDataContractSync` impl bounds the indexed type by the `Sequenced` trait. This means that if a type is to be indexed by more than one syncer strategy, it needs to implement the union of bounds of those strategies - **Blocker:** In the IGP, this means that `InterchainGasPayment` needs to implement `Sequenced` and we have no obvious way of getting that just from the type. Even if the sequence is derived from the type, it has to be a sensible value, since indexing reliability depends on it. - Similar to the point above, we now have `contract_syncs`, a single function that instantiates contract syncs for all chains. Since `contract_syncs` must be able to build a `ContractSyncer` trait obj for all syncer types, it bounds both `T` (the indexed type) and `D` (the log store type) with a union of bounds, so it may be too strict for some types in the future. - The scraper now uses forward-backward indexing instead of just forward indexing, because that simplified the refactor - there's now a convenience trait called `TryFromWithMetrics` that allows adding this bound: `SequenceIndexer<T>: TryFromWithMetrics<ChainConf>,`. This isn't really extendable if we use non-sequence indexers, but it's fine for now since this is used everywhere - replaces the macro-based contract syncer builder with generic fns Still todo: - add new `IndexingDecorator<T>` struct that can wrap `InterchainGasPayment`, so we can use sequence-aware indexing for the IGP - remove sequence logic from the watermark cursor ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
8 months ago |
Trevor Porter |
26a26f4073
|
Agent transaction overrides, ensure agent configs are updated in CI (#3563)
### Description - Adds some basic transaction overrides for Ethereum chains to be used by the agents. This follows the existing config schema in chain metadata that we have been using on the TS side for a while. The overrides are as follows: - `transactionOverrides.gasPrice` - if specified, non EIP-1559 txs are used, and they use this gasPrice - `transactionOverrides.gasLimit` - if specified, this takes precedence over any gas estimation that's done and is the gas limit that's used for txs. (This is pretty niche and I don't imagine we'll ever wanna use this internally, but happens to cover the use case described [here](https://discord.com/channels/935678348330434570/984123861144600587/1224617234580766741), which is nice to cover) - `transactionOverrides.maxFeePerGas` - if specified and if the chain supports EIP 1559 txs, is used for the `maxFeePerGas` - `transactionOverrides.maxPriorityFeePerGas` - if specified and if the chain supports EIP 1559 txs, is used for the `maxPriorityFeePerGas` - Updates some of the transaction overrides in mainnet3 / testnet4 to be more reasonable now that we'll be using them to submit transactions pretty frequently - Note that atm the transaction overrides are most easily applied to the agents via the config JSONs, and not via our K8s configuration. The upshot of this is if we wanna change a transaction override right now, the easiest way to do it will be to run `update-agent-config.ts` and then build a new image. Created https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3565 to track making this experience better - Part of this change means that it's more important to keep the `transactionOverrides` specified in the SDK / infra up to date with the agent config. So I ended up doing https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3325 along the way, which also required doing https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3311. - To fix the issue with arbitrum blocks, we now require the index.from to be specified in the chain metadata if the chain's technical stack is arbitrum nitro - A new script, `update-agent-config.ts` is added, and it's ran for mainnet3 and testnet4 in CI to make sure there's no diff (similar idea to what we do with prettier) - Along the way I renamed mainnet3_config.json and testnet4_config.json to mainnet_config.json and testnet_config.json. This has been a source of confusion with ppl in the past - in v2 we named them without any numeric suffixes, so we now just do that again ### Drive-by changes - There's a drive-by to poll more frequently for pending transactions (2 seconds). The default is 7 seconds in Ethers, and for many chains that have really quick block times, this may be a way for us to speed up us learning that a transaction is included - Don't enforce gas on the inevm routes, looks like there's some weirdness there that was reported by Nam ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3562 - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3325 - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3311 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
8 months ago |
Daniel Savu |
9b11f327c5
|
Range retries in watermark cursor (#3500)
### Description Changes the logic in the watermark cursor, to update the range in the `update` method rather than in `get_next_range`. This means that RPC errors won't result in ranges being skipped, so IGP indexing should be more reliable. ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - First in a sequence of many, for https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3264 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
8 months ago |
Daniel Savu |
6e39cf01af
|
Relayer retry endpoints (#3476)
### Description Adds a `/message_retry` relayer endpoint, which supports retrying OpQueue operations either by ID or by destination domain. Such a request will be sent to an `mpmc` channel's receiving end in the OpQueue, which is emptied when `OpQueue::pop` is called. Example calls: ``` GET http://127.0.0.1:60843/message_retry?destination_domain=42 GET http://127.0.0.1:60843/message_retry?message_id=0x46910b1329ee53c86a023b322e9ca1c17e5f9f0bee789c77b0abced0a173d714 ``` If the endpoint is called specifying both filters, **two** requests will be sent across the channel, one for each condition. Efficiency note: The entire queue is iterated over if there's at least one retry request in the channel. The good thing is that rebuilding the heap is `O(n)` so not too bad. ### Drive-by changes - Removed the usage of `enum_dispatch`, because it would have made unit tests messy. The drawback is that we have to work around object safety restrictions in `PendingOperation` - for instance it can't be cloned (but can be stored behind an `Arc` if we ever need this). - Added new methods to `PendingOperation`, either to match by ID, or to implement heap element prioritization without depending on the concrete `PendingMessage` type (as was done before). Additions: `id()`, `origin_domain()`, `priority()`. Don't think this conflicts with any operations we may add in the future (e.g. gas oracle updates). - Although `tokio`'s broadcast channel is multi-producer-multi-consumer by default, the consumer end isn't `Clone` - you instead need to have a producer to call `.subscribe()` on to get a new consumer, so I added an `MpmcChannel` struct to encapsulate keeping a producer around to get new consumers. - OpQueue is moved into its own file and has unit tests added for retries (covering broadcast to multi-queue, and both retry types). - Did a bit of agent `server `cleanup, including `EigenNodeApi` ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3098 ### Backward compatibility Yes ### Testing Unit tests for the server route (channel transmitter logic) and for the OpQueue retries (channel receiver logic). |
8 months ago |
J M Rossy |
adab1bec0c
|
Add code spellcheck CI job (#3467)
### Description Fix spelling mistakes and create codespell CI job. An extension of #3422 with the remaining mistakes fixed ### Backward compatibility Yes --------- Co-authored-by: miles <66052478+miles-six@users.noreply.github.com> Co-authored-by: Paul Balaji <paul@hyperlane.xyz> |
8 months ago |
Daniel Savu |
140e3c4bb5
|
fix: neutron grpc url default; url parsing error message (#3466)
### Description The default neturon grpc url is plaintext but it was using a `http` prefix so all requests would fail ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
8 months ago |
Daniel Savu |
8ea0bde7c9
|
Use app context classifier in relayer submitter queues (#3385)
### Description Includes the `app_context` classification in `PendingMessage`, and adds trait methods on `PendingOperation` to require always having such a label on `OpQueue` operations. This is done by reusing the matching list logic from the validator checkpoint labels (https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3057). The nice thing is that this enables later support for retrying a group of `OpQueue` operations just by specifying the `app_context` label, without adding any new logic, since these labels are essentially matching list results. One downside to using `app_context` for retries is that the endpoint caller is constrained to only the matching lists defined by the relayer operator - however imo only the relayer operator that should be able to trigger retries. ### Drive-by changes The `OpQueue` type alias is converted to an actual struct, that stores the queue label (for metrics purposes), and also the `IntGaugeVec` metric: the generic group of metrics associated with that queue (basically only `submitter_queue_length` currently). ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3240 ### Backward compatibility Yes ### Testing Manual, by spinning up a relayer for injective and inevm. Sample metrics, from `--metricAppContexts '[{"name": "injectivelabel", "matchingList": [{"destination_domain": 6909546 }] }, {"name": "inevmlabel", "matchingList": [{"destination_domain": 2525 }] }]'` ``` hyperlane_submitter_queue_length{agent="relayer",app_context="inevmlabel",hyperlane_baselib_version="0.1.0",queue_name="confirm_queue",remote="inevm"} 11 hyperlane_submitter_queue_length{agent="relayer",app_context="inevmlabel",hyperlane_baselib_version="0.1.0",queue_name="prepare_queue",remote="inevm"} 0 hyperlane_submitter_queue_length{agent="relayer",app_context="injectivelabel",hyperlane_baselib_version="0.1.0",queue_name="confirm_queue",remote="injective"} 63 hyperlane_submitter_queue_length{agent="relayer",app_context="injectivelabel",hyperlane_baselib_version="0.1.0",queue_name="prepare_queue",remote="injective"} 13281 ``` |
9 months ago |
Daniel Savu |
9736164392
|
fix: log level order, cosmos logging nit (#3374)
### Description Our logging prio order was off, double checked with [this crate](https://docs.rs/log/latest/log/enum.Level.html). Debug logs would be visible at `Info` level according to the previous rules. ### Drive-by changes Removed the debug formatting of a cosmsos log field, so it's no longer surrounded in quotes (bc we'd get `cursor_label: ""InterchainGasPaymentCursor""`) ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
9 months ago |
Daniel Savu |
dd8ac43c97
|
Validator task retries (#3361)
### Description - Makes validator tasks infallible by adding retries - This fixes a bug where certain tasks would return an error an shut down, affecting liveness. This was desired in the relayer since we don't want individual chain failures to affect the liveness of other chains. Now validator tasks either terminate or panic, and panicking will be propagated by `try_join_all`, causing the agent to shut down. - A thing to keep in mind in general is that agents will only terminate if a task panics. If it returns an `Err` but doesn't panic, the task won't be respawned. We should consider the implications of this in the scraper too. If this isn't desired, should consider using `select_all!` ### Drive-by changes - retry logic is moved from `rust/chains/hyperlane-cosmos/src/providers/rpc.rs` into `rust/hyperlane-core/src/rpc_clients/retry.rs`, so we're even closer to turning it into a retrying provider - changes several fn signatures within the validator to now return `ChainCommunicationError`s instead of `eyre::Report`s, for compatibility with the retry logic. Also makes `DbError` convertible to `ChainCommunicationError`, for the same reason. This achieves some progress on https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/2878 - allows the backfill checkpoint submitter task to terminate, since `try_join_all` is tolerant of this (as described above) ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3349 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
9 months ago |
Daniel Savu |
e737d998ff
|
Cosmos block-by-block indexing (#3245)
### Description Implements cosmos block-by-block indexing, parallelizing where possible: the `block` and `block_results` calls, and the individual block queries within a range. Also reuses the existing `handle_txs` logic, to improve readability. ### Drive-by changes Adds `tokio::task::JoinError` to the `hyperlane-core` error enum ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3234 - Added some hacky retrying logic to `get_logs_in_block`, since we were seeing lots of `503` http errors. In https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3264 we should make sure to remove this and propagate the error instead, to retry via the cursor / indexer logic. I edited the description of 3264 to reflect this ### Backward compatibility Yes ### Testing e2e --------- Co-authored-by: Trevor Porter <trkporter@ucdavis.edu> |
9 months ago |
Daniel Savu |
2283f1b1d1
|
wip: deploy agents to plumetestnet (#3306)
### Description <!-- What's included in this PR? --> ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> --------- Co-authored-by: Trevor Porter <trkporter@ucdavis.edu> Co-authored-by: -f <kunalarora1729@gmail.com> |
9 months ago |
Trevor Porter |
9a83eb4d57
|
Sequence-aware indexing refactor (#3262)
### Description Part 1 of an indexing refactor. This mostly focuses on the sequence-aware cursors. Changes: - Some renames, e.g. `SequenceIndexer` -> `SequenceAwareIndexer`, `sequence_and_tip` -> `latest_sequence_count_and_tip` - Moved cursors out of `contract_sync/cursor.rs` into `contract_sync/cursors/*` - The goal was to make the the Forward sequence-aware cursor, the Backward sequence-aware, and the ForwardBackward sequence aware cursors more resilient, easier to understand, and better tested. - General strategy for doing this was to: - Only move onto a new range to index if the logs passed into the cursor's `update` function justify this - If updated with any weird data, like gaps in logs, rewind the cursor and retry previously queried ranges I'd recommend starting the review in the following order: 1. `rust/hyperlane-base/src/contract_sync/cursors/sequence_aware/forward.rs` - where `ForwardSequenceAwareSyncCursor` & tests live 2. `rust/hyperlane-base/src/contract_sync/cursors/sequence_aware/backward.rs` - where `BackwardSequenceAwareSyncCursor` & tests live 3. `rust/hyperlane-base/src/contract_sync/cursors/sequence_aware/mod.rs` - where `ForwardBackwardSequenceAwareSyncCursor` lives ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
9 months ago |
Kunal Arora |
13fb461888
|
feat:add eigen node endpoints to agent API (#3095)
### Description - compatibility with eigenlayer's node spec here: https://eigen.nethermind.io/docs/spec/api/ - changing from hyper to axum as a preferred choice of server handling - adding server trait to validator, relayer, and server (to customize behavior for each in the future) ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - fixes https://github.com/hyperlane-xyz/issues/issues/853 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
9 months ago |
Daniel Savu |
1fdd619305
|
fix: lower rusoto timeout to 15s (#3283)
### Description Applies the fix in https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/2384 everywhere an `HttpClient` is constructed via rusoto. It lowers the S3 timeout to 15s based on tips in [this thread](https://github.com/hyperium/hyper/issues/2136#issuecomment-589488526), to avoid `Error during dispatch: connection closed before message completed` errors. Note that we'll probably still run into these issues, but less frequently ([source](https://github.com/rusoto/rusoto/issues/1766#issuecomment-639299961)). ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
9 months ago |
Daniel Savu |
155c85eda2
|
Infallible relayer tasks (#3257)
### Description The intended behavior of agents is described by @tkporter's comment here: https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3257#discussion_r1489233847 ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3209 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
10 months ago |
Daniel Savu |
3cbb06a07a
|
feat: fetch chain-specific metrics in standalone task (#3214)
### Description Spawning a tokio task to fetch chain-specific metrics in provider middleware was wasteful because we ended up with 15 tasks doing the same job. Now there is a single task that is spawned inside the relayer, which I added in the struct that used to only fetch relayer balance. Some questions: - I'm realising in the current state I'm probably removing these metrics from validators. Lmk if yes and I'll add back - the chain-specific metrics were moved out of `MiddlewareMetrics` because they're no longer part of middleware, but I wasn't sure where to place them. Maybe `CoreMetrics` is a better place than the current `custom_metrics.rs` file? `tokio-metrics` turned out not to be useful because we'd need to instrument every call site of `tokio::spawn` with it. We should still do it but as a separate task imo. ### Drive-by changes - This PR also makes it very easy to add the metrics tasks for new chains, by extending the `HyperlaneProvider` trait with a `get_chain_metrics` call which seems reasonably general to me to have implemented by all providers. (Bc we currently only track these for evm chains) - the description, naming and logic of the `gas_price` metric was also changed to support new chains ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3047 ### Backward compatibility Yes ### Testing Still need to manually test |
10 months ago |
Ivan Temchenko |
65e2ea50f9
|
Google Cloud Storage CheckpointSyncer implementation (#3156)
### Description GSC builder and implementer classes; Documentation comments; Examples; Anonymous test on public bucket access; ### Drive-by changes `cargo doc` build fixes: * replaced square braces of non-existing items with `'` ; * raw URL surrounded by `<>`; ### Related issues Fixes #2242 Part 1 ### Backward compatibility Yes ### Testing Unit Tests |
10 months ago |
Daniel Savu |
f2a0e92c7f
|
Cosmos grpc fallbackprovider (#3139)
### Description Implements grpc fallback provider logic for cosmos - initially tried implementing the fallback provider deprioritization logic at middleware level like in the EVM. The difference between ethers and cosmrs is that in the latter, middleware can only live at the transport layer (`tower` crate level). - based on this github [issue](https://github.com/hyperium/tonic/issues/733), that actually doesn't look possible, because the http::Request type isn't `Clone` so it can't be submitted to multiple providers - ended up implementing the fallback provider at the application layer, by keeping an array of grpc channels - There is now a `call` method in `hyperlane_core::FallbackProvider` which I'm actually really happy with. This method handles the fallbackprovider-specific logic by taking in an async closure, running it on each provider, and iterating providers if the closure call fails. In `grpc.rs` you can see how this is slightly verbose but I think it's quite manageable. The only part that bugs me is having to duplicate `Pin::from(Box::from(future))`, but that's need afaict because the regular closure returns an anonymous type - adds `grpcUrls` and `customGrpcUrls` config items - tests the cosmos fallback provider e2e ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Fixes: https://github.com/hyperlane-xyz/issues/issues/998 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
10 months ago |
Daniel Savu |
9e6146518f
|
fix: potential rate-limiting bugfix (#3191)
### Description <!-- What's included in this PR? --> ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/2586 ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing <!-- What kind of testing have these changes undergone? None/Manual/Unit Tests --> |
10 months ago |
Trevor Porter |
0cad4f7407
|
Support cosmos contract byte lengths other than 32 (#3147)
### Description fixes #3143 Initially went down a path that would use protocol-specific types for addresses as suggested by #3143. I had made a `HyperlaneConnectionConf` enum with protocol-specific variants whose values were `addresses: CoreContractAddresses<ProtocolSpecificAddressType>` and `connection: ProtocolSpecificConnectionConf`. This worked pretty well until I hit the ISM logic. Because hyperlane-core is where the Mailbox trait is defined, the return type of `recipient_ism` in the trait cannot involve protocol specific types. It can't be moved to hyperlane-base because hyperlane-base imports the chain crates, so we'd have a cyclic dependency. I experimented with moving away from H256 to something like a Vec<u8> or string, but this felt a bit weird. In the end we decided to keep H256s as the global representation for contract addresses for now, with the intent of eventually changing this, and to support the varying length situation in a cosmos config ### Drive-by changes - Added some cosmos specific agent configurations into the sdk - Moved to bech32_prefix in the agents for consistency with what the SDK's chain metadata already does - I guess no one's ran cargo test in a while so vectors/message.json got a new v3 message lol ### Related issues Fixes #3143 ### Backward compatibility Changes prefix to bech32_prefix in the agent config, and now requires `contractAddressBytes` ### Testing Tested merged with #3144 and all worked --------- Co-authored-by: Daniel Savu <23065004+daniel-savu@users.noreply.github.com> |
10 months ago |
Daniel Savu |
cdbaf9ef02
|
fix: dedup eth logs (#3108)
### Description Deduplicates ethereum logs by collecting them into a HashSet before returning a Vec. I couldn't find a way to deduplicate using an ethers config, but since `fetch_logs` is only called once in hyperlane-base, I'm doing the deduplication there "globally". I also noted in doc comments that duplicates may be returned. ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3070 ### Backward compatibility Yes ### Testing Will rely on e2e passing but haven't added unit tests for this scenario |
11 months ago |
Trevor Porter |
3f88aa6f6e
|
Observability of validators for relayers (#3057)
### Description Goal of this was to have insight into validators of important sets being "up" Introduces a new metric used by relayers: `hyperlane_observed_validator_latest_index`, e.g.: ``` hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test1",hyperlane_baselib_version="0.1.0",origin="test2",validator="0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc"} 664 hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test1",hyperlane_baselib_version="0.1.0",origin="test3",validator="0x976ea74026e726554db657fa54763abd0c3a0aa9"} 641 hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test2",hyperlane_baselib_version="0.1.0",origin="test1",validator="0x15d34aaf54267db7d7c367839aaf71a00a2c6a65"} 670 hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test2",hyperlane_baselib_version="0.1.0",origin="test3",validator="0x976ea74026e726554db657fa54763abd0c3a0aa9"} 665 hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test3",hyperlane_baselib_version="0.1.0",origin="test1",validator="0x15d34aaf54267db7d7c367839aaf71a00a2c6a65"} 652 hyperlane_observed_validator_latest_index{agent="relayer",app_context="default_ism",destination="test3",hyperlane_baselib_version="0.1.0",origin="test2",validator="0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc"} 664 hyperlane_observed_validator_latest_index{agent="relayer",app_context="testapp",destination="test1",hyperlane_baselib_version="0.1.0",origin="test2",validator="0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc"} 658 hyperlane_observed_validator_latest_index{agent="relayer",app_context="testapp",destination="test1",hyperlane_baselib_version="0.1.0",origin="test3",validator="0x976ea74026e726554db657fa54763abd0c3a0aa9"} 641 ``` Tapping into metadata building for multisig ISMs, the relayer will update the metric with the latest indices for the validators in a set. In order to prevent the cardinality being ridiculously high, only certain validator sets are tracked. This is done by introducing an `app_context` label (I'm very open to other names here, for some reason whenever idk how to name some kind of identifier I end up calling it a context 😆) The app context can either be: - if a new setting, --metricAppContexts, is specified, a message will be classified based off the first matching list it matches. E.g. `--metricAppContexts '[{"name": "testapp", "matchingList": [{"recipient_address": "0xd84379ceae14aa33c123af12424a37803f885889", "destination_domain": 13371 }] }]'`. This is nice for e.g. warp route deployments, where the ISM is maybe not a default ISM, and can be changed - if a message doesn't get classified this way, it can also be classified with the "default_ism" app context, which is just for any message that happens to use the default ISM as its "root" ISM This way we have insight in to the default ISM and any application-specific ISMs. Some things to note: - it's possible for a message to actually have more than one validator set, e.g. if it's using an aggregation ISM. In this case, we'll have metrics on the union of all validator sets for that app context - Some effort is required to make sure that metrics don't stick around for a validator that has actually been removed from the set. To handle this, we cache the validator set for an app context and clear out the entire set each time we set the metrics ### Drive-by changes - Zod's nonempty function for strings is deprecated, moves to `.min(1)` instead ### Related issues - Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/1762 ### Backward compatibility yes ### Testing Ran locally - I think i'll probably add something in e2e tests, but opening now |
11 months ago |
Daniel Savu |
f73ee0b273
|
last round of PR remediations (#2791)
Remediations for https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/2746, in addition to https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/2780 |
12 months ago |
Daniel Savu |
d18f7ae8e1
|
Cosmos gas price config (#3042)
### Description Adds a cosmos-specific config item for setting the minimum gas price, in the format returned by the `cosmos.base.node.v1beta1.Service/Config` cosmos-sdk grpc endpoint. ### Related issues - Fixes https://github.com/hyperlane-xyz/issues/issues/810 ### Backward compatibility No. Will break existing cosmos configs. ### Testing None yet, will test in e2e |
12 months ago |
Daniel Savu |
8e44bc1b81
|
feat: sealevel merkle indexer + e2e (#3053)
Depends on https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3048 Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3046 Fixes https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/2754 |
12 months ago |
Daniel Savu |
77aa58c581
|
Relayer balance metrics (#2976)
Done: - scaffolding for fetching custom agent metrics - abstractions for building a metrics fetcher for a given VM - querying cosmos balances; e2e tested. - querying evm balances; e2e tested. - **Note that as a result, evm addresses are now no longer zero-padded when printed in the logs. This may break existing log queries** - fixed a nasty bug on ubuntu where wasmd (osmosisd dependency, part of the grpc query flow) would panic when a block is specified via `x-cosmos-block-height`. The fix was to bump the version of osmosisd from `19.0.0` to `20.5.0`. **Note that when running e2e on Mac OS, the osmosis version in use is still 19.0.0**. That's because we need a fork that publishes a darwin target binary (currently pointing [here](https://github.com/hashableric/osmosis/releases/download/v19.0.0-mnts/osmosisd-19.0.0-mnts-darwin-arm64.tar.gz)) For follow up PR: - sealevel balance querying I'm open to all renaming suggestions, I just tried to speed through and didn't ponder names too much Relates to https://github.com/hyperlane-xyz/issues/issues/701 Closes https://github.com/hyperlane-xyz/issues/issues/702 (because the balance becomes available in the metrics endpoint for polling) |
1 year ago |