From f4043c0f7579242272ed10e2507357bf756fd86f Mon Sep 17 00:00:00 2001 From: Ed <5167260+edmulraney@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:48:48 +0100 Subject: [PATCH 1/3] fix: handle finding the index of the bid to refund --- apps/dapp/src/modules/auction/bid-list.tsx | 8 ++-- .../modules/auction/hooks/use-bid-index.ts | 44 ++++++++++++++----- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/apps/dapp/src/modules/auction/bid-list.tsx b/apps/dapp/src/modules/auction/bid-list.tsx index b6e081c2..e4d67722 100644 --- a/apps/dapp/src/modules/auction/bid-list.tsx +++ b/apps/dapp/src/modules/auction/bid-list.tsx @@ -150,7 +150,7 @@ export function BidList(props: BidListProps) { const [onlyUserBids, setOnlyUserBids] = React.useState(false); const { index: bidIndex } = useBidIndex( props.auction, - BigInt(bidToRefund?.bidId ?? -1), + bidToRefund?.bidId ? BigInt(bidToRefund.bidId) : undefined, ); const mappedBids = React.useMemo( @@ -181,9 +181,9 @@ export function BidList(props: BidListProps) { const isLoading = refund.isPending || refundReceipt.isLoading; const handleRefund = (bidId?: string) => { - if (bidId === undefined || bidIndex === undefined) + if (bidId === undefined || bidIndex === undefined) { throw new Error("Unable to get bidId for refund"); - + } refund.writeContract({ abi: auctionHouse.abi, address: auctionHouse.address, @@ -200,7 +200,7 @@ export function BidList(props: BidListProps) { id: "actions", cell: (info) => { const bid = info.row.original; - const isLive = props.auction.status === "live"; + const isLive = true; if (!address || !isLive) return; if (bid.bidder.toLowerCase() !== address.toLowerCase()) return; if (bid.status === "claimed" && !bid.settledAmountOut) return; diff --git a/apps/dapp/src/modules/auction/hooks/use-bid-index.ts b/apps/dapp/src/modules/auction/hooks/use-bid-index.ts index 344c3345..12d4a489 100644 --- a/apps/dapp/src/modules/auction/hooks/use-bid-index.ts +++ b/apps/dapp/src/modules/auction/hooks/use-bid-index.ts @@ -3,17 +3,21 @@ import { Auction } from "@axis-finance/types"; import React from "react"; import { useReadContract } from "wagmi"; -export function useBidIndex(auction: Auction, bidId: bigint = -1n) { +const abi = axisContracts.abis.batchCatalogue; +const BID_COUNT = 500n; + +export function useBidIndex(auction: Auction, bidId?: bigint) { const address = axisContracts.addresses[auction.chainId].batchCatalogue; - const abi = axisContracts.abis.batchCatalogue; const [startingIndex, setStartingIndex] = React.useState(0n); - const BID_COUNT = 100n; const numBidsQuery = useReadContract({ address, abi, functionName: "getNumBids", args: [BigInt(auction.lotId)], + query: { + enabled: bidId !== undefined, + }, }); const bidsQuery = useReadContract({ @@ -27,17 +31,33 @@ export function useBidIndex(auction: Auction, bidId: bigint = -1n) { }); React.useEffect(() => { - if ( - bidsQuery.isSuccess && - startingIndex + BID_COUNT < (numBidsQuery.data ?? 0n) - ) { - // Update query args to trigger a re-read - setStartingIndex((index) => index + BID_COUNT); - } - }, [bidsQuery.isSuccess]); + if (!bidsQuery.isSuccess) return; + + const isBidIdFound = + bidsQuery.data.findIndex((b: bigint) => b === bidId) !== -1; + + const noMoreBidsToSearch = startingIndex + BID_COUNT >= numBidsQuery.data!; + + if (isBidIdFound || noMoreBidsToSearch) return; + + // Update query args to trigger a re-read + setStartingIndex((index) => index + BID_COUNT); + }, [ + bidId, + bidsQuery.data, + bidsQuery.isSuccess, + numBidsQuery.data, + startingIndex, + ]); + + const batchIndex = + bidId !== undefined && bidsQuery.data ? bidsQuery.data.indexOf(bidId) : -1; + + const index = + batchIndex !== -1 ? startingIndex + BigInt(batchIndex) : undefined; return { - index: bidsQuery.data?.findIndex((b: bigint) => b === bidId), + index, ...bidsQuery, }; } From 77917fec5f88e4efc1393ec222a271f7ef794225 Mon Sep 17 00:00:00 2001 From: Ed <5167260+edmulraney@users.noreply.github.com> Date: Sat, 17 May 2025 00:31:38 +0100 Subject: [PATCH 2/3] feat: add support for new chains and docs on adding new chains --- DEPLOY.md | 53 ++++++++++++++++++++++ README.md | 4 ++ apps/dapp/package.json | 14 +++--- apps/dapp/public/bsc.webp | Bin 0 -> 2420 bytes apps/dapp/public/monad.svg | 4 ++ apps/dapp/public/sonic-logo.png | Bin 0 -> 2518 bytes pnpm-lock.yaml | 76 ++++++++++++++++---------------- 7 files changed, 106 insertions(+), 45 deletions(-) create mode 100644 DEPLOY.md create mode 100644 apps/dapp/public/bsc.webp create mode 100644 apps/dapp/public/monad.svg create mode 100644 apps/dapp/public/sonic-logo.png diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 00000000..05e7d9d0 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,53 @@ +# Deploying Axis to a new chain + +## Order of ceremony + +The following actions need to be carried out in order to add a new chain to Axis: + +1. Deploy the smart contracts to the new chain +2. [Add the new chain config](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#adding-a-new-chain) to the subgraph repo +3. [Deploy](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#deploy-guide) the subgraph +4. Obtain an RPC URL for the new chain from your RPC provider (e.g. Alchemy) +5. Add the new chain and deployment configuration to the [deployments](https://github.com/Axis-Fi/ui-libs/blob/main/packages/deployments/README.md#adding-a-new-chain-deployment) package +6. Add a cloak watcher to the [cloak](https://github.com/Axis-Fi/cloak) package +7. Confirm the new [deployments](https://github.com/Axis-Fi/ui-libs/blob/main/packages/deployments/README.md#adding-a-new-chain-deployment) package has been published to NPM +8. Consume the new [deployments package version](https://github.com/Axis-Fi/ui-libs/blob/main/packages/deployments/package.json) inside [launchpad](./apps/dapp/package.json) and [standalone](https://github.com/Axis-Fi/standalone-ui/blob/main/apps/dapp/package.json) +9. Test the `launchpad` and `standalone` dapp using the new chain: `pnpm dev` + +# Deploy the smart contracts + +Each chain requires the Axis smart contracts to be deployed. This is handled from the respective contract repos: + +- [axis-core](https://github.com/Axis-Fi/axis-core) +- [axis-periphery](https://github.com/Axis-Fi/axis-periphery/) +- [axis-registry](https://github.com/Axis-Fi/axis-registry) + +# Add the new chain to the subgraph + +The subgraph needs to be updated to include the new chain. This is achieved by updating the `networks.json` file in the [subgraph](https://github.com/Axis-Fi/subgraph) package. + +See the subgraph [README](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#adding-a-new-chain) for more information. + +# Deploy the subgraph + +Once the the new chain config has been added to the subgraph repo, the new subgraph can be deployed. This is done by following the subgraph [README](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#deploy-guide). + +# Obtain an RPC URL for the new chain + +This is a manual process. The RPC URL for the new chain needs to be obtained from your RPC provider (Alchemy, Infura, etc.). Axis currently uses Alchemy. + +# Add the new chain to the deployments package + +The [deployments package](https://github.com/Axis-Fi/deployments) needs to be updated to include the new chain. + +See the deployments [README](https://github.com/Axis-Fi/deployments/?tab=readme-ov-file#adding-a-new-chain) for how to do this. + +# Add a cloak watcher to the cloak package + +The cloak package needs to be updated to include the new chain. This is achieved by updating the `cloak.json` file in the [cloak](https://github.com/Axis-Fi/cloak) package. + +See the cloak [README](https://github.com/Axis-Fi/cloak/?tab=readme-ov-file#adding-a-new-chain) for more information. + +# Publish the new deployments package to NPM + +The new deployments package needs to be published to NPM. diff --git a/README.md b/README.md index 6cf246d1..14403c08 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ This Turborepo includes the following packages and applications: - `packages/ui`: Axis UI component library (shadcn + tailwind) - `config/tailwind-config`: Shared TailwindCSS configs +# Deploying Axis to a new chain + +To deploy Axis to a new chain, please follow the instructions in the [DEPLOY.md](./DEPLOY.md) file. + ## Contributing Thank you for your interest in contributing to Axis `launchpad`! Please read our [CONTRIBUTION.md](./CONTRIBUTING.md) guide to understand our development process and how to contribute effectively. diff --git a/apps/dapp/package.json b/apps/dapp/package.json index 95d0ed59..2a25fe8c 100644 --- a/apps/dapp/package.json +++ b/apps/dapp/package.json @@ -33,13 +33,13 @@ "dependencies": { "@axis-finance/abis": "0.0.3", "@axis-finance/auto-signer-provider": "^0.0.1", - "@axis-finance/cloak": "0.0.19", - "@axis-finance/curator-api": "0.0.32", - "@axis-finance/deployments": "0.0.15", - "@axis-finance/env": "0.0.19", - "@axis-finance/sdk": "0.0.42", - "@axis-finance/subgraph-client": "0.0.11", - "@axis-finance/types": "0.0.22", + "@axis-finance/cloak": "0.0.20", + "@axis-finance/curator-api": "0.0.33", + "@axis-finance/deployments": "0.0.16", + "@axis-finance/env": "0.0.20", + "@axis-finance/sdk": "0.0.43", + "@axis-finance/subgraph-client": "0.0.12", + "@axis-finance/types": "0.0.23", "@fleek-platform/sdk": "^3.5.1", "@helia/verified-fetch": "^2.3.1", "@openzeppelin/merkle-tree": "^1.0.6", diff --git a/apps/dapp/public/bsc.webp b/apps/dapp/public/bsc.webp new file mode 100644 index 0000000000000000000000000000000000000000..fcbb004411269c03e52a62d7cb48bae96b64a1ba GIT binary patch literal 2420 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 literal 0 HcmV?d00001 diff --git a/apps/dapp/public/monad.svg b/apps/dapp/public/monad.svg new file mode 100644 index 00000000..b37e16be --- /dev/null +++ b/apps/dapp/public/monad.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/dapp/public/sonic-logo.png b/apps/dapp/public/sonic-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b69ef16764394156d8f4541bd3b611043b1ad581 GIT binary patch literal 2518 zcmV;{2`TncNk&G_2><|BMM6+kP&iD&2><{uKfn(V)%e@~f05Jv|9TN1dyflVcXxMp zcXxMpcXxMpcXxMpcL}tw|FVd*=o;I$ZQC|yeT{6}wr$(B8MtlR$aaBrVBAQPej)J5 zd;u~+acBr*VI3TUTks6tqPKrE{C~)p0lyC{{0l*QBxHtaFbuZC1Na8KMCv8==?L3~ z{n@)cA#nlnLuc3p?^Q1;0m(cpNlKEs1Vd^&)*L0DPzwX$68w=w+mt5QLdt2$gw(l; z6k)T*Qqs^N9cv2;H3VdVHgFF9NwQf@m<8CBBXV(W%R}?{Jf4T=j=3~PXR9p2#N?B; zlzI+_Hjt$zDE$pk8j|os5;-BOg+$ zQCzoUhFXz})6eI+!*>d)u~5JZ7%Sy59ZyZ@zMXStN(^NSS&=*Q-GnawJcp$PMl`>i zo-f8vV-&wSbHzw7#sgFkZi%_061&J%KJLmQp%u-bUGx0JaXkLQnVRHdblWV?kFQbT z*)x=&0SYF821sU}yg6~?A{V|s+o#bGSkA~1`L%Mw_}(lEDcV^%FGJEBQCzoVj06Lc z{su?I+_4EgyNTkj=hDm*Ph)P59GzDt{&C)zZBm9IO)2a0V4}2ZMB#Z;1O>;c{14TJ zuWEXx=fza}KOz^tI(uYd43oyp?3X9zyBU5?X27$F$=N3_Pn^z(-_G0^)kB>ifN7%H zIz3W4R*!pU-86bO``ct}lIy4Lsce{ThP0f8fv+c>5$_vI)dvvoB9?IVw3{@J@x@%5 zl~YcWL(!W01vzZ)$Vr)loaa5v$-tp5)pAjI_q2fOG8n4DE14O2eJUrdYkf9XXI1)} zJSZAY$O>$m#VLaxW9ICWNAmS#st=DpnE7KgU^sM!-)h2IsrPlj+?vgp92$~&WOJ=3 zhm=HPCt>s@84+b-@8-5n6W9n{V388oLlXLP?{D(t^qHSBj3G(NOWJHPv#~?2oe@1U zp>vs2BMKJ5Uh%KXCgYqxBYtoG-6}KkSJtF}XSgY4RyNI9c{CqRkN?bFQvuZrZi+2< zaDJN5FEfMO>vQRBk^h#%GzLw!fQhmIy-vz$(;6$d32$U4;<|Zuo}L=eJ~vO!O*vv# zqz$PhF&P#$HXmvX{1j^kO-c9@2_Ux89DT^^_ESoK2TGrzD+&k~g zH#6v-X$A%RVJV#BL zFy3>+v|zDpo*@;GqT$r+kinl%m|}|`W}z5$Ph5?J1Ue!9dR^L0l-jDlJ?o^uu}pgT z9N9BB&FL9e2t~^oIWW&ol=|GdFC+61oPfjxOF^?lvpp$G<+w+)MOw#Dw5APfaB<$5 z7iQ~tB7vQjx);ZVY0k}qVkwvv1PKk`o6JmkC8^Hsx98wYiLqkS!)dZp?wk7P^30BB znhELq%(%4Y_IoowMtz`u5F{=Er^EtIO53T{`t95>i;#~cEvIL{bo_pPns;aSG{=yp zm{oFT#)oO+M!Wf^1PV?;A_xK)CYkx^?~PmUWUsWsP}WYxK6!pz7!F#*n7&fHZ_Iiu>$M8F`3y=xuTS@`i7xQ54*SB7v9C7ygLl4EWcx z(fPP(dc?`xZJQKgWeZq0FOA>44?5}&~ zqX~T`UQf)d7zwtg$~_ZT9Ue>Z@wGnv%H>FlLyrYx|A;jsR-#|2K<%mba`YvdF!XM z4Y_3I>_6>%c{-4Szc2$b1gQy8SPTD^fOBzMoO8eIokEi3%J|NkADTt6)YyR#O`CW_ zZb*(5&Ez>LpN~5szgpQ*m&I@1{>%B9K86~bkVLtH^n_dklbt1O!10*~E8CKD$4_tM z;`q7QDixTjURYDDr0axf@Ks7+`%*0D*!Y?)Z2Nd~j>(KzO7In?Lp1Qme$WvfN+fC5 z%ct|>gf0y#r`>!z&*iAhot&WrkAChK_+{cEPzAQaZ%O2&te+s)mZ!BbTmSU%zlI!w7o|@-JPtQYh(53SX4s+MMd*JTh@d`vqg#&&|8w3FDy_Ool`70)C~5?&C)%ZVJ?dXx@ePc=Lxa g9x6h6m=12.0.0" } dependencies: readable-stream: 3.6.2 - webextension-polyfill: 0.10.0 + webextension-polyfill: 0.12.0 dev: false /external-editor@3.1.0: From 05944bbb59ef45720e4b0b62dd8236dba1b9ee09 Mon Sep 17 00:00:00 2001 From: Ed <5167260+edmulraney@users.noreply.github.com> Date: Sat, 17 May 2025 00:42:06 +0100 Subject: [PATCH 3/3] chore: update deployment info --- DEPLOY.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DEPLOY.md b/DEPLOY.md index 05e7d9d0..ccaf1077 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -14,7 +14,7 @@ The following actions need to be carried out in order to add a new chain to Axis 8. Consume the new [deployments package version](https://github.com/Axis-Fi/ui-libs/blob/main/packages/deployments/package.json) inside [launchpad](./apps/dapp/package.json) and [standalone](https://github.com/Axis-Fi/standalone-ui/blob/main/apps/dapp/package.json) 9. Test the `launchpad` and `standalone` dapp using the new chain: `pnpm dev` -# Deploy the smart contracts +## Deploy the smart contracts Each chain requires the Axis smart contracts to be deployed. This is handled from the respective contract repos: @@ -22,32 +22,32 @@ Each chain requires the Axis smart contracts to be deployed. This is handled fro - [axis-periphery](https://github.com/Axis-Fi/axis-periphery/) - [axis-registry](https://github.com/Axis-Fi/axis-registry) -# Add the new chain to the subgraph +## Add the new chain to the subgraph The subgraph needs to be updated to include the new chain. This is achieved by updating the `networks.json` file in the [subgraph](https://github.com/Axis-Fi/subgraph) package. See the subgraph [README](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#adding-a-new-chain) for more information. -# Deploy the subgraph +## Deploy the subgraph Once the the new chain config has been added to the subgraph repo, the new subgraph can be deployed. This is done by following the subgraph [README](https://github.com/Axis-Fi/subgraph/?tab=readme-ov-file#deploy-guide). -# Obtain an RPC URL for the new chain +## Obtain an RPC URL for the new chain This is a manual process. The RPC URL for the new chain needs to be obtained from your RPC provider (Alchemy, Infura, etc.). Axis currently uses Alchemy. -# Add the new chain to the deployments package +## Add the new chain to the deployments package The [deployments package](https://github.com/Axis-Fi/deployments) needs to be updated to include the new chain. See the deployments [README](https://github.com/Axis-Fi/deployments/?tab=readme-ov-file#adding-a-new-chain) for how to do this. -# Add a cloak watcher to the cloak package +## Add a cloak watcher to the cloak package The cloak package needs to be updated to include the new chain. This is achieved by updating the `cloak.json` file in the [cloak](https://github.com/Axis-Fi/cloak) package. See the cloak [README](https://github.com/Axis-Fi/cloak/?tab=readme-ov-file#adding-a-new-chain) for more information. -# Publish the new deployments package to NPM +## Update and test -The new deployments package needs to be published to NPM. +Make sure you've updated `launchpad` and `standalone` `@axis-finance/deployments` dependency to the new published version, then run `pnpm i` to install the new dependencies, and `pnpm dev` to test the dapp using the new chain.