-
Notifications
You must be signed in to change notification settings - Fork 202
feat: integrate Tempo chain as second-class EVM citizen #12194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
gomesalexandre
wants to merge
8
commits into
shapeshift:develop
Choose a base branch
from
gomesalexandre:feat/tempo-chain
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
dc368c6
feat: integrate Tempo chain as second-class EVM citizen
gomes-bot 20399ef
fix: explicit tempo adapter return types
gomes-bot d0a906a
test: add tempo qabot regression fixture
gomes-bot dabd5bc
fix: make tempo tradeability actually worky
gomes-bot 0841345
fix: make tempo actually finally worky
gomesalexandre 4be3330
Merge remote-tracking branch 'origin/develop' into pr-12194
gomesalexandre 229b914
fix: unrug tempo ci after develop merge
gomesalexandre 4c7ff7f
chore: update pr beads context
gomesalexandre File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| {"id":"shapeshiftWeb-xfmg","title":"shepherd pr 12194 ci fixes","status":"closed","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-03-20T01:27:08.617052+01:00","created_by":"gomes","updated_at":"2026-03-20T01:33:31.6828+01:00","closed_at":"2026-03-20T01:33:31.6828+01:00","close_reason":"Closed"} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "camelName": "tempo", | ||
| "pascalName": "Tempo", | ||
| "upperName": "TEMPO", | ||
| "chainId": 4217, | ||
| "viemChainName": "tempo", | ||
| "nativeSymbol": "USD", | ||
| "nativeName": "USD", | ||
| "nativePrecision": 18, | ||
| "isNativeEth": false, | ||
| "color": "#22C55E", | ||
| "networkIconUrl": "https://assets.relay.link/icons/4217/light.png", | ||
| "nativeIconUrl": "https://assets.relay.link/icons/4217/light.png", | ||
| "explorerUrl": "https://explore.tempo.xyz", | ||
| "explorerAddressLink": "https://explore.tempo.xyz/address/", | ||
| "explorerTxLink": "https://explore.tempo.xyz/receipt/", | ||
| "rpcUrl": "https://rpc.tempo.xyz", | ||
| "fallbackRpcUrls": ["https://rpc.tempo.xyz"], | ||
| "coingeckoPlatform": "tempo", | ||
| "wrappedNativeAddress": null, | ||
| "relatedAssetKey": null, | ||
| "shortName": "USD", | ||
| "swappers": { | ||
| "relay": { "supported": true, "relayChainId": 4217 }, | ||
| "across": { "supported": false }, | ||
| "portals": { "supported": false }, | ||
| "zerion": { "supported": false }, | ||
| "yieldxyz": { "supported": false } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,91 @@ | ||
| name: Tempo Chain Regression | ||
| description: > | ||
| Regression test for Tempo second-class EVM chain integration. Verifies the | ||
| chain is discoverable/selectable in the trade modal, Tempo tradeable assets | ||
| and icons render correctly, Tempo account connection works, and small | ||
| cross-chain + same-chain Tempo swap flows succeed. Also verifies a Tempo | ||
| token self-send works and fee display is sane. Tempo has no normal native gas | ||
| coin UX - supported Tempo tokens are the practical fee/tradeable assets. | ||
| route: /trade | ||
| depends_on: | ||
| - wallet-health.yaml | ||
| steps: | ||
| - name: "Tempo: chain appears in trade chain filter" | ||
| instruction: > | ||
| Open the buy/receive asset selector on the trade page. Open the chain | ||
| filter dropdown and verify Tempo appears as an available chain option. | ||
| Select Tempo from the chain filter. Confirm the asset list updates to the | ||
| Tempo-only view and the selected filter chip/button shows Tempo. | ||
| expected: Tempo is visible in the chain dropdown, selectable, and filters the asset list | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: tradeable asset rows are visible, selectable, and icons are not borked" | ||
| instruction: > | ||
| While Tempo is selected in the chain filter, look for the Tempo tradeable | ||
| asset rows. The expected swappable Tempo assets are pathUSD and USDC. | ||
| Verify both rows are present, the network/chain attribution clearly says | ||
| Tempo, and the asset + network icons render normally rather than showing | ||
| a broken image, empty placeholder, or obviously wrong chain icon. Click | ||
| USDC to select it as the buy asset. | ||
| expected: pathUSD and USDC on Tempo are visible with sane icons, and USDC becomes the selected buy asset | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: popular assets are populated under the Tempo filter" | ||
| instruction: > | ||
| Re-open the buy/receive asset selector if needed, keep Tempo selected in | ||
| the chain filter, and inspect the modal content. Verify there is a | ||
| Popular Assets section or equivalent top section with Tempo assets, and | ||
| that it is not empty. Confirm pathUSD and USDC are present as selectable | ||
| Tempo options. | ||
| expected: Tempo-filtered popular assets are populated and both pathUSD and USDC are available | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: connect chain account so receive address resolves" | ||
| instruction: > | ||
| If the trade form says no Tempo address is connected, click the Tempo | ||
| connect/manage-accounts flow and add a Tempo account. Finish the modal | ||
| flow and return to trade. Confirm the receive address area resolves to an | ||
| actual Tempo address instead of the missing-address warning. | ||
| expected: Tempo receive address resolves successfully after connecting a Tempo account | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: cross-chain swap into USDC ($1-ish)" | ||
| instruction: > | ||
| Configure a small cross-chain trade into Tempo USDC. Use a funded sell | ||
| asset from another chain - prefer ETH on Ethereum, but if that wallet is | ||
| unfunded use another asset/chain with available balance. Enter roughly | ||
| $1 of sell amount. Wait for a quote, open the trade preview, then confirm | ||
| and sign the trade. Wait for completion and dismiss any success | ||
| notification. | ||
| expected: A small cross-chain swap into USDC on Tempo completes successfully | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: same-chain USDC to pathUSD swap works" | ||
| instruction: > | ||
| Configure a small same-chain Tempo swap from USDC to pathUSD using the | ||
| Tempo balance received in the previous step. Use a small amount like | ||
| $0.20 or the closest safe amount available. Wait for a quote, open the | ||
| trade preview, approve if required, then confirm and sign the swap. Wait | ||
| for completion and dismiss any success notification. | ||
| expected: A same-chain Tempo USDC to pathUSD swap completes successfully | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: same-chain pathUSD to USDC swap works" | ||
| instruction: > | ||
| Configure a small same-chain Tempo swap from pathUSD back to USDC using | ||
| the Tempo balance now in the wallet. Use a small amount like $0.10 or the | ||
| closest safe amount available. Wait for a quote, open the trade preview, | ||
| approve if required, then confirm and sign the swap. Wait for completion | ||
| and dismiss any success notification. | ||
| expected: A same-chain Tempo pathUSD to USDC swap completes successfully | ||
| screenshot: true | ||
|
|
||
| - name: "Tempo: self-send of a Tempo token works and fee display is sane" | ||
| instruction: > | ||
| Open the send flow for Tempo USDC and self-send a very small amount such | ||
| as $0.10 to the currently connected Tempo account address. Verify the | ||
| confirm screen shows a sane small fee amount in the Tempo token rather | ||
| than a giant nonsense value. Confirm and sign the transaction, then wait | ||
| for the send success state or success toast. | ||
| expected: A Tempo USDC self-send completes successfully and the displayed fee looks sane | ||
| screenshot: true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| import { loadEnv } from 'vite' | ||
|
|
||
| import { FALLBACK_RPC_URLS } from '../../../packages/contracts/src/fallbackRpcUrls' | ||
| import type { Csp } from '../../types' | ||
|
|
||
| const mode = process.env.MODE ?? process.env.NODE_ENV ?? 'development' | ||
| const env = loadEnv(mode, process.cwd(), '') | ||
|
|
||
| export const csp: Csp = { | ||
| 'connect-src': [env.VITE_TEMPO_NODE_URL, ...FALLBACK_RPC_URLS.tempo], | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
packages/caip/src/adapters/coincap/generated/eip155_1/adapter.json
Large diffs are not rendered by default.
Oops, something went wrong.
2 changes: 1 addition & 1 deletion
2
packages/caip/src/adapters/coincap/generated/eip155_10/adapter.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| {"eip155:10/erc20:0x94b008aa00579c1307b0ef2c499ad98a8ce58e58":"tether","eip155:10/erc20:0x0b2c639c533813f4aa9d7837caf62653d097ff85":"usd-coin","eip155:10/erc20:0x1f32b1c2345538c0c6f582fcb022739c4a194ebb":"lido-finance-wsteth","eip155:10/erc20:0x68f180fcce6836688e9084f035309e29bf0a2095":"wrapped-bitcoin","eip155:10/erc20:0x4200000000000000000000000000000000000006":"weth","eip155:10/erc20:0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6":"chainlink","eip155:10/erc20:0x5a7facb970d094b6c7ff1df0ea68d99e6e73cbff":"wrapped-eeth","eip155:10/erc20:0x6fd9d7ad17242c41f7131d257212c54a0e816691":"uniswap","eip155:10/erc20:0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1":"worldcoin-org","eip155:10/erc20:0x9bcef72be871e61ed4fbbc7630889bee758eb81d":"rocket-pool-eth","eip155:10/erc20:0x6985884c4392d348587b19cb9eaaf157f13271cd":"layerzero","eip155:10/erc20:0x0994206dfe8de6ec6920ff4d779b0d950605fb53":"curve-dao-token","eip155:10/erc20:0x4200000000000000000000000000000000000042":"optimism-ethereum","eip155:10/erc20:0x2e3d870790dc77a83dd1d18184acc7439a53f475":"frax","eip155:10/erc20:0x80eede496655fb9047dd39d9f418d5483ed600df":"frax-usd","eip155:10/erc20:0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91":"wormhole","eip155:10/erc20:0xc6bdfc4f2e90196738873e824a9efa03f7c64176":"vicicoin","eip155:10/erc20:0x8700daec35af8ff88c16bdf0418774cb3d7599b4":"synthetix-network-token","eip155:10/erc20:0x3eaeb77b03dbc0f6321ae1b72b2e9adb0f60112b":"sushiswap","eip155:10/erc20:0xaeaeed23478c3a4b798e4ed40d8b7f41366ae861":"ankr","eip155:10/erc20:0xa00e3a3511aac35ca78530c85007afcd31753819":"kyber-network","eip155:10/erc20:0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9":"susd","eip155:10/erc20:0xec6adef5e1006bb305bb1975333e8fc4071295bf":"cartesi","eip155:10/erc20:0xe05a08226c49b636acf99c40da8dc6af83ce5bb3":"ankreth","eip155:10/erc20:0x5f8d72676e37197b5011afc64d8641af2fe41fdb":"measurable-data-token","eip155:10/erc20:0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151":"dhedge-dao","eip155:10/erc20:0xc7edf7b7b3667a06992508e7b156eff794a9e1c8":"persistence","eip155:10/erc20:0xe453d6649643f1f460c371dc3d1da98f7922fe51":"fuse-network","eip155:10/erc20:0x528cdc92eab044e1e39fe43b9514bfdab4412b98":"giveth","eip155:10/erc20:0x1da650c3b2daa8aa9ff6f661d4156ce24d08a062":"dentacoin","eip155:10/erc20:0x6a661312938d22a2a0e27f585073e4406903990a":"mahadao"} | ||
| {"eip155:10/erc20:0x94b008aa00579c1307b0ef2c499ad98a8ce58e58":"tether","eip155:10/erc20:0x0b2c639c533813f4aa9d7837caf62653d097ff85":"usd-coin","eip155:10/erc20:0x1f32b1c2345538c0c6f582fcb022739c4a194ebb":"lido-finance-wsteth","eip155:10/erc20:0x68f180fcce6836688e9084f035309e29bf0a2095":"wrapped-bitcoin","eip155:10/erc20:0x4200000000000000000000000000000000000006":"weth","eip155:10/erc20:0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6":"chainlink","eip155:10/erc20:0x5a7facb970d094b6c7ff1df0ea68d99e6e73cbff":"wrapped-eeth","eip155:10/erc20:0x6fd9d7ad17242c41f7131d257212c54a0e816691":"uniswap","eip155:10/erc20:0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1":"worldcoin-org","eip155:10/erc20:0x9bcef72be871e61ed4fbbc7630889bee758eb81d":"rocket-pool-eth","eip155:10/erc20:0x6985884c4392d348587b19cb9eaaf157f13271cd":"layerzero","eip155:10/erc20:0x0994206dfe8de6ec6920ff4d779b0d950605fb53":"curve-dao-token","eip155:10/erc20:0x2e3d870790dc77a83dd1d18184acc7439a53f475":"frax","eip155:10/erc20:0x4200000000000000000000000000000000000042":"optimism-ethereum","eip155:10/erc20:0x80eede496655fb9047dd39d9f418d5483ed600df":"frax-usd","eip155:10/erc20:0xc6bdfc4f2e90196738873e824a9efa03f7c64176":"vicicoin","eip155:10/erc20:0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91":"wormhole","eip155:10/erc20:0x8700daec35af8ff88c16bdf0418774cb3d7599b4":"synthetix-network-token","eip155:10/erc20:0x3eaeb77b03dbc0f6321ae1b72b2e9adb0f60112b":"sushiswap","eip155:10/erc20:0xaeaeed23478c3a4b798e4ed40d8b7f41366ae861":"ankr","eip155:10/erc20:0xa00e3a3511aac35ca78530c85007afcd31753819":"kyber-network","eip155:10/erc20:0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9":"susd","eip155:10/erc20:0xec6adef5e1006bb305bb1975333e8fc4071295bf":"cartesi","eip155:10/erc20:0xe05a08226c49b636acf99c40da8dc6af83ce5bb3":"ankreth","eip155:10/erc20:0x5f8d72676e37197b5011afc64d8641af2fe41fdb":"measurable-data-token","eip155:10/erc20:0xaf9fe3b5ccdae78188b1f8b9a49da7ae9510f151":"dhedge-dao","eip155:10/erc20:0xc7edf7b7b3667a06992508e7b156eff794a9e1c8":"persistence","eip155:10/erc20:0xe453d6649643f1f460c371dc3d1da98f7922fe51":"fuse-network","eip155:10/erc20:0x528cdc92eab044e1e39fe43b9514bfdab4412b98":"giveth","eip155:10/erc20:0x1da650c3b2daa8aa9ff6f661d4156ce24d08a062":"dentacoin","eip155:10/erc20:0x6a661312938d22a2a0e27f585073e4406903990a":"mahadao"} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.