diff --git a/apps/cli/src/commands/licenses/generate-revenue-report.ts b/apps/cli/src/commands/licenses/generate-revenue-report.ts new file mode 100644 index 000000000..f0fcbd9de --- /dev/null +++ b/apps/cli/src/commands/licenses/generate-revenue-report.ts @@ -0,0 +1,15 @@ +import Vorpal from "vorpal"; +import { generateRevenueReport as generateRevenueReportCore } from "@sentry/core"; + +/** + * Function to generate the revenue report. + * @param cli - Vorpal instance + */ +export function generateRevenueReport(cli: Vorpal) { + cli + .command('generate-revenue-report', 'Generates the revenue report.') + .action(async function (this: Vorpal.CommandInstance) { + this.log(`Generating revenue report...`); + await generateRevenueReportCore(); + }); +} diff --git a/apps/cli/src/commands/operator-control/operator-runtime.ts b/apps/cli/src/commands/operator-control/operator-runtime.ts index 831bd64b4..3eacb2a3b 100644 --- a/apps/cli/src/commands/operator-control/operator-runtime.ts +++ b/apps/cli/src/commands/operator-control/operator-runtime.ts @@ -1,5 +1,5 @@ import Vorpal from "vorpal"; -import { getSignerFromPrivateKey, operatorRuntime } from "@sentry/core"; +import { getSignerFromPrivateKey, operatorRuntime, listOwnersForOperator } from "@sentry/core"; /** * Starts a runtime of the operator. @@ -17,6 +17,7 @@ export function bootOperator(cli: Vorpal) { message: 'Enter the private key of the operator:', mask: '*' }; + const { walletKey } = await this.prompt(walletKeyPrompt); if (!walletKey || walletKey.length < 1) { @@ -25,10 +26,45 @@ export function bootOperator(cli: Vorpal) { const { signer } = getSignerFromPrivateKey(walletKey); + const whitelistPrompt: Vorpal.PromptObject = { + type: 'confirm', + name: 'useWhitelist', + message: 'Do you want to use a whitelist for the operator runtime?', + default: false + }; + + const { useWhitelist } = await this.prompt(whitelistPrompt); + + // If useWhitelist is false, selectedOwners will be undefined + let selectedOwners; + if (useWhitelist) { + + const operatorAddress = await signer.getAddress(); + const owners = await listOwnersForOperator(operatorAddress); + + const ownerPrompt: Vorpal.PromptObject = { + type: 'checkbox', + name: 'selectedOwners', + message: 'Select the owners for the operator to run for:', + choices: [operatorAddress, ...owners] + }; + + const result = await this.prompt(ownerPrompt); + selectedOwners = result.selectedOwners; + + console.log("selectedOwners", selectedOwners); + + if (!selectedOwners || selectedOwners.length < 1) { + throw new Error("No owners selected. Please select at least one owner.") + } + } + + stopFunction = await operatorRuntime( signer, undefined, - (log) => this.log(log) + (log) => this.log(log), + selectedOwners, ); return new Promise((resolve, reject) => { }); // Keep the command alive diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 03c1f8946..cffb1a46a 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -42,6 +42,7 @@ import { setOrAddPricingTiersCommand } from './commands/licenses/set-or-add-pric import { addPromoCode } from './commands/licenses/add-promo-code.js'; import { removePromoCode } from './commands/licenses/remove-promo-code.js'; import { eventListener } from './commands/event-listener.js'; +import { generateRevenueReport } from './commands/licenses/generate-revenue-report.js'; const cli = new Vorpal(); @@ -89,6 +90,7 @@ setReferralDiscountAndRewardPercentages(cli); setRollupAddress(cli); toggleAssertionChecking(cli); totalSupply(cli); +generateRevenueReport(cli); cli .delimiter('sentry-node$') diff --git a/apps/sentry-client-desktop/src/components/AssignKeysFromNewWallet.tsx b/apps/sentry-client-desktop/src/components/AssignKeysFromNewWallet.tsx index 8017f8884..9fd60ed23 100644 --- a/apps/sentry-client-desktop/src/components/AssignKeysFromNewWallet.tsx +++ b/apps/sentry-client-desktop/src/components/AssignKeysFromNewWallet.tsx @@ -4,6 +4,7 @@ import {useSetAtom} from "jotai"; import {AiFillWarning} from "react-icons/ai"; import {useOperator} from "@/features/operator"; import {modalStateAtom, ModalView} from "@/features/modal/ModalManager"; +import {XaiButton} from "@sentry/ui"; export function AssignKeysFromNewWallet() { const setDrawerState = useSetAtom(drawerStateAtom); @@ -25,14 +26,14 @@ export function AssignKeysFromNewWallet() { Add wallets to assign keys to the Sentry
- +Don't own any keys? diff --git a/apps/sentry-client-desktop/src/features/drawer/DrawerManager.tsx b/apps/sentry-client-desktop/src/features/drawer/DrawerManager.tsx index de7879a16..83bd2a641 100644 --- a/apps/sentry-client-desktop/src/features/drawer/DrawerManager.tsx +++ b/apps/sentry-client-desktop/src/features/drawer/DrawerManager.tsx @@ -6,12 +6,14 @@ import {ViewKeysDrawer} from "../home/modals/view-keys/ViewKeysDrawer"; import {ActionsRequiredNotAccruingDrawer} from "../home/modals/actions-required/ActionsRequiredNotAccruingDrawer"; import {ExportSentryDrawer} from "../home/modals/ExportSentryDrawer"; import {ImportSentryDrawer} from "../home/modals/ImportSentryDrawer"; +import {WhitelistDrawer} from "@/features/drawer/WhitelistDrawer"; export enum DrawerView { ActionsRequiredBuy, ActionsRequiredNotAccruing, BuyKeys, ViewKeys, + Whitelist, ImportSentry, ExportSentry, } @@ -23,7 +25,7 @@ export function DrawerManager() { return (
Allowed Wallet
++ Below are the wallets assigned to your Sentry Wallet ({operatorAddress}). Select the wallets + you'd like to enable. +
++ Note: Gas fees will be covered using your Sentry Wallet funds whenever an enabled wallet is eligible + to participate in a challenge. +
+Your Sentry Wallet
+ {getOperatorItem()} +Assigned Wallets
+ {getDropdownItems()} ++ Applying changes will restart your sentry +
+ +setDrawerState(DrawerView.ViewKeys)} diff --git a/apps/sentry-client-desktop/src/features/home/SentryWallet.tsx b/apps/sentry-client-desktop/src/features/home/SentryWallet.tsx index ea48e6444..046e970ff 100644 --- a/apps/sentry-client-desktop/src/features/home/SentryWallet.tsx +++ b/apps/sentry-client-desktop/src/features/home/SentryWallet.tsx @@ -24,6 +24,7 @@ import {chainStateAtom, useChainDataRefresh} from "@/hooks/useChainDataWithCallb import {accruingStateAtom} from "@/hooks/useAccruingInfo"; import {AssignKeysSentryNotRunning} from "@/components/AssignKeysSentryNotRunning"; import {GrRefresh} from "react-icons/gr"; +import {LuListChecks} from "react-icons/lu"; // TODO -> replace with dynamic value later export const recommendedFundingBalance = ethers.parseEther("0.005"); @@ -32,11 +33,9 @@ export function SentryWallet() { const [drawerState, setDrawerState] = useAtom(drawerStateAtom); const setModalState = useSetAtom(modalStateAtom); const {ownersLoading, owners, licensesLoading, licensesList} = useAtomValue(chainStateAtom); - const queryClient = useQueryClient(); const {hasAssignedKeys} = useAtomValue(accruingStateAtom); - const {isLoading: operatorLoading, publicKey: operatorAddress} = useOperator(); const {data: balance} = useBalance(operatorAddress); @@ -264,7 +263,9 @@ export function SentryWallet() { {sentryRunning ? ( + +
- You must pass KYC within 180 days of accruing esXAI to claim accrued node rewards. - Check back in - 48 hours if all docs submitted. Check your inbox (including spam) for updates. For - KYC issues, - contact window.electron.openExternal(`https://help.blockpass.org/hc/en-us/requests/new`)} - > Blockpass. If not completed, continue submission here. -
-- You have successfully completed your KYC on all wallets assigned to the Sentry. -
-+ You have successfully completed your KYC on all wallets assigned to the Sentry. +
+ + )} + + {data?.whitelistedWallets?.map((owner, i) => { + return ( +v{import.meta.env.APP_VERSION}
window.open("https://xai.games/sentrynodeagreement/", "_blank", "noopener noreferrer")} + className="text-[#F30919] cursor-pointer hover:underline" + onClick={() => window.electron.openExternal("https://xai.games/sentrynodeagreement")} > Sentry Node Agreement diff --git a/apps/sentry-client-desktop/src/features/storage/useStorage.tsx b/apps/sentry-client-desktop/src/features/storage/useStorage.tsx index 82aeb6852..d075926b5 100644 --- a/apps/sentry-client-desktop/src/features/storage/useStorage.tsx +++ b/apps/sentry-client-desktop/src/features/storage/useStorage.tsx @@ -5,13 +5,14 @@ const dataAtom = atom+
Xai.games
website - +Purchases from Xai will only ever occur on Xai.games. Check that you are on Xai.games whenever purchasing from Xai. diff --git a/apps/web-connect/src/features/checkout/hooks/useListClaimableAmount.ts b/apps/web-connect/src/features/checkout/hooks/useListClaimableAmount.ts new file mode 100644 index 000000000..be6395e6b --- /dev/null +++ b/apps/web-connect/src/features/checkout/hooks/useListClaimableAmount.ts @@ -0,0 +1,17 @@ +import {useQuery} from "react-query"; +import {listClaimableAmount} from "@sentry/core"; + +export function useListClaimableAmount(address: string | undefined) { + return useQuery({ + queryKey: ["list-claimable-amount", address], + queryFn: async () => { + const claimableAmount = await listClaimableAmount(address!); + return { + claimableAmount, + } + }, + staleTime: Infinity, + cacheTime: 0, + enabled: address != undefined && address.length > 0, + }); +} diff --git a/apps/web-connect/src/features/header/Header.tsx b/apps/web-connect/src/features/header/Header.tsx index ed13f61d3..83029bc55 100644 --- a/apps/web-connect/src/features/header/Header.tsx +++ b/apps/web-connect/src/features/header/Header.tsx @@ -5,7 +5,7 @@ export function Header() { const navigate = useNavigate(); return (
+ Claim Xai Tokens +
+ + {!address && ( ++ Connect your wallet to check your eligibility. +
+ )} + + {address ? ( + <> + {eligible ? ( + <> ++ You are eligible to claim Xai Tokens! +
++ This wallet ({address}) is ineligible to claim any Xai Tokens. +
++ You can connect a different wallet to determine if it is eligible. +
+ > + )} + > + ) : ( +- Connect Wallet -
-
- This enables viewing purchased Xai Sentry Keys in the Xai Client.
-
- After connecting your wallet, you will redirected back to the client.
-
- Don't own any keys? - navigate("/")} - className="text-[#F30919] ml-1 cursor-pointer" - > - Purchase keys here - -
-+ Sentry Keys Redeemed +
+ + ++ Redeem Sentry Keys +
+ + {isClaimableAmountLoading ? ( +Loading...
++ Connect your wallet to check your eligibility. +
+ )} + + {address ? ( + <> + {listClaimableAmountData && Number(listClaimableAmountData?.claimableAmount) !== 0 ? ( + <> ++ This wallet ({address}) is eligible to claim {BigInt(listClaimableAmountData.claimableAmount).toString()} {Number(listClaimableAmountData.claimableAmount) === 1 ? "Key" : "Keys"}. +
++ You will be able to claim up to 50 Keys per transaction until + all your eligible Keys are claimed. +
+(SEE BLOCKED + COUNTRIES)
++ {error.message} +
+ )} ++ This wallet ({address}) is ineligible to claim any Xai Sentry + Keys. +
++ You can connect a different wallet to determine if it is + eligible. +
+ > + )} + > + ) : ( ++
Last Revised: December 26, 2023
++
+ Please read these Xai Airdrop Terms and Conditions (these “Terms”) + carefully before claiming, accessing, or using any XAI cryptographic tokens + (“Tokens”) on the Xai network (the “Xai Network”). By claiming, accessing, + or using Tokens, you agree that you have read, understand, and accept all + of the terms and conditions contained in these Terms by and between you + and Xai Company Ltd., a British Virgin Islands business company (the + “Company” or “we”). If you do not agree to all of the terms and + conditions of these Terms, do not claim, access, or use the Tokens. +
++
+ TOKENS ARE NOT AVAILABLE TO BE CLAIMED, ACCESSED, OR USED BY ANY + RESIDENT OF OR ANY PERSON LOCATED OR DOMICILED IN THE UNITED STATES. +
++
+ PLEASE BE AWARE THAT SECTION 6 (DISPUTE RESOLUTION; AGREEMENT TO + ARBITRATE) GOVERNS THE RESOLUTION OF DISPUTES BETWEEN YOU AND THE + COMPANY. SECTION 6 INCLUDES AN AGREEMENT TO ARBITRATE WHICH + REQUIRES, WITH LIMITED EXCEPTIONS, THAT ALL DISPUTES BETWEEN YOU + AND US SHALL BE RESOLVED BY BINDING AND FINAL ARBITRATION. SECTION 6 + ALSO CONTAINS A CLASS ACTION AND JURY TRIAL WAIVER. PLEASE READ + SECTION 6 CAREFULLY. +
++
THESE TERMS MAY BE AMENDED FROM TIME TO TIME IN ACCORDANCE WITH SECTION 8.3.
++
+
+ 1.1. General. To be eligible to claim, access, or use the Tokens, you must + satisfy each + of the following eligibility requirements: +
++
(a) You are at least eighteen (18) years of age, or are the legal age for entering legally binding + agreements under applicable law; +
++
(b) You are not, nor are you an entity that is, or an entity owned or controlled by any person or + entity that is, or conducting any activities itself or on behalf of any person or entity that is: + (i) a natural person resident in the United States; (ii) a partnership or corporation organized or + incorporated under the laws of the United States; or (iii) otherwise a “U.S. person” as defined in + Rule 902(k)(2) of Regulation S under the Securities Act of 1933 (each, a “U.S. Person”); +
++
+ (c) You are not, nor are you an entity that is, or an entity owned or controlled by any person or + entity that is, or conducting any activities itself or on behalf of any person or entity that is: + the subject of any sanctions administered or enforced by the U.S. Department of the Treasury’s + Office of Foreign Assets Control, the U.S. Department of State, or any other governmental authority + with jurisdiction over the party; identified on the Denied Persons, Entity, or Unverified Lists of + the U.S. Department of Commerce’s Bureau of Industry and Security; or located, organized, or + resident in a country or territory that is, or whose government is, the subject of economic + sanctions, including, without limitation, Russia, Crimea, Cuba, Iran, North Korea, or Syria (each, a + “Restricted Person”); and +
++
(d) You are not claiming, accessing, or using Tokens on behalf of a U.S. Person or Restricted + Person. +
++
1.2. Identity Verification. We reserve the right to request that you provide + information + to us for the purposes of verifying your identity. If we are unable to verify your identity and confirm + that you are eligible to claim, access, or use the Tokens, you will not be permitted to claim, access, + or use the Tokens. Upon request, you agree to provide us with the information we request for purposes of + identity verification and permit us to keep a record of such information. You further represent and + agree that all such information is complete and accurate and that you will immediately notify the + Company in the event that any information provided to the Company during this process is no longer + complete or accurate.
++
+
+ 2.1. Airdrops. We may from time to time distribute to Xai Network users the + right to claim promotional Tokens as part of an “airdrop” (each, an “Airdrop”). Tokens + distributed to users as part of an Airdrop will not automatically accrue to users’ digital wallets. Each + user will be required to claim the Airdrop by visiting https://sentry.xai.games/#/claimtoken and following + the instructions provided on the webpage, + including paying associated Xai Network and Ethereum network transaction fees. +
++
2.2. Connecting a Digital Wallet. In order to claim any Tokens granted in the + Airdrop, + you will need to connect a compatible third-party Ethereum blockchain digital wallet (“Wallet”). + You are + solely responsible for maintaining the security of your Wallet, including any associated credentials, + private key, and seed phrase. The Company does not offer Wallet software or custody Tokens (or any other + crypto assets) on behalf of users. Your use of a third-party Wallet is subject to separate terms and + conditions established by the Wallet provider.
++
2.3. Expiration of Airdrops. Airdrops can be claimed at any time prior to + expiration. + You will have 180 days from the date that you receive an Airdrop to claim the Tokens earned as part of + the Airdrop before the Airdrop expires. You may be required to provide information to the Company for + purposes of verifying your identity and confirming your eligibility to claim Airdrops before you will be + permitted to claim and take possession of any Tokens.
++
+
3.1. You acknowledge that the Tokens and Xai Network incorporate experimental and novel + technology and that the use of such technology involves a high degree of risk. For example, there are + numerous reasons the Tokens or Xai Network could fail in an unexpected way, resulting in the total and + absolute loss of your Tokens. You hereby agree that you assume all risks in connection with your use of + the Tokens and Xai Network and expressly waive and release the Company from any and all liability, + claims, causes of action, or damages arising out of or in any way relating to you obtaining or using + Tokens and Xai Network.
++
3.2. You understand and accept the risk of operational challenges related to the Tokens and Xai + Network. For example, the Xai Network may experience cyber-attacks, unexpected surges in transaction + volume or activity, or other operational or technical difficulties or vulnerabilities that may cause + interruptions related to your use of the Tokens or Xai Network. You agree to accept the risk of Tokens + or Xai Network failure resulting from unanticipated or heightened technical difficulties or + vulnerabilities, including those resulting from cyber-attacks. You agree not to hold the Company + accountable for any related losses.
++
3.3. You agree that the Company is not responsible for any Tokens or other crypto assets that you + receive, transfer, hold, stake, lose, or otherwise use or misuse in connection with the Xai + Network.
++
3.4. Legal and regulatory requirements applicable to the use of the Tokens may vary from + jurisdiction to jurisdiction. You acknowledge and agree that you are solely responsible for evaluating + the legality of using the Tokens in your jurisdiction. The Company is not responsible for determining + whether or which laws and regulations may apply to you or your use of the Tokens.
++
+
4.1. EXCEPT AS EXPRESSLY SET FORTH HEREIN, THE TOKENS AND XAI NETWORK ARE ISSUED ON AN “AS-IS” + AND “AS AVAILABLE” BASIS AND THE COMPANY DOES NOT MAKE ANY WARRANTIES WITH RESPECT TO SUCH “AS-IS” AND + “AS AVAILABLE” BASIS OR OTHERWISE IN CONNECTION WITH THESE TERMS (EXCEPT AS EXPRESSLY PROVIDED HEREIN) + AND THE COMPANY HEREBY DISCLAIMS ANY AND ALL EXPRESS, IMPLIED, OR STATUTORY WARRANTIES AND CONDITIONS, + INCLUDING ANY WARRANTIES OR CONDITIONS OF NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, AVAILABILITY, ERROR-FREE OR UNINTERRUPTED OPERATION, AND ANY WARRANTIES ARISING FROM A COURSE + OF DEALING, COURSE OF PERFORMANCE, OR USAGE OF TRADE. TO THE EXTENT THAT THE COMPANY MAY NOT, AS A + MATTER OF APPLICABLE LAW, DISCLAIM ANY IMPLIED WARRANTY OR CONDITION, THE SCOPE AND DURATION OF SUCH + WARRANTY OR CONDITION SHALL BE APPLIED TO THE MINIMUM EXTENT PERMITTED UNDER SUCH APPLICABLE + LAW.
++
4.2. IN NO EVENT SHALL THE COMPANY BE LIABLE TO YOU FOR ANY CONSEQUENTIAL, INDIRECT, INCIDENTAL, + OR SPECIAL DAMAGES OF ANY TYPE OR NATURE HOWEVER ARISING, INCLUDING, WITHOUT LIMITATION, EXEMPLARY OR + PUNITIVE DAMAGES, LOST PROFITS OR REVENUES, OR DIMINUTION IN VALUE, ARISING OUT OF OR RELATING TO THE + TOKENS OR THE XAI NETWORK, WHETHER OR NOT THE POSSIBILITY OF SUCH DAMAGES HAS BEEN DISCLOSED TO OR COULD + HAVE BEEN REASONABLY FORESEEN BY YOU, REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR + OTHERWISE) UPON WHICH THE CLAIM IS BASED. IN ADDITION, UNDER NO CIRCUMSTANCES SHALL THE COMPANY'S + AGGREGATE LIABILITY UNDER THESE TERMS EXCEED ONE-HUNDRED U.S. DOLLARS ($100.00).
++
4.3. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR + EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE LIMITATIONS SET + FORTH ABOVE MAY NOT APPLY TO YOU. IF YOU ARE DISSATISFIED WITH THE TOKENS, YOUR SOLE AND EXCLUSIVE + REMEDY IS TO DISCONTINUE USING THE TOKENS.
++
+
5.1. You agree, at your own expense, to indemnify, defend, and hold harmless the Company and its + partners and affiliates and their respective owners, members, agents, directors, officers, employees, + representatives, affiliates, successors, and assigns against any claim, suit, action, or other + proceeding from and against any and all claims, damages, liabilities, costs, and expenses, including + reasonable attorneys’ and experts’ fees, arising out of or in connection with your breach of these + Terms, your violation of any law or regulation, or your use of the Tokens. You agree to pay any and all + costs, damages, and expenses, including but not limited to reasonable attorneys’ fees and costs awarded + against or otherwise incurred by or in connection with or arising from any such claim, suit, action, or + proceeding attributable to any such claim. The Company reserves the right, at its own expense, to assume + the exclusive defense and control of any matter otherwise subject to indemnification by you, in which + event you will fully cooperate with the Company in asserting any available defense.
++
5.2. If you have a dispute with one or more users of the Node Software or other third parties, + you release the Company (and its affiliates and service providers, and each of their officers, + directors, agents, joint ventures, employees, and representatives) from all claims, demands, and damages + (actual and consequential) of every kind and nature arising out of or in any way connected with such + disputes.
++
+
6.1. All disputes, claims, and controversies, whether based on past, present, or future events, + arising out of or relating to statutory or common law claims, the breach, termination, enforcement, + interpretation, or validity of any provision of these Terms, and the determination of the scope or + applicability of your agreement to arbitrate any dispute, claim, or controversy originating from these + Terms, will be determined by binding arbitration in Tortola, the British Virgin Islands pursuant to the + BVI IAC Arbitration Rules, before a single arbitrator.
++
6.2. The arbitrator will apply the substantive law of the British Virgin Islands, excluding its + conflict or choice of law rules.
++
6.3. Nothing in these Terms will preclude the parties from seeking provisional remedies in aid of + arbitration from a court of appropriate jurisdiction.
++
6.4. A party must notify the other party of its intent to commence arbitration prior to + commencing arbitration. The notice must specify the date on which the arbitration demand is intended to + be filed, which must be at least thirty (30) days after the date of the notice. During this time period, + the parties will meet for the purpose of resolving the dispute prior to commencing arbitration. +
++
6.5. Subject to Section 6.4, each party may commence arbitration by providing to the BVI + International Arbitration Centre and the other party to the dispute a written demand for arbitration, + stating the subject of the dispute and the relief requested. 6.4, each party may commence arbitration by + providing to the BVI International Arbitration Centre and the other party to the dispute a written + demand for arbitration, stating the subject of the dispute and the relief requested.
++
6.6. Subject to the disclaimers and limitations of liability stated in these Terms, the appointed + arbitrators may award monetary damages and any other remedies allowed by the laws of the British Virgin + Islands (including the BVI IAC Arbitration Rules). In making a determination, the arbitrator will not + have the authority to modify any term of these Terms. The arbitrator will deliver a reasoned, written + decision with respect to the dispute to each party, who will promptly act in accordance with the + arbitrator’s decision. Any award (including interim or final remedies) may be confirmed in or enforced + by a state or federal court located in the British Virgin Islands. The decision of the arbitrator will + be final and binding on the parties, and will not be subject to appeal or review.
++
6.7. The party initiating the arbitration is responsible for paying the applicable filing fee. + Each party will advance one-half of the fees and expenses of the arbitrator, the costs of the attendance + of the arbitration reporter at the arbitration hearing and the costs of the arbitration facility. In any + arbitration arising out of or relating to these Terms, the arbitrator will award to the prevailing + party, if any, the costs and attorneys’ fees reasonably incurred by the prevailing party in connection + with those aspects of its claims or defenses on which it prevails, and any opposing awards of costs and + legal fees awards will be offset.
++
6.8. The parties will keep confidential the existence of the arbitration, the arbitration + proceeding, the hearing and the arbitrator’s decision, except (a) as necessary to prepare for and + conduct the arbitration hearing on the merits; (b) in connection with a court application for a + preliminary remedy, or confirmation of an arbitrator’s decision or its enforcement; (c) the Company may + disclose the arbitrator’s decision in confidential settlement negotiations; (d) each party may disclose + as necessary to professional advisors that are subject to a strict duty of confidentiality; and (e) as + applicable law otherwise requires. The parties, witnesses and arbitrator will treat as confidential and + will not disclose to any third person (other than witnesses or experts) any documentary or other + evidence produced in any arbitration, except as applicable so requires or if the evidence was obtained + from the public domain or was otherwise obtained independently from the arbitration.
++
6.9. In the case of a conflict between the provisions of this Section 6 and the BVI IAC + Arbitration Rules, the provisions of this Section 6 shall prevail.
++
6.10. To the extent permitted by applicable law, any dispute arising out of or relating to these + Terms, whether in arbitration or in court, shall be conducted only on an individual basis and not in a + class, consolidated or representative action. Notwithstanding any other provision of these Terms or the + BVI IAC Arbitration Rules, disputes regarding the interpretation, applicability or enforceability of + this class waiver may be resolved only by a court and not by an arbitrator. If this waiver of class or + consolidated actions is deemed invalid or unenforceable, neither party is entitled to + arbitration.
++
6.11. If for any reason a claim or dispute proceeds in court rather than through arbitration, + each party knowingly and irrevocably waives any right to trial by jury in any action, proceeding or + counterclaim arising out of or relating to these Terms.
++
+
7.1. These Terms are effective beginning when you accept these Terms or first claim, access or + use the Tokens and ending when terminated as set forth in Section 7.2.
++
7.2. Your right to claim, use and access the Tokens will automatically terminate in the event you + fail to comply with any of the terms and conditions of these Terms. Termination will be effective + without notice.
++
7.3. Upon termination of these Terms, you must immediately cease all use of the Tokens. Sections + 3, 4, 5, 6, 7 and 8 of these Terms shall survive any such termination.
++ +
+
8.1. Electronic Communications. By purchasing, obtaining, accessing or using the Node + Software, you consent to receive electronic communications.
++
8.2 Notices. The Company may provide you with notice and other communications via + electronic communications as permitted by Section 8.1. You may provide us with notice by sending an + email address to notices@xai.games. + All notices will be deemed effective upon dispatch. +
++
8.3 Amendments. These Terms may be modified or revised at any time, with or without prior + notice to you. The most current version of these Terms will be posted on https://sentry.xai.games/#/xai-airdrop-terms-and-conditions (the + “Website”) with the “Last Revised” date at the top. Any modifications or revisions will be + effective immediately upon posting the modifications or revisions to the Website. You shall be + responsible for reviewing and becoming familiar with any modifications or revisions. You waive any right + you may have to receive specific notice of such modifications or revisions. Purchasing, obtaining, + accessing or using the Node Software constitutes your acceptance of these Terms as modified or revised. + If you do not agree to these Terms then in effect, you must immediately discontinue access to, and use + of, the Tokens.
++
8.4 Waivers. For a waiver to be deemed effective, a waiver must be in a writing signed by + the waiving party. The failure of either party to enforce any provision of these Terms will not + constitute a waiver of that party’s rights to subsequently enforce the provision.
++
8.5 Cumulative Rights; Injunctions. The rights and remedies of the parties under these + Terms are cumulative, and each party may exercise any of its rights and enforce any of its remedies + under these Terms, along with all other rights and remedies available to it at law, in equity or + otherwise. Any material breach by a party of these Terms could cause the non-breaching party irreparable + harm for which the non-breaching party has no adequate remedies at law. Accordingly, the non-breaching + party is entitled to seek specific performance or injunctive relief for any such breach.
++
8.6 Severability. If any provision of these Terms is declared to be invalid, illegal or + unenforceable by a court of competent jurisdiction, then the validity, legality and enforceability of + the remaining provisions contained herein shall not be affected thereby and the remainder of the + provisions of these Terms shall remain valid, legal and enforceable to the fullest extent permitted by + law.
++
8.7 Force Majeure. The Company shall have no liability for any failure or delay resulting + from any condition beyond our reasonable control, including but not limited to governmental action or + acts of terrorism, earthquake, fire, flood, or other acts of God, labor conditions, power failures, + equipment failures and Internet or blockchain network disturbances.
++
8.8 Successors and Assigns.You may not transfer or assign these Terms or any rights or + obligations hereunder, by operation of law or otherwise and any such attempted assignment shall be void. + The Company reserves the right to freely transfer or assign these Terms and the rights and obligations + hereunder to any third party at any time without your consent and prior notice to you. If you object to + any such transfer or assignment, you may stop using the Node Software.
++
8.9 Relationship of the Parties. Nothing contained in these Terms shall constitute you and + the Company as members of any partnership, joint venture, association, syndicate, unincorporated + business or similar assignment as a result of or by virtue of the relationship established by these + Terms.
++
8.10 Governing Law. These Terms shall be solely and exclusively governed, construed and + enforced in accordance with the laws of the British Virgin Islands without giving effect to conflict of + law rules or principles that would cause the application of the laws of any other jurisdiction. +
++
8.11 Entire Agreement. These Terms constitute the entire agreement and understanding + between you and the Company, and supersedes all previous communications, representations or agreements, + whether written or oral, with respect to the subject matter hereof.
++
8.12 No Third-Party Beneficiaries. These Terms are not intended and shall not be construed + to create any rights or remedies in any parties other than you and the Company and other Company + affiliates, which each shall be a third-party beneficiary of these Terms, and no other person shall + assert any rights as a third-party beneficiary hereunder.
+