diff --git a/.vscode/settings.json b/.vscode/settings.json index 171c9cd97..336b6d050 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, diff --git a/address.config.js b/address.config.js index 21193a2da..12c3a4d9f 100644 --- a/address.config.js +++ b/address.config.js @@ -9,53 +9,50 @@ module.exports = { { title: 'Smart Mobility, Automotive', assets: [ - 'did:op:b4be1f60c197890bfebc041e66731a2c6f98f520169a9f38173c19e29353b4d0', // moveID Wolfsburg Smart Garage EV Charging Status Data for Compute - 'did:op:684af1448fd5c99d5e4839da4f6e206056be74defd206a29307cc68ea464557f', // Smart EV Garage Status Aggregation - 'did:op:99fda160c29d15c4c9d2216033da9594f9932176229f77cfadf53dbf12cc4dc8', // moveID Wolfsburg Smart Parking and Charging Garage Status - 'did:op:b4be1f60c197890bfebc041e66731a2c6f98f520169a9f38173c19e29353b4d0', // Road Damage Detection (FREE) - 'did:op:2e148b5c1ff12590c13bc018100743f0253f22f49cbaf7876612b2417f961789', // 01 - Vehicle Data Collection (EUR) - 'did:op:87b0133e6979419919d8526e3bac2604bd8b04d0fca43e21fb3fde67497a7860', // Traffic Object Annotation for Highway Image Data - 'did:op:f3e162d564b5a925edaf2ce9d8cb3f52347f63376f337b4c6b910d22d93f02bc', // Morning Rush Intensities / INWEVA Spitsen 2020 (RWS) - 'did:op:8c2cc9d84e76c14fdf3c833f5dd8fbeec7748ec7ec21511434fc52f30153101a' // Traffic Data for Object Annotation (RWS) + 'did:op:f892fdeb6e4aead439a992ee66322d96d625f7acfed999e633c4b5c81b0968a9', // Hamburg Urban Data + 'did:op:60345a1cffaf69e978846858760f69ebe6688e3fa1b9a21f2cdb81b82c415049', // Road Condition Short + 'did:op:4103da1b9000f90c4262b94353b23175e490f47e3fd9bf3bda440f550178f423', // Road Condition Long + 'did:op:423ae6f53c14980e871ba8109f1f493077c1691dac7a56c413a973238a90f2fa', // Hamburg Road 18 + 'did:op:61788149bc0837d0bea0ee32b04eb8bebb20c2e73e1098cfdec4807d86eddac7', // Hamburg Road 17 + 'did:op:1cccfa6b2de76b2f831183c9404675a84f12c336c2ebde87dbfad9e2b39c1295', // SH Road 16 + 'did:op:f6b81477c783e84cb9fbb0d7b57b1974b6f0a86067f2f17bbdd9f2e2dd7802a3', // SH Road 15 + 'did:op:555b7d7c03f365c9166afb4524fe5e332f9794fbeb5e9770fe47d1da9adff9c4', // SH Road 14 + 'did:op:aea8d72bd0ea2f2633599caa69488b212ecaa7fb0b44abb0e3c58494da143b95', // SH Road 13 + 'did:op:1501d13f41eca77a6a5449a1ecf5d8ff5ca4a1881889af5b8912629ab71856e5', // zone + 'did:op:14f5679644249e7889b85d9964abb96eb31eb5537651d3458b9616d29450772c' // ArcGIS ] }, { title: 'Manufacturing, Industry 4.0', assets: [ - 'did:op:6fe6ae5f546adf88606a0da158389f44a0801c3fe87ddb6e1f63e9120e07989c', // The Digital Project Management Office (DigitalPMO) - 'did:op:ac74139fa102d32f326ccdab3727a95299f1c2b6add9158385439e5b06810833', // AutoTiM Machine Learning Application - 'did:op:271ebac61d2881e83116c285173abbdb99bfd8abe6cb0661f7bf070eea0c25c9', // AutoTiM - Basic Motion - 'did:op:dd456754dc659ef111cc5fa87662cda1a67ca390c3f86fee4d5592ecb3bbffd5', // Supplier No. 1 - Component Data for Part Matching - 'did:op:bd2d41775c5041361d899f30734920af6383c3ca5838d06fa4649cba9c94192e', // Supplier No. 2 - Component Data for Part Matching - 'did:op:adb67df12b41a4089e0d3f4933bab5254bb905657b92b35bcd1cbcefc836fee5', // Component Matching Aggregation Algorithm - 'did:op:1ec479af4e54ca036b1a99d95a0caa4ac95dccc1f6d4d46290f5e1c8b9e24097', // Data Part No. 818 - 'did:op:bd74d6a281ba414de2b4d8ee4087277575f95676bd74e20ee9e2960c9c38d7c5', // ToolCondition-Algorithm - EuProGigant - 'did:op:a3da777fd3711da36d5e1e5904a8c074b6e8df51549db2b6c8a5bc7ec3ab60cf', // CO2-Estimate Algorithm - EuProGigant - 'did:op:104f5b221177ced601fb501e992fac93b762946e3636e6b897af2e08803dd0e6', // Quality Data of IFT TU Wien Material Number 00.954669 Serial Number 1 - 'did:op:bb31dedd26cbf37c83f71cc427f5a27dbf0f8190bcb5724b7fbe8c7895f39e21', // Quality Data of PTW TUDa Material Number 00.954668 Serial Number 1 - 'did:op:bacaa9a4f1d85ca0d597e8b2454280ed137b77c81a24ff1bcaf367172d44a2b2' // Data Part No. 819 + 'did:op:ec6abd810b3f3d9f3cf7fbbfd3462e289ee9700f0a1ca492adaf6a8c7d0bdce7', // EuPro 882 + 'did:op:291ac52240e7c422aa8e67f9369efa7b30cbdc3f494922f1b646a8091a97fdb6', // CO2 + 'did:op:c524a2ad8aab175315cdbb106289114079637529af988874c1a31e9a179e4540', // Condition Monitoring + 'did:op:3bee178505bf07494aeaafe67b5d98b5ebd0986bb56d6673e718f8ac4e090c8a', // EuPro 881 + 'did:op:daecfe8261713a3854bdb59de6e6eba1e614dae3a40f436f955f2a94559a88ca', // EuPro 880 + 'did:op:f203cde14dc2fa67b58156009463cae1b6679b76e6387da8c43951846788d1a8', // Defects Algo + 'did:op:535c60bdf170de37d818f69765f1382dd680b63f245b1a30b897b46ddc753064', // Defects Data + 'did:op:8b6e04b2f06290c75926756f814413c134a4fb701c607824fd7f7877f0292483', // AAS + 'did:op:e75f58835ca5ac41bdd3464a4229108e1f74e81b71bd691ecca37ac33a79a6e8', // AAS + 'did:op:ba056765418629a645d1cea3b6254d1ae8f374fd893edba6c4ddee5f097fefc2', // AAS + 'did:op:ea274c721f8c7d36787401dbe7b0fd83670ee50a83aee9d7f1e49060257aa618', // AAS + 'did:op:77cb936c42ca521393cdb423926c022b0cbb4442aff2b63a9cfecb2c74941843', // AAS + 'did:op:b5c7eb3887469a532a021020365259055084af3d7bd047a8a79a865ee848598e' // AAS ] }, { title: 'Text Analysis, Language Processing, and more', assets: [ - 'did:op:13731acde4143a7dc1c0dcfbd999b7574ea5f1ee75ba5bb77e2c1485601d2b4a', // CrossAsia Probability Calculation Algorithm for Topics in Time - 'did:op:21d53b2a3e227bf57c6ed9d1823ff6a2149f429346648e503146e2ff712aa39b', // CrossAsia Probability Calculation Data for Topics in Time - 'did:op:dc0765630d1ca3fbfb8f03d7ef63743ab5c4b585b599723476c8122106f34271', // CrossAsia Text Analysis - State Library of Berlin - 'did:op:bff53f8c36f2156cff80e5fa18f39d76cb3c52617694a7cde4635826209c259c', // CrossAsia Text Analysis Algorithm - 'did:op:1c77a8c28444f5405d8a23ad88d5579c12be574712378ca5b5a6385730412e1c', // BIMKIT Algorithm for Text Localization in Architectural Floor Plans - 'did:op:f231ad11244f2c2e86d694a24765d49dccdaddf1b48b4b0b74ebd586a44bac39', // Die Handelswege und Verkehrsmittel der Gegenwart - 'did:op:b6e20571d7b403895aed65e0d5156e4a1dad809c969c38c6fc2154bb26c33d12', // Stanley's sämtliche Reisen in Afrika - 'did:op:2add32a20d0ee146c51424907c1a4397f50d985cb88f0738c79cc5602e2b70a7' // Eines deutschen Matrosen Nordpolarfahrten + 'did:op:73c511711d6ad19794cd3797149e3a9fbd6d615246ae2be8d56938985b715ed4', // Cross Asia Text + 'did:op:fca47f74bd99d3a3c523bc3242497df4a098ceb028940428db18200c26e74995', // Cross Asia Algo + 'did:op:ee381eb15d25d27b663565984601699473afeba4ba2efa43d9b6f9c88827f625', // XAsia Prob Data + 'did:op:a63864d02fbda42fa945eb071093bfd69e2b9de2e083382028c531d468996875' // XAsia Prob Algo ] }, { title: 'Finance, Business Analytics, and more', assets: [ - 'did:op:c72269ff3ce9fae795af4371d36aec556f76df882f12d79f54a6bab55fe58ea4', // GraphQL Demo - Download (EUROe) - 'did:op:b4ee67dfe05f0585506b648c280459f72700b6023daf823fa819487254e1d448', // GraphQL Demo - Compute (EUROe) - 'did:op:b41ec3fbb97bf0a59a5ada5c5bf3f4432f548cadd28ca07884168068cfe30cae', // GraphQL Demo - Download (FREE) - 'did:op:020543f761a65f3f6831730fa865d606f23d33c547e2c2596407208b573f10a7' // GraphQL Demo - Product Quantity Computation Algorithm + 'did:op:ab4b4a4953b8fddb69c5a68ce12c10727a002cc160fb9d0dd37aadbfb8de95af' // PMO ] } ], diff --git a/app.config.js b/app.config.js index 4ac3cca72..f7f767b88 100644 --- a/app.config.js +++ b/app.config.js @@ -11,8 +11,7 @@ module.exports = { // const { appConfig } = useMarketMetadata() // return appConfig.metadataCacheUri metadataCacheUri: - process.env.NEXT_PUBLIC_METADATACACHE_URI || - 'https://aquarius510.v4.delta-dao.com', + process.env.NEXT_PUBLIC_METADATACACHE_URI || 'https://aquarius.pontus-x.eu', complianceUri: process.env.NEXT_PUBLIC_COMPLIANCE_URI || @@ -106,5 +105,9 @@ module.exports = { statusEndpoints: { 100: 'https://status.genx.delta-dao.com/api/check-blocks' } + }, + + faucet: { + baseUri: 'https://faucet.api.pontus-x.eu' } } diff --git a/chains.config.js b/chains.config.js index 364b110dd..31f02e6c0 100644 --- a/chains.config.js +++ b/chains.config.js @@ -4,14 +4,14 @@ const chains = [ { chainId: 100, - isDefault: true, + isDefault: false, isCustom: true, network: 'genx', metadataCacheUri: 'https://aquarius510.v4.delta-dao.com', nodeUri: 'https://rpc.genx.minimal-gaia-x.eu', providerUri: 'https://provider.v4.genx.delta-dao.com', subgraphUri: 'https://subgraph.v4.genx.minimal-gaia-x.eu', - explorerUri: 'https://explorer.pontus-x.eu', + explorerUri: 'https://explorer.genx.pontus-x.eu', oceanTokenAddress: '0x0995527d3473b3a98c471f1ed8787acd77fbf009', oceanTokenSymbol: 'OCEAN', fixedRateExchangeAddress: '0xAD8E7d2aFf5F5ae7c2645a52110851914eE6664b', @@ -37,38 +37,47 @@ const chains = [ chainId: 32456, isDefault: false, isCustom: true, - network: 'pontusx', - metadataCacheUri: 'https://aquarius.dev.pontus-x.eu', - nodeUri: 'https://rpc.dev.pontus-x.eu', - providerUri: 'https://provider.dev.pontus-x.eu', - subgraphUri: 'https://subgraph.dev.pontus-x.eu', - explorerUri: 'https://explorer.dev.pontus-x.eu/testnet/pontusx', - oceanTokenAddress: '0xdF171F74a8d3f4e2A789A566Dce9Fa4945196112', + network: 'pontusx-devnet', oceanTokenSymbol: 'OCEAN', + oceanTokenAddress: '0xdF171F74a8d3f4e2A789A566Dce9Fa4945196112', + nftFactoryAddress: '0xFdC4a5DEaCDfc6D82F66e894539461a269900E13', fixedRateExchangeAddress: '0x8372715D834d286c9aECE1AcD51Da5755B32D505', dispenserAddress: '0x5461b629E01f72E0A468931A36e039Eea394f9eA', + opfCommunityFeeCollector: '0x1f84fB438292269219f9396D57431eA9257C23d4', startBlock: 57428, transactionBlockTimeout: 50, transactionConfirmationBlocks: 1, transactionPollingTimeout: 750, gasFeeMultiplier: 1.1, - nftFactoryAddress: '0xFdC4a5DEaCDfc6D82F66e894539461a269900E13', - opfCommunityFeeCollector: '0x1f84fB438292269219f9396D57431eA9257C23d4', - veAllocate: '0x3fa1d5AC45ab1Ff9CFAe227c5583Ec0484b54Ef9', - veOCEAN: '0x061955B6980A34fce74b235f90DBe20d76f087b1', - veDelegation: '0x96E3aE4247a01C3d40a261df1F8ead70E32E7C0c', - veFeeDistributor: '0x35F1e6765750E874EB9d0675393A1A394A4749b4', - veDelegationProxy: '0x51B1b14b8bfb43a2fB0b49843787Ca440200F6b7', - DFRewards: '0x6BB265D6c08b7E7432dF9B3D3499beEAA9856232', - DFStrategyV1: '0x98FBBB6523441b960E4D1d9A98601332092F4aB6', - veFeeEstimate: '0xCFeF55c6ae4d250586e293f29832967a04A9087d', - providerAddress: '0x68C24FA5b2319C81b34f248d1f928601D2E5246B' + providerUri: 'https://provider.dev.pontus-x.eu', + providerAddress: '0x68C24FA5b2319C81b34f248d1f928601D2E5246B', + metadataCacheUri: 'https://aquarius.pontus-x.eu', + nodeUri: 'https://rpc.dev.pontus-x.eu', + subgraphUri: 'https://subgraph.dev.pontus-x.eu', + explorerUri: 'https://explorer.pontus-x.eu/devnet/pontusx' }, { - chainId: 80001, - isDefault: false, - metadataCacheUri: 'https://aquarius510.v4.delta-dao.com', - providerUri: 'https://provider.dev-v4.mumbai.delta-dao.com' + chainId: 32457, + isDefault: true, + isCustom: true, + network: 'pontusx-testnet', + oceanTokenSymbol: 'OCEAN', + oceanTokenAddress: '0x5B190F9E2E721f8c811E4d584383E3d57b865C69', + nftFactoryAddress: '0x2C4d542ff791890D9290Eec89C9348A4891A6Fd2', + fixedRateExchangeAddress: '0xcE0F39abB6DA2aE4d072DA78FA0A711cBB62764E', + dispenserAddress: '0xaB5B68F88Bc881CAA427007559E9bbF8818026dE', + opfCommunityFeeCollector: '0xACC8d1B2a0007951fb4ed622ACB1C4fcCAbe778D', + startBlock: 82191, + transactionBlockTimeout: 50, + transactionConfirmationBlocks: 1, + transactionPollingTimeout: 750, + gasFeeMultiplier: 1.1, + providerUri: 'https://provider.test.pontus-x.eu', + providerAddress: '0x9546d39CE3E48BC942f0be4AA9652cBe0Aff3592', + metadataCacheUri: 'https://aquarius.pontus-x.eu', + nodeUri: 'https://rpc.test.pontus-x.eu', + subgraphUri: 'https://subgraph.test.pontus-x.eu', + explorerUri: 'https://explorer.pontus-x.eu/testnet/pontusx' } ] diff --git a/content/onboarding/steps/faucet.json b/content/onboarding/steps/faucet.json new file mode 100644 index 000000000..efb3c8cb8 --- /dev/null +++ b/content/onboarding/steps/faucet.json @@ -0,0 +1,5 @@ +{ + "title": "Request test tokens", + "subtitle": "You can claim some test tokens for your address once every 12 hours.", + "body": "Click on the button below to request EUROe test payment tokens. You will receive both, the EUROe labelled network token as well as the payment token." +} diff --git a/content/onboarding/steps/importCustomTokens.json b/content/onboarding/steps/importCustomTokens.json index 08d1c96cc..45d57a005 100644 --- a/content/onboarding/steps/importCustomTokens.json +++ b/content/onboarding/steps/importCustomTokens.json @@ -1,6 +1,6 @@ { "title": "Import custom tokens", "subtitle": "Before you can claim some test tokens you need to import the token's contract address to MetaMask", - "body": "Click on the button below to import the OCEAN and EUROe custom test tokens.", + "body": "Click on the button below to import the EUROe test payment token. Please be aware, that Pontus-X is also using a EUROe labelled network token to facilitate fee payments.", "image": "/images/onboarding/import_ocean_token.png" } diff --git a/content/pages/faucet.json b/content/pages/faucet.json new file mode 100644 index 000000000..228ae64f6 --- /dev/null +++ b/content/pages/faucet.json @@ -0,0 +1,9 @@ +{ + "title": "Pontus-X Faucet", + "description": "Request tokens for the Pontus-X Networks", + "input": { + "label": "Your Pontus-X address", + "placeholder": "0x28080F654eED6CC00e8b16F4841E92CD0c2C0778", + "buttonLabel": "Get tokens" + } +} diff --git a/content/pages/home/content.json b/content/pages/home/content.json index 5d8fa3dd4..ee9779af3 100644 --- a/content/pages/home/content.json +++ b/content/pages/home/content.json @@ -1,22 +1,22 @@ { "teaser": { - "title": "Pontus-X: Data Sovereignty for Europe", + "title": "Pontus-X: Technical Data Sovereignty", "text": "Pontus-X represents the next generation of data infrastructure: an **open, transparent and secure digital ecosystem**, where data and services can be made available, collated and shared in an environment of trust. The architecture of Pontus-X is based on Gaia-X and on the principle of decentralization." }, "paragraphs": [ { "title": "The Gaia-X Powered Ecosystem on DLT", - "body": "The principle of decentralization is a perfect fit for **Distributed Ledger Technology**. [Ocean Protocol](https://oceanprotocol.com) is a fully open-source technology stack, leveraging DLT and decentralization, aiming to give control back to the owners of data services. Pontus-X is built on top of Ocean Protocol showcasing how the Gaia-X Powered Ecosystem on DLT and Ocean Protocol can look like, already today.", + "body": "The principle of decentralization is a perfect fit for **Distributed Ledger Technology**. [Ocean Enterprise](https://www.oceanenterprise.io/) is a fully open-source technology stack, leveraging DLT and decentralization, aiming to give control back to the owners of data services. Pontus-X is built on top of [Oasis Network](https://oasisprotocol.org/) showcasing how future industrial digital service ecosystems work today.", "cta": "Learn More", - "ctaTo": "https://docs.pontus-x.eu/docs/Community/Introduction", - "image": "/images/genx_validators.webp" + "ctaTo": "https://docs.pontus-x.eu/docs/introduction/overview", + "image": "/images/ecosystem.webp" }, { "title": "Compute-to-Data and its benefits", - "body": "One core concept of Ocean Protocol is the **Compute-to-Data (CtD)** approach. Compute-to-Data is the functionality that solves the current trade-off between the benefits of using private data and the risks of exposing it. It allows data consumers to run compute jobs on private data while the data stays on-premise with the data provider.", + "body": "One core concept of Ocean Enterprise is the **Compute-to-Data (CtD)** approach. Compute-to-Data is the functionality that solves the current trade-off between the benefits of using private data and the risks of exposing it. It allows data consumers to run compute jobs on private data while the data stays on-premise with the data provider.", "cta": "Learn More", - "ctaTo": "https://youtu.be/W8PuM0lSm4s", - "image": "/images/ctd_benefits.png" + "ctaTo": "https://docs.pontus-x.eu/docs/technical-architecture/architecture-overview", + "image": "/images/ctd_benefits.webp" } ] } diff --git a/content/site.json b/content/site.json index b1195ff4c..c024e868e 100644 --- a/content/site.json +++ b/content/site.json @@ -3,7 +3,7 @@ "siteTagline": "Streamlined interoperability across digital service ecosystems.", "siteUrl": "https://portal.pontus-x.eu", "siteImage": "/share.png", - "copyright": "All Rights Reserved. Powered by [Gaia-X](https://gaia-x.eu/) and [Ocean Protocol](https://oceanprotocol.com). Built by [deltaDAO](https://delta-dao.com).", + "copyright": "All Rights Reserved. Powered by [Gaia-X](https://gaia-x.eu/) and [Ocean Enterprise](https://www.oceanenterprise.io/). Built by [deltaDAO](https://delta-dao.com).", "menu": [ { "name": "Catalogue", @@ -17,6 +17,11 @@ "name": "Verify", "link": "/verify" }, + { + "name": "Faucet", + "link": "/faucet" + }, + { "name": "Log", "link": "https://explorer.pontus-x.eu/" @@ -42,12 +47,20 @@ }, { "name": "COOPERANTS", - "link": "https://cooperants.pontus-x.eu/", + "link": "https://federator.cooperants.info/marketplace", "description": "Gaia-X Lighthouse COOPERANTS is the collaborative alliance in the Aeronautics and space sector that solves pressing digital collaboration problems by creating a common data space.", "image": "cooperants-logo.webp", "category": "manufacturing", "isLive": true }, + { + "name": "ACCURATE", + "link": "https://accurate.pontus-x.eu", + "description": "Gaia-X Lighthouse ACCURATE aims to boost the competitiveness of European manufacturing companies with DSS and Manufacturing as a Service frameworks. ", + "image": "accurate-logo.webp", + "category": "manufacturing", + "isLive": true + }, { "name": "Airbus", "link": "https://airbus.pontus-x.eu/", @@ -57,11 +70,11 @@ "isLive": true }, { - "name": "Service-Meister", - "link": "https://servicemeister.pontus-x.eu/", - "description": "An AI-based Service Ecosystem for Technical Service in the Age of Industry 4.0.", - "image": "service-meister-logo.webp", - "category": "AI", + "name": "FIWARE", + "link": "https://fiware-marketplace-a4eqd.ondigitalocean.app/", + "description": "A curated framework of Open Source Platform components to accelerate the development of Smart Solutions.", + "image": "logo-fiware-full.webp", + "category": "smart city", "isLive": true }, { @@ -89,36 +102,44 @@ "isLive": true }, { - "name": "EnergySHR", - "link": "https://www.energyshr.nl/", - "description": "A platform for sharing (SHR) datasets and AI algorithms that contribute to solving challenges of the energy transition.", - "image": "energy-shr-logo.webp", - "category": "energy", + "name": "UdL Research Data Space", + "link": "https://dataspace.angliru.udl.cat/", + "description": "An open research platform following the FAIR guiding principles of findability, accessibility, interoperability and reusability, while guaranteeing data sovereignty.", + "image": "udl-logo.webp", + "category": "agriculture", "isLive": true }, { - "name": "Clinical Insights Exchange", - "link": "https://cix.triall.io/", - "description": "A federated data platform to change clinical data assets and analytics services in a trusted, privacy-friendly environment.", - "image": "clinical-insights-exchange-logo.webp", - "category": "health", + "name": "Agrifood TEF", + "link": "http://dataspace.agrifoodtef.eu/", + "description": "The European Testing and Experimentation Facilities for Agrifood Innovation.", + "image": "agrifoodTEF.webp", + "category": "agriculture", "isLive": true }, { - "name": "UdL Research Data Space", - "link": "https://dataspace.angliru.udl.cat/", - "description": "An open research platform following the FAIR guiding principles of findability, accessibility, interoperability and reusability, while guaranteeing data sovereignty.", - "image": "udl-logo.webp", + "name": "Polish Agriculture Data Space", + "link": "https://dataspaces.psnc.pl/", + "description": "An open data space platform for sharing and marketing agri-related datasets guaranteeing data sovereignty.", + "image": "PSNC.webp", "category": "agriculture", "isLive": true }, { - "name": "Under Construction: ACCURATE", - "link": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/how-to-participate/org-details/999999999/project/101138269/program/43108390/details", - "description": "Gaia-X Lighthouse ACCURATE aims to boost the competitiveness of European manufacturing companies with DSS and Manufacturing as a Service frameworks. ", - "image": "accurate-logo.webp", - "category": "manufacturing", - "isLive": false + "name": "EnergySHR", + "link": "https://www.energyshr.nl/", + "description": "A platform for sharing (SHR) datasets and AI algorithms that contribute to solving challenges of the energy transition.", + "image": "energy-shr-logo.webp", + "category": "energy", + "isLive": true + }, + { + "name": "Service-Meister", + "link": "https://servicemeister.pontus-x.eu/", + "description": "An AI-based Service Ecosystem for Technical Service in the Age of Industry 4.0.", + "image": "service-meister-logo.webp", + "category": "AI", + "isLive": true }, { "name": "deltaDAO AI marketplace", @@ -131,13 +152,13 @@ ] } ], - "announcement": "", + "announcement": "The GEN-X network is deprecated and will be sunset on September 30, 2024. Please [migrate to the Pontus-X networks](https://docs.pontus-x.eu/docs/use-cases/migration-guide).", "devPreviewAnnouncement": "You are visiting the SITE-TITLE-PLACEHOLDER Developer Preview. Please note that some functionalities are in beta and may not work as expected. Visit the [SITE-TITLE-PLACEHOLDER portal](SITE-LINK-PLACEHOLDER) instead.", "warning": { "ctd": "Please note that Compute-to-Data is still in alpha phase." }, "footer": { - "subtitle": "data economy solutions - GDPR compliant", + "subtitle": "Transforming Data Act Compliance into Scalable Monetization Opportunities", "copyright": "Built by [deltaDAO](https://delta-dao.com)", "privacyTitle": "Privacy", "content": [ diff --git a/networksMetadata.config.js b/networksMetadata.config.js index 30d9e15ee..7f1d90617 100644 --- a/networksMetadata.config.js +++ b/networksMetadata.config.js @@ -19,7 +19,7 @@ const networksMetadata = [ explorers: [ { name: 'GEN-X Testnet Explorer', - url: 'https://explorer.pontus-x.eu', + url: 'https://explorer.genx.pontus-x.eu', standard: '' } ] @@ -27,7 +27,7 @@ const networksMetadata = [ { chainId: 32456, networkId: 32456, - name: 'Pontus-X Testnet', + name: 'Pontus-X Devnet', chain: 'Pontus-X', rpc: ['https://rpc.dev.pontus-x.eu'], faucets: [], @@ -38,10 +38,32 @@ const networksMetadata = [ }, infoURL: 'https://docs.pontus-x.eu', shortName: 'Pontus-X', + explorers: [ + { + name: 'Pontus-X Devnet Explorer', + url: 'https://explorer.pontus-x.eu/devnet/pontusx', + standard: '' + } + ] + }, + { + chainId: 32457, + networkId: 32457, + name: 'Pontus-X Testnet', + chain: 'Pontus-X', + rpc: ['https://rpc.test.pontus-x.eu'], + faucets: [], + nativeCurrency: { + name: 'EUROe', + symbol: 'EUROe', + decimals: 18 + }, + infoURL: 'https://docs.pontus-x.eu', + shortName: 'Pontus-X', explorers: [ { name: 'Pontus-X Testnet Explorer', - url: 'https://explorer.dev.pontus-x.eu/testnet/pontusx', + url: 'https://explorer.pontus-x.eu/testnet/pontusx', standard: '' } ] diff --git a/package-lock.json b/package-lock.json index d0389a8dd..e6272215c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5116,6 +5116,36 @@ "resolved": "https://registry.npmjs.org/@next/env/-/env-13.0.5.tgz", "integrity": "sha512-F3KLtiDrUslAZhTYTh8Zk5ZaavbYwLUn3NYPBnOjAXU8hWm0QVGVzKIOuURQ098ofRU4e9oglf3Sj9pFx5nI5w==" }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.5.tgz", + "integrity": "sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.5.tgz", + "integrity": "sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@next/swc-darwin-arm64": { "version": "13.0.5", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.5.tgz", @@ -5131,6 +5161,156 @@ "node": ">= 10" } }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.5.tgz", + "integrity": "sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-freebsd-x64": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.5.tgz", + "integrity": "sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.5.tgz", + "integrity": "sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.5.tgz", + "integrity": "sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.5.tgz", + "integrity": "sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.5.tgz", + "integrity": "sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.5.tgz", + "integrity": "sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.5.tgz", + "integrity": "sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.5.tgz", + "integrity": "sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.5.tgz", + "integrity": "sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -57272,186 +57452,6 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.5.tgz", - "integrity": "sha512-YO691dxHlviy6H0eghgwqn+5kU9J3iQnKERHTDSppqjjGDBl6ab4wz9XfI5AhljjkaTg3TknHoIEWFDoZ4Ve8g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.5.tgz", - "integrity": "sha512-ugbwffkUmp8cd2afehDC8LtQeFUxElRUBBngfB5UYSWBx18HW4OgzkPFIY8jUBH16zifvGZWXbICXJWDHrOLtw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.5.tgz", - "integrity": "sha512-SfigOKW4Z2UB3ruUPyvrlDIkcJq1hiw1wvYApWugD+tQsAkYZKEoz+/8emCmeYZ6Gwgi1WHV+z52Oj8u7bEHPg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-freebsd-x64": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.5.tgz", - "integrity": "sha512-0NJg8HZr4yG8ynmMGFXQf+Mahvq4ZgBmUwSlLXXymgxEQgH17erH/LoR69uITtW+KTsALgk9axEt5AAabM4ucg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.5.tgz", - "integrity": "sha512-Cye+h3oDT3NDWjACMlRaolL8fokpKie34FlPj9nfoW7bYKmoMBY1d4IO/GgBF+5xEl7HkH0Ny/qex63vQ0pN+A==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.5.tgz", - "integrity": "sha512-5BfDS/VoRDR5QUGG9oedOCEZGmV2zxUVFYLUJVPMSMeIgqkjxWQBiG2BUHZI6/LGk9yvHmjx7BTvtBCLtRg6IQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.5.tgz", - "integrity": "sha512-xenvqlXz+KxVKAB1YR723gnVNszpsCvKZkiFFaAYqDGJ502YuqU2fwLsaSm/ASRizNcBYeo9HPLTyc3r/9cdMQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.5.tgz", - "integrity": "sha512-9Ahi1bbdXwhrWQmOyoTod23/hhK05da/FzodiNqd6drrMl1y7+RujoEcU8Dtw3H1mGWB+yuTlWo8B4Iba8hqiQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.5.tgz", - "integrity": "sha512-V+1mnh49qmS9fOZxVRbzjhBEz9IUGJ7AQ80JPWAYQM5LI4TxfdiF4APLPvJ52rOmNeTqnVz1bbKtVOso+7EZ4w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.5.tgz", - "integrity": "sha512-wRE9rkp7I+/3Jf2T9PFIJOKq3adMWYEFkPOA7XAkUfYbQHlDJm/U5cVCWUsKByyQq5RThwufI91sgd19MfxRxg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.5.tgz", - "integrity": "sha512-Q1XQSLEhFuFhkKFdJIGt7cYQ4T3u6P5wrtUNreg5M+7P+fjSiC8+X+Vjcw+oebaacsdl0pWZlK+oACGafush1w==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.5.tgz", - "integrity": "sha512-t5gRblrwwiNZP6cT7NkxlgxrFgHWtv9ei5vUraCLgBqzvIsa7X+PnarZUeQCXqz6Jg9JSGGT9j8lvzD97UqeJQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } } } } diff --git a/pontusxAddresses.json b/pontusxAddresses.json index c45d4947e..08fd9dc81 100644 --- a/pontusxAddresses.json +++ b/pontusxAddresses.json @@ -38,7 +38,6 @@ "0x8d4198E9af22863d4269dDA6a41eF2BfA187AbAc": "deltaDAO AG", "0xb4026ac3562245bB0DAb9205D698Ab0410e3d723": "deltaDAO AG", "0x24D68bFBA0fB06ccFfD21dC3a5c0B65207Bd479a": "deltaDAO AG", - "0xFB7Cb9F2E15F3935B22FB9846d69b46bD31edf07": "deltaDAO AG", "0xa51815143e6C578D3c27A7b6fA6E4C1Dfcac555C": "deltaDAO AG", "0x6432956a98E522F1B8a73a45245a5C6ff2c7f8f1": "deltaDAO AG", "0xD1Cb3E73a7bC632d2279114AA2783dcaD06517ca": "deltaDAO AG", @@ -46,7 +45,7 @@ "0x4c7BfE3D6278eb996FC13c5f748bC7b1dBe593D8": "deltaDAO AG", "0x4A806a4851472F7cFd579d3FF5465F03c3c2B5d4": "PTW - TU Darmstadt", "0x21CF19e1FaF3A62f82B432f82152e8c5C0FdBdaF": "PTW - TU Darmstadt", - "0x9f4ceE0eBD03a1e9E4DcffaF876873d7a3e9595c": "PTW - TU Darmstadt", + "0x9f4ceE0eBD03a1e9E4DcffaF876873d7a3e9595c": "AMIDS", "0x6E7bec8715955B6Cc90A5A1767cd981b90C5a245": "PTW - TU Darmstadt", "0x81336c245712DbF0E971de5463173bCaA9826d84": "IONOS Cloud", "0x56eA3Cc92144Db3bA2bdE25131F40c7B98F7eD32": "Exoscale", @@ -73,6 +72,8 @@ "0xa702032E187E6A53EAddC28a735B414220712689": "Software AG", "0x0a477f6297413f20C4fBc15F93e34dacE4136123": "Software AG", "0x586000e6DA330E140b11a4aeEbb81963d67F336b": "TU Wien", + "0x5c0bADfeEaE06699ABa04f465D1Fc360e6D38779": "TU Wien", + "0xBA87B2E7F71013Fe6561a877928EA265531B06d1": "TU Wien", "0xf596D17C4a3A5c92c4721627B9e5E5064651BF46": "Materna SE", "0xE90e1f337cBBaeD2bf30dD66165246e477F59158": "Materna SE", "0x3CEA8fBCbD1c745E081fD3937C18eE0b6Cc3f1b1": "Airbus", @@ -85,7 +86,7 @@ "0xe3Df4851c094f5F6F1AC9AbfA4FC2075276195Ec": "Peaq", "0xB21282F443EB0D490819d98F2976758af5C979B3": "Datarella", "0x0aec046a558F13Ff18aAEc5E6f76084185358cdf": "Datarella", - "0x6fE8aD445AD86b3d1325F79955Ef28d6e9cb2258": "Bosch", + "0x6fE8aD445AD86b3d1325F79955Ef28d6e9cb2258": "Robert Bosch GmbH", "0x51Decd187744bCfAD1BAb0A3E71dD68fAC0ba478": "TU Dortmund", "0xa98A6eefbAE870b88a9C7A43f4b50066A01c93b6": "RWS", "0x9dfbda23b65efB1c836828D74a96eB8528A60f3C": "Craftworks", @@ -187,5 +188,196 @@ "0xf9eaebd346E9D414f4D4210CB12e43cc226038cF": "DLR GfR mbH", "0xdbe749D939ea958aC64A5bdf163B05096E260572": "Valispace GmbH", "0xAE823B7a6ad5b79da6d180Dbe91E7C810abAcCA4": "grandcentrix GmbH", - "0x2B9C7E0d7Be68ec6b519Dad050CD0A4bf130B6A4": "DIO" + "0x2B9C7E0d7Be68ec6b519Dad050CD0A4bf130B6A4": "DIO", + "0x8e8D96aD41025EAFE3D4C198afca6c1eb5EB7a32": "SSC-Services GmbH", + "0x689aB080FeF2e5D7C3e434E4f383d0Cf266F5F26": "enviroCar-01", + "0xdd0a0278f6BAF167999ccd8Aa6C11A9e2fA37F0a": "Approve EUROe", + "0xdCa2bf6c67d7ffc8003B62bE3517b45506Ca2950": "XAsia Probability Data", + "0x90A5C7b01A19D451056086789b7932bfd393EADC": "XAsia Probability", + "0x952D30877699598e10fCAF57D1728d1D08cCf626": "OCR Test 1", + "0xF9be108f1e6D1C053273b87f6eE1cb6B6AdCf615": "XAsia Data", + "0x744a5B098dbf7FD7c4326F9424C29Fdd63921f97": "XAsia Analysis", + "0x5C2867c3862cC9fA134fE3441354A877262b4D63": "Digital PMO", + "0x629A5175d4ee48AC7F9F4b05F92B9714d38C445a": "Detect Software", + "0xf2204753Cbf117622900Ac62eA97Fd5FE1c5855A": "Defect Imageset 1 v2", + "0xef0E7512F7AF5d4254eA39c7295D411bb3b73321": "CO2 Estimate", + "0xe6b1b66E6f2610B76e92aF9EEeE94a3a153fb733": "EuProGigant 820C", + "0x4FD0745e945AE67FDbbD2935d8F434c0cc3331f7": "EuProGigant 821C", + "0xD73b05792607dB02C7d5b280C8cc51D1F5cB0aeB": "EuProGigant 824C", + "0xCBb032a8E5862981eFfCD8883cdf3871e58BC124": "EuProGigant 829C", + "0x7a79678fB31C855B382797e029b7f517a6B581A1": "EuProGigant 830C", + "0x59Ba45B05F68b95B57e69D0d391aF732B3c241a0": "EuProGigant 844C", + "0x269D6c8c3741c86B318493c41F186994956B8dd8": "EuProGigant 846C", + "0x401fABA45ad4D66095Ad394f701499B920392308": "EuProGigant 847C", + "0x7210fA5f4F82b66564181699C8Cb09A1FdD7D474": "EuProGigant 848C", + "0x06815Dc89b8d804935447abB3EcF78e588ED4FeD": "EuProGigant 849C", + "0x94E6892daBBb49373199744eE694CbC6128c4a16": "EuProGigant 850C", + "0x83565B4fD5C24aa8075671BeC7d6463baa7D6554": "EuProGigant 851C", + "0x46B08D505195F4826797dC67D315dEfa77E08C92": "EuProGigant 853C", + "0x0A1d8040C1CCe0597586e5CB033737E12ad1F178": "EuProGigant 854C", + "0x5217fC46348C6404Ed45A06DFe38374263C6Dac1": "EuProGigant 855C", + "0xdDdB40FF8b2971EB7D87AFdFe189Ab814Dd36c88": "EuProGigant 856C", + "0x218F13bB2d52CE5B9Eaa440B923FC738e916706F": "EuProGigant 857C", + "0xbCd8c5eEC87bb67f61C0D7c61bd1e144667a97d7": "EuProGigant 858C", + "0x721c13C16914b1Dcc9f16Ca7F36443E3FF1f669d": "EuProGigant 880C", + "0x4800A8709656D23707260831552252C28D71B7A3": "EuProGigant 881C", + "0xA1C749aA0b77D129c181Cb7C7bDCB0D677AA5679": "EuProGigant 882C", + "0xbB340Bb7211AF5eE61DF181CAD3c46E5cce7C18B": "Map Service HH 01", + "0x085BD42cFf8a197866635F24200d34BEa2E562e7": "moveID RCM 02", + "0xE598D4f268253c933db79CdE21eed9ccd7C06AEA": "moveID RCM 01", + "0x4E0d0d9442036Ab25DD0318Ea14d1652b5e0B4Ff": "moveID Images 18", + "0x382045266FB802c261d9755E7724594753DD611d": "moveID Images 17", + "0xfe93047A10e4540977386004bF2863D4230639C2": "moveID Images 16", + "0xbEe092Bb89C7B167D6E63E952d15e53D3B08cA45": "moveID Images 15", + "0x998aB7f4d9620FD1DBBF12272435caE458D16e1A": "moveID Images 14", + "0x56163d00093bDdA803Cb826DBB563f4c5Bb2b1B2": "moveID Images 13", + "0x411b68263ece6f7179Eec3F537F4a1981d075ec0": "moveID Images 12", + "0x28FAf2743f21AA0EAE14a37A4daDF25E79f38AE0": "moveID Images 11", + "0x23E55F6DF3325ad0a2605d4930CBbBDd68CfAF51": "moveID Images 10", + "0x68a6a229c1485B68A759a9731983456364de5DAD": "moveID Images 9", + "0x16dD1FB1e55918dccd7fBa2525e764BB1Ee33a86": "moveID Images 8", + "0xf4C33572Ca1c9A06D3d1D92e601B3559c2E1A436": "moveID Images 7", + "0xc9EC083C3aaaAC367643F5C72F5003d4ccb67397": "moveID Images 6", + "0x0A5adb41901ac503fC2400B5a2e38c70A6CE86bd": "moveID Images 5", + "0xe8ecC6c91391854861EB55fa270C30E12Af4F1E4": "moveID Images 4", + "0xAcec258c049Bbf6955e25c84184ba38C54552a27": "moveID Images 3", + "0x2010bEEe740F4aE18d203Fc07cc8F5d92760eb76": "moveID Images 2", + "0x5bfa02EA01566a52593F6B218d95Cfd3Ac7b4A4b": "moveID Images 1", + "0x6C09c6561618E84052204Efdd1a5844a8EA2cAd5": "pro-micron GmbH", + "0x56289213416634216ff0BccF3671653863CE6aa1": "Goudappel BV", + "0x1E423FD6c2Ce13E34bF0dB8f0Ad5CCF372578C33": "Posedio", + "0xD7783c77A0bd22914872BEbdFa1c00204fF9Ec50": "Deal ex Machina SAS", + "0x3F820b9D0A310a3C689EbC425a5D864D31bFE454": "Nimbus Connected", + "0x25582EaCC369Fa9830394A78664337ED3eD7a367": "Secret Dummy", + "0x70adaBC2BbD139e64f06f2cf6d0e2180cb5E523a": "Zoning Service", + "0x8D8CBbf19b94e2C2B456AC218C5e833C9eA08b5e": "THL600 Spec.", + "0x707d9Cf07b2349315e87448A1C4A4B5092468287": "THL600 Spec.", + "0xAeb4A2bE7Eb32Ce51A64d75AD00DBfb7E05966a4": "Sun Sensor v1", + "0x6044e53f7Aaf1fA456cD7461143657f3c53CeCe1": "GPS v2", + "0x7Ef230b905927Bf5aD7610894Da728f85C828faB": "Gyroscope v1", + "0x2678228892CE9c15382BC8F38911e4098f8c131C": "Magnetometer v3", + "0x3D308451D0eE3B1E1c6c2b24f3722A09331C566E": "Magnettorquer v1", + "0x5c87001e824910bFd22F216150413C8EB52e7c4a": "Reaction v2", + "0x0f788f429950fa70961297227B0669109f0Ab5B7": "Star_Tracker v2", + "0x5144012b36Ff713448b9D11CA9aC75f00CD143CC": "Star_Tracker v3", + "0xA2cd83A9a9779d8434927843247ee685A1e03a7A": "Star_Tracker v4", + "0x60115cc83fc5a44D37bA6c4C1a25323019e255A1": "Star_Tracker v5", + "0x539158e4bdCf966E301881fcbfB6E88cB6491BEe": "HEATER v1", + "0x80126b685f0aB7358745Eccc1AB1376D6BdBB12f": "THERMISTOR_1K v2", + "0x5C5637268bd9fD28e365B7a492e8cF9e19da8f24": "TVL", + "0xc1dF3Cd04BE1159f1b6e27Dfa04a846FAbc959dc": "BEEBUCKET GmbH", + "0xd794CeB60d49755762C17bD7Cc5f613FE363b9F6": "Neoception GmbH", + "0x70aef11232114e64d8ff1bc1b77dcea0dfeb5af7": "Load Test 20", + "0x8019b807912f3fc1787f7f4c60200bbe3e0cea09": "Load Test 19", + "0x98efc94ada3397f1e8a36d5b393350f1c3b6da5b": "Load Test 18", + "0x09f012fd0e6d9d5be8b1c2e98e8a221b4bee121b": "Load Test 17", + "0x3d49b6ce1eb74b01c6ded0a275a22949e2726715": "Load Test 16", + "0xed7a18fdee06e3e4fb50e717567a357711615f09": "Load Test 15", + "0x9332c77c7cbddee7824bab4f20002e7aa716898e": "Load Test 14", + "0x0dfe520a6f548bf0688914b109055e77f39d7941": "Load Test 13", + "0x181aaaa8b8fa28b909b15e7d039e242410fdd526": "Load Test 12", + "0x32d5114ef59b0567865caa1110a6ce7369e886d4": "Load Test 11", + "0x6fcc2c7bec531289c47126c8113822788e147304": "Load Test 10", + "0xefe599c6fc93e83ecca15a6e22bf33372a0cab4f": "Load Test 09", + "0x35d8592f5b7c616442fc1053db23b582661b335f": "Load Test 08", + "0x53c25cd5cdb0bdb444f0b972622c43d5a1787476": "Load Test 07", + "0x9e8be5df26a1e2e5356118a54b40832aad3ea99d": "Load Test 06", + "0x8e7092d647648359ad504650e5555d7ff41c4476": "Load Test 05", + "0x5a2b79e232f205af2a6fbc20edadd2952b73fe8d": "Load Test 04", + "0xab10aaa8da79f5d1a126b98fe663024e38cc2d39": "Load Test 03", + "0x5460fccb858793ea5d176fedc6b46ed1a1f9e1ce": "Load Test 02", + "0x85ac41ef595ae19dfe7fa5c7fceb251fdcfce327": "Load Test 01", + "0x1B76F1026B29f4bBf18009E44fD069b8915B3960": "Load Tester 01", + "0x3307020Da97cE08e1B296042E99015bF99ad1D43": "Load Tester 02", + "0x772ff6cA16103de9ADC15faea85e68Ba87b885DE": "Load Tester 03", + "0x660B6D6b83cE812c8d2B977B5Ee216b89e10153c": "Load Tester 04", + "0xd7827e25Ab8aFF11C21a9B6655fD7a6CE304f912": "Load Tester 05", + "0x10b07F5D3ba056dF3afe94dCC29c446a59462fBe": "Load Tester 06", + "0x1Eb047444D65EAB14EcBd8d0c8d290CCF1D74480": "Load Tester 07", + "0x741F71533929bffB17d37830db3A1B88997D7936": "Load Tester 08", + "0xC7e1a8858760C09fe24b46dE0DFaEa7ee3CF8721": "Load Tester 09", + "0x27b7534b018ac11BD377f668546906C6aCD52c28": "Load Tester 10", + "0xC844DE2AF6b401B10Fe6f0733EfE2C98048b0C90": "Load Tester 11", + "0x87C1B399DDc7Ffdc2849672fd80600b2Fe1BE49a": "Load Tester 12", + "0x1057c71CF2932E7ceF4Fab53c42f974FA6462494": "Load Tester 13", + "0x1eC6c60332b676d9f81CB9DED9cC21CB4294cbFc": "Load Tester 14", + "0x80D70Ac246695E925ba32389d062041Ddc3b36b5": "Load Tester 15", + "0x3541901cF20E57cE127ca19960De4bB907FfBaB3": "Load Tester 16", + "0x77d48a2Ed620e9743eefcf9109BeaB361c21A7d5": "Load Tester 17", + "0x89974C9Bb0A2433afD4Ae8A11D189e7aAC1Cae9F": "Load Tester 18", + "0x7Cc6a9486AcCa9756a19504f9d3DD5E75C0c0850": "Load Tester 19", + "0x8e2dA7fc24D4b253F4829987240BF5FDC73550A3": "Load Tester 20", + "0xb2D3015C7356Dfde2FFe3AaBf148460A03dc74A3": "Hochschule Osnabrück", + "0x4aADFC11088Bd53033297fDb7D97329500F34e9f": "FIWARE Foundation e.V.", + "0x345d301C97eb25468fDd7eDfb1B6e9C7f0B9F784": "Universität Siegen", + "0xEa458168651e7D254408Ea941BAf4210de1564E1": "Hans Berg GmbH & Co. KG", + "0x6Ec302A62ed554878b9e7862BF1bd5cdd22d03c7": "Netcompany-Intrasoft", + "0xA6FEd8D39cF98C6f7d4c31Da790c9c94e837c3ca": "Laboratory for Manufacturing Systems & Automation", + "0xD63fFbB727dc1Bf681F727b78b5F4C738E01f6Db": "Beia Consult International", + "0xAACA0075fF1B3E4ea45F9A1B758aD564c494dDA6": "Anasoft Technology AG", + "0x66867df4d2f36F56BC11B439A9f94A74D8bF7724": "AAS Info", + "0x8794d6a657a7fBA841f652C67c73788fd26cE3E9": "PFG001 Info", + "0x340bE58F9e963D02EA44d7505fb5458EfDc8f9ad": "DTI AAS Submodel", + "0x951Bc7F73c18880a012CCdD826901Ae89a085bc7": "PFG001 Technical", + "0x95c4DCC1ffffF15408798741155f0af793732f0B": "PFG001 Logs", + "0x9e39b65823240014787D435C41D5D060De985270": "PFG001 Nameplate", + "0x660Efd8b8BdA4428b9021Cd83620ee765e68b15e": "Berger Holding GmbH & Co. KG", + "0x47cE30B4F213802c17770c97dEa32e1EC3B64Ca7": "Load Test 01", + "0xA05555a187BdCB944694B5793776fD66d6ea63D4": "Load Test 02", + "0xa7092969eF3065678a41deb20ac31A5aB1F57D59": "Load Test 03", + "0x355b0D5855698f9585865462C3fB83128782cb06": "Load Test 04", + "0xCaa643e87398756324459AD932CD8976090A5414": "Load Test 05", + "0xcd40fEAE40407183835c99365ffC5dD7A24B9c63": "Load Test 06", + "0x5A7EAD2342fB60Cb417F4c5dB88DA141054c1471": "Load Test 07", + "0x6589da080ff3998d771Da6CB66F66f2484f73104": "Load Test 08", + "0x87009Da243ABA40AD3Aea0ed5412134AB797A2BF": "Load Test 09", + "0xe4aB3f5e474d2B1744fD0f092C009d95737AF9b7": "Load Test 10", + "0xf8E1067F6180D9f2d6dB2B5700444660E124601F": "Load Test 11", + "0xAd69D5cfCeD384C2DF605D7e035d2877A23358d9": "Load Test 12", + "0xE3624076eF8E50E5295e42C6c1A021DC8d5219AD": "Load Test 13", + "0xeDb71622A8e8B0a5d221D6C3aD8b8362eD79753A": "Load Test 14", + "0x556EB581bd7D5dF11Fe8e6935552B0845d8b14FB": "Load Test 15", + "0xc3215d478bE967c0006466d460626c78d0a93Eed": "Load Test 16", + "0x8BEFE9429298df2653F6Fc9B73D96dB99b819644": "Load Test 17", + "0xe19b2bce4ffEbFbF3C34E8aE7C9E4b860E007E06": "Load Test 18", + "0xD09a7644b0F3a8DC2256865c4E6eFe1e64025476": "Load Test 19", + "0x9E78FaFF24f21b68aaaa9acC781ffeF269A0D559": "Load Test 20", + "0x43d3004D0232243cC4878419b6897f5f50713eAE": "Bruno Kessler Foundation", + "0x32e561E6A8615f3Ec6aD2397e6F75d05cd81d0f5": "neogramm GmbH", + "0xD9BAB8E6279CE41C2bC3f1D44ceF855235e0CdB7": "Gühring KG", + "0x6406F91b03a7ffbf858e57C3fa205Ae549EFB1a5": "Tool Performance", + "0x6417A347Ad30d0745cBB3a851DF7C72517c4705C": "Process Optimization", + "0xb20D3889931517d9AA1D7306c9a521F506f88245": "Tool Recommendation", + "0xb505CB7D3d251867968e72D628036A5c501F5466": "Xayn AG", + "0x0021a0cF84f83a04dFE402549e97C7DD21c5adA4": "SCHUNK SE & Co. KG", + "0xd480cfd1decc61cec35127e26611b47088b5f619": "Transport Dimensions SAR-1300", + "0x6E9F4E8890A8e3401FF632FC61f7cBF839d5BB70": "Design Rules SAR-1300", + "0x2588DCeC3f6a8400D0eAaa57669f8EC8e261fd59": "Scanner Specification SAR-1300", + "0xCf53CfbFabCc7Fa74cc8fB4218Ac7621bEe6bf0f": "Specifications for SAR-1300", + "0xA8C26ab25C8F476aB488078B9bA6D60C4E7bEE2B": "SAR-1300 Technical Drawing", + "0xe5AfCf1BF4FfCa6c1f19463605578e8146CdF4b1": "University of British Columbia", + "0xb993dfC7cAf2477770e60E1Ae6188F6147BDA92d": "ZERTIFIER SL", + "0x6F28a052eeb897d6412A8198D0DDF1FC15fe3D94": "Future Mobility Network B.V.", + "0x1504d3AE9224091990Cb2F71D0e10B8F7E84E7De": "NVWA", + "0x4680420FD71E0C8ABDae60EFdF685206E9bdbF3E": "LMIS AG", + "0x57fa18A57f4B8198a4781D4Cc850631F7be8333F": "DEKRA Digital GmbH", + "0x9B421d0f5d378b66324251d6CDc1945a6560110b": "SIMAVI", + "0x13a9FfFC7fb684CCc623C305B46b7eD6b3a73C66": "ENGINSOFT", + "0x7d46Bb46ba45f08480bA80150d3594fd9f3e212d": "IMT Atlantique", + "0xc9034e58176c59153F53C6B59d5CFD5BBD58b5Fc": "Aarhus University", + "0xB9fB84b093D8bE26A78208b324D8074627374F49": "HWR Berlin", + "0xEEC041b73BC4FcAE2B0a66F9992d2b6d1959BbD1": "Tronico SAS", + "0x7e7cea5dda047F66b8755Cb4Bf1d8eDBFB236e35": "Airbus Atlantic", + "0x13f8514cA72C83386929f0BAa9bCe6B840cbA03A": "Continental Automotive", + "0x98bDc1EaDE6D4ad7032A091Dc8bE6D217cB37eF3": "iED", + "0xFB7Cb9F2E15F3935B22FB9846d69b46bD31edf07": "Health Check 1", + "0xB33185E37610bC6f5b00cC26827317EE6fDF547a": "PTW TU Darmstadt", + "0x8e9307D95f3aF50DCc655Af3EAE89B24501b848D": "Poznan Supercomputing and Networking Center (PSNC)", + "0xe1D7Cf58357Ce5dFCa2343221610138A196C0FEE": "Hochschule für angewandte Wissenschaften Kempten", + "0xdEB9D710BF2B1BB1C86845e52CAA86fBEEB87819": "Fundació i2CAT", + "0x0E05173b57b5a7e69932792617614e8e9601438F": "Fraunhofer IVI", + "0x874B6a89B201d8249c11e908b21554d14f6B3F2a": "NTT DATA Spain", + "0xD231e64574a18eb5FB49cE2e18923681c07a7E51": "IMEC Belgium", + "0x7E13628a092637e480c7c266692381784d909069": "OASIS PROTOCOL FOUNDATION", + "0x35C38A98dC3c452062d7af71A08aeA11a3353dB6": "OASIS PROTOCOL FOUNDATION" } diff --git a/public/images/ctd_benefits.webp b/public/images/ctd_benefits.webp new file mode 100644 index 000000000..8dfa920d9 Binary files /dev/null and b/public/images/ctd_benefits.webp differ diff --git a/public/images/ecosystem.webp b/public/images/ecosystem.webp new file mode 100644 index 000000000..3261e3aa1 Binary files /dev/null and b/public/images/ecosystem.webp differ diff --git a/public/images/ecosystem/PSNC.webp b/public/images/ecosystem/PSNC.webp new file mode 100644 index 000000000..2f51f6b73 Binary files /dev/null and b/public/images/ecosystem/PSNC.webp differ diff --git a/public/images/ecosystem/agrifoodTEF.webp b/public/images/ecosystem/agrifoodTEF.webp new file mode 100644 index 000000000..2f9516bd2 Binary files /dev/null and b/public/images/ecosystem/agrifoodTEF.webp differ diff --git a/public/images/ecosystem/cooperants-logo.webp b/public/images/ecosystem/cooperants-logo.webp index 37e78e1e0..76b9b99fd 100644 Binary files a/public/images/ecosystem/cooperants-logo.webp and b/public/images/ecosystem/cooperants-logo.webp differ diff --git a/public/images/ecosystem/logo-fiware-full.svg b/public/images/ecosystem/logo-fiware-full.svg new file mode 100644 index 000000000..8460d5f96 --- /dev/null +++ b/public/images/ecosystem/logo-fiware-full.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/ecosystem/logo-fiware-full.webp b/public/images/ecosystem/logo-fiware-full.webp new file mode 100644 index 000000000..a149e578a Binary files /dev/null and b/public/images/ecosystem/logo-fiware-full.webp differ diff --git a/public/images/genx_validators.webp b/public/images/genx_validators.webp index 5e313466c..ac9e78a80 100644 Binary files a/public/images/genx_validators.webp and b/public/images/genx_validators.webp differ diff --git a/src/@context/MarketMetadata/_types.ts b/src/@context/MarketMetadata/_types.ts index 899987003..5c53fd1ab 100644 --- a/src/@context/MarketMetadata/_types.ts +++ b/src/@context/MarketMetadata/_types.ts @@ -46,6 +46,9 @@ export interface AppConfig { [chainId: number]: string } } + faucet: { + baseUri: string + } } export interface SiteContent { siteTitle: string diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index ed80e1922..8339393b4 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -91,7 +91,7 @@ function MarketMetadataProvider({ useEffect(() => { if (isLoading) return - getApprovedBaseTokens(chain?.id || 100) + getApprovedBaseTokens(chain?.id || 32457) }, [chain?.id, getApprovedBaseTokens, isLoading]) return ( diff --git a/src/@hooks/useNetworkMetadata/utils.ts b/src/@hooks/useNetworkMetadata/utils.ts index 62d54b443..9fbdc554b 100644 --- a/src/@hooks/useNetworkMetadata/utils.ts +++ b/src/@hooks/useNetworkMetadata/utils.ts @@ -12,7 +12,9 @@ export function getNetworkType(network: EthereumListsChain): string { if ( network && !network.name?.includes('Testnet') && - !network.title?.includes('Testnet') + !network.title?.includes('Testnet') && + !network.name?.includes('Devnet') && + !network.title?.includes('Devnet') ) { return NetworkType.Mainnet } else { @@ -47,6 +49,9 @@ export function getNetworkDisplayName(data: EthereumListsChain): string { displayName = 'GEN-X Testnet' break case 32456: + displayName = 'Pontus-X Devnet' + break + case 32457: displayName = 'Pontus-X Testnet' break default: diff --git a/src/@utils/aquarius/_constants.ts b/src/@utils/aquarius/_constants.ts new file mode 100644 index 000000000..f60077041 --- /dev/null +++ b/src/@utils/aquarius/_constants.ts @@ -0,0 +1,3 @@ +export const DEFAULT_INDEX = 'v510' + +export const CHAIN_TO_INDEX_MAP = {} diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index ccfbef821..35b1d8111 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -13,6 +13,7 @@ import addressConfig from '../../../address.config' import { isValidDid } from '@utils/ddo' import { Filters } from '@context/Filter' import { filterSets } from '@components/Search/Filter' +import { CHAIN_TO_INDEX_MAP, DEFAULT_INDEX } from './_constants' export interface UserSales { id: string @@ -105,6 +106,15 @@ FilterTerm | undefined { : getFilterTerm('price.type', 'pool') } +export function getIndexForChainIds(chainIds: number[]): string[] { + const indexes: string[] = [] + for (const chainId of chainIds) { + const index = CHAIN_TO_INDEX_MAP[chainId] || DEFAULT_INDEX + indexes.push(index) + } + return indexes +} + export function generateBaseQuery( baseQueryParams: BaseQueryParams ): SearchQuery { @@ -130,7 +140,10 @@ export function generateBaseQuery( ...(baseQueryParams.chainIds ? [getFilterTerm('chainId', baseQueryParams.chainIds)] : []), - getFilterTerm('_index', 'v510'), + getFilterTerm( + '_index', + getIndexForChainIds(baseQueryParams.chainIds) + ), ...(baseQueryParams.ignorePurgatory ? [] : [getFilterTerm('purgatory.state', false)]), diff --git a/src/@utils/faucet/index.ts b/src/@utils/faucet/index.ts new file mode 100644 index 000000000..26f7ccb92 --- /dev/null +++ b/src/@utils/faucet/index.ts @@ -0,0 +1,65 @@ +import axios from 'axios' +import { faucet } from '../../../app.config' +import { ethers } from 'ethers' + +async function getNonce(address: string): Promise { + try { + const response = await axios.post<{ + status: string + nonce?: number + message?: string + }>(`${faucet.baseUri}/get_nonce`, { address }) + + return response.data.nonce + } catch (error) { + throw new Error( + `Failed to get nonce for address ${address}: ${error.message}` + ) + } +} + +export async function getMessage(address: string): Promise { + try { + const nonce = await getNonce(address) + return `I am requesting tokens for ${address} with nonce: ${nonce}` + } catch (error) { + throw new Error( + `Failed to create message for address ${address}: ${error.message}` + ) + } +} + +export async function getChainId(): Promise { + const network = await new ethers.providers.Web3Provider( + window?.ethereum + ).getNetwork() + return network.chainId +} + +export async function requestTokens( + address: string, + signature: string +): Promise { + try { + const availableNetworks = { + 32456: 'devnet', + 32457: 'testnet' + } + const chainId = await getChainId() + const network = availableNetworks[chainId] + + const response = await axios.post<{ + status: string + txHashes?: string[] + message?: string + }>(`${faucet.baseUri}/request_tokens/${network}`, { address, signature }) + + if (response.data.status === 'error') { + throw response.data.message + } + + return response.data.txHashes + } catch (error) { + throw new Error(`Failed to request tokens for address ${address}: ${error}`) + } +} diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index f3873e81e..a9116db74 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -42,6 +42,7 @@ export function getOceanConfig(network: string | number): Config { network === 'gaiaxtestnet' || network === 'pontusx' || network === 32456 || + network === 32457 || network === 2021000 || network === 8996 ? undefined diff --git a/src/@utils/subgraph.ts b/src/@utils/subgraph.ts index 613e31e9e..ae51c7728 100644 --- a/src/@utils/subgraph.ts +++ b/src/@utils/subgraph.ts @@ -59,6 +59,7 @@ export const tokenAddressesEUROe = { 100: '0xe974c4894996e012399dedbda0be7314a73bbff1', 137: '0x820802Fa8a99901F52e39acD21177b0BE6EE2974', 32456: '0x8A4826071983655805bF4f29828577Cd6b1aC0cB', + 32457: '0xdd0a0278f6BAF167999ccd8Aa6C11A9e2fA37F0a', 80001: '0xA089a21902914C3f3325dBE2334E9B466071E5f1' } diff --git a/src/components/@shared/AnnouncementBanner/index.module.css b/src/components/@shared/AnnouncementBanner/index.module.css index 751ee3fcc..005ea678b 100644 --- a/src/components/@shared/AnnouncementBanner/index.module.css +++ b/src/components/@shared/AnnouncementBanner/index.module.css @@ -12,7 +12,7 @@ .banner.warning { background-color: var(--brand-alert-yellow); - color: var(--brand-white); + color: var(--brand-black); } .banner.success { diff --git a/src/components/@shared/AssetList/index.tsx b/src/components/@shared/AssetList/index.tsx index 4fcaf31c8..c476ab4d0 100644 --- a/src/components/@shared/AssetList/index.tsx +++ b/src/components/@shared/AssetList/index.tsx @@ -12,7 +12,6 @@ import Time from '../atoms/Time' import Loader from '../atoms/Loader' import NetworkName from '../NetworkName' import { useUserPreferences } from '../../../@context/UserPreferences' -import { ChainDoesNotSupportMulticallError } from 'wagmi' const networkColumn: TableOceanColumn = { name: 'Network', diff --git a/src/components/@shared/NetworkStatus/index.tsx b/src/components/@shared/NetworkStatus/index.tsx index 8d65ef785..73ad4f8eb 100644 --- a/src/components/@shared/NetworkStatus/index.tsx +++ b/src/components/@shared/NetworkStatus/index.tsx @@ -10,7 +10,7 @@ export default function NetworkStatus({ }: { className?: string }): ReactElement { - const [showNetworkAlert, setShowNetworkAlert] = useState(true) + const [showNetworkAlert, setShowNetworkAlert] = useState(false) const [network, setNetwork] = useState() const { appConfig } = useMarketMetadata() const { chain } = useNetwork() diff --git a/src/components/@shared/Onboarding/Steps/Faucet.tsx b/src/components/@shared/Onboarding/Steps/Faucet.tsx new file mode 100644 index 000000000..df1c4cad2 --- /dev/null +++ b/src/components/@shared/Onboarding/Steps/Faucet.tsx @@ -0,0 +1,111 @@ +import { LoggerInstance } from '@oceanprotocol/lib' +import { getErrorMessage } from '@utils/onboarding' +import { ReactElement, useEffect, useState } from 'react' +import { toast } from 'react-toastify' +import { useAccount, useNetwork, useProvider, useSignMessage } from 'wagmi' +import { OnboardingStep } from '..' +import { getSupportedChainIds } from '../../../../../chains.config' +import content from '../../../../../content/onboarding/steps/faucet.json' +import { getMessage, requestTokens } from '../../../../@utils/faucet' +import StepBody from '../StepBody' +import StepHeader from '../StepHeader' + +export default function Faucet(): ReactElement { + const { title, subtitle, body, image }: OnboardingStep = content + + const { address: accountId } = useAccount() + const web3Provider = useProvider() + const { chain } = useNetwork() + + const { + data: signMessageData, + error: signMessageError, + isLoading: signMessageLoading, + isSuccess: signMessageSuccess, + signMessage + } = useSignMessage() + + const [loading, setLoading] = useState(false) + const [completed, setCompleted] = useState(false) + + const faucetTokenRequest = async () => { + try { + const hashes = await requestTokens(accountId, signMessageData) + toast.success(`Successfully requested test tokens: ${hashes.join(', ')}`) + setCompleted(true) + } catch (error) { + toast.error('Unable to request tokens. Please try again.') + LoggerInstance.error('[Onboarding] Error requesting tokens', error) + } finally { + setLoading(false) + } + } + + const prepareMessage = async () => { + setLoading(true) + try { + if (!getSupportedChainIds().includes(chain?.id)) + throw new Error( + 'The chain you are connected to with your wallet is not supported' + ) + LoggerInstance.log('[Onboarding] Requesting nonce from faucet', { + accountId + }) + const message = await getMessage(accountId) + + signMessage({ message }) + } catch (error) { + toast.error( + getErrorMessage({ + accountId, + web3Provider: !!web3Provider, + networkId: chain?.id + }) + ) + if (error.message) console.error(error.message) + + setLoading(false) + } + } + + useEffect(() => { + if (signMessageLoading) return + + if (signMessageError) { + toast.error('Unable to sign message. Please try again.') + LoggerInstance.error( + '[Onboarding] Error signing message', + signMessageError + ) + return + } + + if (signMessageSuccess && signMessageData) { + faucetTokenRequest() + } + }, [ + signMessageSuccess, + signMessageData, + signMessageError, + signMessageLoading + ]) + + const actions = [ + { + buttonLabel: `Request Test EUROe Tokens`, + buttonAction: async () => { + await prepareMessage() + }, + successMessage: `Successfully requested test tokens.`, + loading, + completed + } + ] + + return ( +
+ + +
+ ) +} diff --git a/src/components/@shared/Onboarding/Steps/ImportCustomTokens.tsx b/src/components/@shared/Onboarding/Steps/ImportCustomTokens.tsx index d241869b0..7370406e5 100644 --- a/src/components/@shared/Onboarding/Steps/ImportCustomTokens.tsx +++ b/src/components/@shared/Onboarding/Steps/ImportCustomTokens.tsx @@ -31,8 +31,10 @@ export default function ImportCustomTokens(): ReactElement { ) => { setLoading(true) try { - if (getSupportedChainIds().includes(chain?.id)) throw new Error() - + if (!getSupportedChainIds().includes(chain?.id)) + throw new Error( + 'The chain you are connected to with your wallet is not supported' + ) await addTokenToWallet( tokenAddress, tokenSymbol, @@ -54,21 +56,23 @@ export default function ImportCustomTokens(): ReactElement { } } - const actions = approvedBaseTokens?.map((token) => ({ - buttonLabel: `Import ${token.symbol} Token`, - buttonAction: async () => { - await importCustomToken( - web3Provider, - token.address, - token.symbol, - token.decimals, - tokenLogos?.[token.symbol]?.url - ) - }, - successMessage: `Successfully imported ${token.symbol} test token`, - loading, - completed - })) + const actions = approvedBaseTokens + ?.filter((token) => token.symbol.toLowerCase().includes('euro')) + .map((token) => ({ + buttonLabel: `Import ${token.symbol} Token`, + buttonAction: async () => { + await importCustomToken( + web3Provider, + token.address, + token.symbol, + token.decimals, + tokenLogos?.[token.symbol]?.url + ) + }, + successMessage: `Successfully imported ${token.symbol} test token`, + loading, + completed + })) return (
diff --git a/src/components/@shared/Onboarding/index.tsx b/src/components/@shared/Onboarding/index.tsx index c9695ddc8..dd3ed9438 100644 --- a/src/components/@shared/Onboarding/index.tsx +++ b/src/components/@shared/Onboarding/index.tsx @@ -15,6 +15,7 @@ import useBalance from '@hooks/useBalance' import ImportWallet from './Steps/ImportWallet' import AutomationWalletState from './Steps/AutomationWalletState' import { getSupportedChainIds } from '../../../../chains.config' +import Faucet from './Steps/Faucet' export interface OnboardingStep { title: string @@ -31,6 +32,7 @@ const steps = [ { shortLabel: 'Tokens', component: }, { shortLabel: 'Import', component: }, { shortLabel: 'Automation', component: }, + { shortLabel: 'Faucet', component: }, { shortLabel: 'Ready', component: } ] diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx index 084fc14b1..976272466 100644 --- a/src/components/App/index.tsx +++ b/src/components/App/index.tsx @@ -28,7 +28,7 @@ export default function App({ return (
{siteContent?.announcement !== '' && ( - + )} {appConfig.showPreviewAlert === 'true' && devPreviewAnnouncementText !== '' && ( diff --git a/src/components/Faucet/index.module.css b/src/components/Faucet/index.module.css new file mode 100644 index 000000000..bddaa9a8a --- /dev/null +++ b/src/components/Faucet/index.module.css @@ -0,0 +1,96 @@ +.card { + max-width: 800px; + margin: auto; + margin-top: 50px; + padding: 30px; + border: 1px solid #e0e0e0; + border-radius: 12px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + background-color: #f9f9f9; +} + +.title { + font-size: 32px; + margin-bottom: 10px; + color: #2c3e50; +} + +.description { + font-size: 18px; + margin-bottom: 20px; + color: #34495e; + line-height: 1.6; +} + +.instructions { + margin-bottom: 20px; + background-color: #ffffff; + padding: 20px; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.instructions h3 { + font-size: 22px; + margin-bottom: 15px; + color: #2c3e50; +} + +.instructions ol { + padding-left: 20px; + margin-bottom: 10px; + color: #34495e; +} + +.instructions ol li { + margin-bottom: 10px; + font-size: 16px; +} + +.address, +.network { + font-size: 16px; + word-break: break-all; + margin-bottom: 20px; + color: #34495e; +} + +.form { + display: flex; + flex-direction: column; +} + +.button { + background-color: #007bff; + border: none; + color: white; + padding: 12px 24px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 8px 2px; + cursor: pointer; + border-radius: 6px; + transition: background-color 0.3s ease, transform 0.3s ease; +} + +.button:hover { + background-color: #0056b3; + transform: scale(1.05); +} + +.disabledButton { + background-color: grey !important; + cursor: not-allowed !important; +} + +.errorContainer, +.successContainer { + margin-top: 20px; + width: 100%; +} + +.textStrong { + color: #2c3e50; +} diff --git a/src/components/Faucet/index.tsx b/src/components/Faucet/index.tsx new file mode 100644 index 000000000..ebc1c1e19 --- /dev/null +++ b/src/components/Faucet/index.tsx @@ -0,0 +1,210 @@ +import { ReactElement, useCallback, useEffect, useState } from 'react' +import { LoggerInstance } from '@oceanprotocol/lib' +import styles from './index.module.css' +import Button from '@components/@shared/atoms/Button' +import Loader from '@components/@shared/atoms/Loader' +import Alert from '@components/@shared/atoms/Alert' +import content from '../../../content/pages/faucet.json' +import { ethers } from 'ethers' +import { getMessage, requestTokens } from '../../@utils/faucet' +import { useAccount, useSignMessage } from 'wagmi' +import { toast } from 'react-toastify' + +interface Content { + title: string + description: string + input: { + label: string + placeholder: string + buttonLabel: string + } +} + +const networkNameMap: { [key: number]: string } = { + 32456: 'Pontus-X Devnet', + 32457: 'Pontus-X Testnet' +} + +const FaucetPage = (): ReactElement => { + const { input }: Content = content + const { label, buttonLabel } = input + + const [isLoading, setIsLoading] = useState(false) + const [isRequestingTokens, setIsRequestingTokens] = useState(false) + const [address, setAddress] = useState('') + const [network, setNetwork] = useState('Unknown') + const [message, setMessage] = useState() + const [error, setError] = useState() + + const { address: accountAddress } = useAccount() + + const { + data: signMessageData, + error: signMessageError, + isLoading: signMessageLoading, + isSuccess: signMessageSuccess, + signMessage + } = useSignMessage() + + const handleVerify = useCallback(async () => { + setIsLoading(true) + setError(undefined) + setMessage(undefined) + + try { + const message = await getMessage(accountAddress) + signMessage({ message }) + } catch (error) { + LoggerInstance.error(error) + setError(error.message || 'Error generating message.') + } finally { + setIsLoading(false) + } + }, [accountAddress, signMessage]) + + const handleSearchStart = useCallback( + (e: React.FormEvent) => { + e.preventDefault() + handleVerify() + }, + [handleVerify] + ) + + const faucetTokenRequest = useCallback(async () => { + setIsRequestingTokens(true) + try { + const hashes = await requestTokens(accountAddress, signMessageData) + toast.success(`Successfully requested test tokens: ${hashes.join(', ')}`) + setMessage( + 'Tokens successfully requested. It can take up to 30 seconds until tokens show up in your wallet.' + ) + } catch (error) { + const errorMessage = + error.message || 'Unable to request tokens. Please try again later.' + setError(errorMessage) + LoggerInstance.error('[Onboarding] Error requesting tokens', error) + } finally { + setIsRequestingTokens(false) + } + }, [accountAddress, signMessageData]) + + useEffect(() => { + if (signMessageLoading) return + + if (signMessageError) { + toast.error('Unable to sign message. Please try again.') + LoggerInstance.error( + '[Onboarding] Error signing message', + signMessageError + ) + return + } + + if (signMessageSuccess && signMessageData) { + faucetTokenRequest() + } + }, [ + signMessageSuccess, + signMessageData, + signMessageError, + signMessageLoading, + faucetTokenRequest + ]) + + useEffect(() => { + const fetchAddressAndNetwork = async () => { + try { + const provider = new ethers.providers.Web3Provider(window.ethereum) + const signer = provider.getSigner() + const address = await signer.getAddress() + const network = await provider.getNetwork() + setAddress(address) + setNetwork(networkNameMap[network.chainId] || 'Unknown') + } catch (error) { + LoggerInstance.error(error) + } + } + + fetchAddressAndNetwork() + + if (window.ethereum) { + window.ethereum.on('accountsChanged', fetchAddressAndNetwork) + window.ethereum.on('chainChanged', fetchAddressAndNetwork) + } + + return () => { + if (window.ethereum) { + window.ethereum.removeListener( + 'accountsChanged', + fetchAddressAndNetwork + ) + window.ethereum.removeListener('chainChanged', fetchAddressAndNetwork) + } + } + }, []) + + return ( +
+

Welcome to the Pontus-X Faucet

+

+ A faucet is a service that provides free tokens for testing purposes. + Known accounts can request 10 EUROe fee tokens and 1000 EUROe payment + tokens to use on the Pontus-X network. These tokens are available every + 12 hours. +

+
+

How to Request Tokens:

+
    +
  1. Ensure you have a web3 wallet (e.g. MetaMask) connected.
  2. +
  3. + Your wallet address will be automatically detected and displayed + below. +
  4. +
  5. + Click the "Get Tokens" button to request your free tokens. +
  6. +
  7. Wait for a few seconds while the request is processed.
  8. +
  9. + You will receive a confirmation once the tokens are successfully + added to your wallet. +
  10. +
+

+ Note: You can only request tokens once every 12 + hours. If you encounter any issues, please try again later. +

+
+
+ {label}: {address} +
+
+ Connected Network: {network} +
+
+ +
+ {!isLoading && error && ( +
+ +
+ )} + {!isLoading && message && ( +
+ +
+ )} +
+ ) +} + +export default FaucetPage diff --git a/src/components/Publish/Pricing/index.tsx b/src/components/Publish/Pricing/index.tsx index 79a481e5f..a6a8d6548 100644 --- a/src/components/Publish/Pricing/index.tsx +++ b/src/components/Publish/Pricing/index.tsx @@ -21,7 +21,7 @@ export default function PricingFields(): ReactElement { const defaultBaseToken = approvedBaseTokens?.find((token) => - token.name.toLowerCase().includes('ocean') + token.name.toLowerCase().includes('euro') ) || approvedBaseTokens?.[0] const isBaseTokenSet = !!approvedBaseTokens?.find( diff --git a/src/components/Publish/Steps.tsx b/src/components/Publish/Steps.tsx index 5c6b845e8..fcde86aed 100644 --- a/src/components/Publish/Steps.tsx +++ b/src/components/Publish/Steps.tsx @@ -32,7 +32,7 @@ export function Steps({ const defaultBaseToken = approvedBaseTokens?.find((token) => - token.name.toLowerCase().includes('ocean') + token.name.toLowerCase().includes('euro') ) || approvedBaseTokens?.[0] const isBaseTokenSet = !!approvedBaseTokens?.find( (token) => token?.address === values?.pricing?.baseToken?.address diff --git a/src/components/Publish/_constants.tsx b/src/components/Publish/_constants.tsx index 9d1348057..26c61affc 100644 --- a/src/components/Publish/_constants.tsx +++ b/src/components/Publish/_constants.tsx @@ -52,7 +52,7 @@ const computeOptions: ServiceComputeOptions = { export const initialValues: FormPublishData = { user: { stepCurrent: 1, - chainId: 100, + chainId: 32457, accountId: '' }, metadata: { @@ -84,13 +84,13 @@ export const initialValues: FormPublishData = { }, services: [ { - files: [{ url: '', type: 'ipfs' }], + files: [{ url: '', type: 'url' }], links: [{ url: '', type: 'url' }], dataTokenOptions: { name: '', symbol: '' }, timeout: '', access: 'access', providerUrl: { - url: 'https://provider.mainnet.oceanprotocol.com', + url: 'https://provider.test.pontus-x.eu', valid: true, custom: false }, @@ -102,7 +102,7 @@ export const initialValues: FormPublishData = { } ], pricing: { - baseToken: { address: '', name: '', symbol: 'OCEAN', decimals: 18 }, + baseToken: { address: '', name: '', symbol: 'EUROe', decimals: 6 }, price: 0, type: allowFixedPricing === 'true' ? 'fixed' : 'free', freeAgreement: false diff --git a/src/pages/faucet.tsx b/src/pages/faucet.tsx new file mode 100644 index 000000000..c73c19e40 --- /dev/null +++ b/src/pages/faucet.tsx @@ -0,0 +1,12 @@ +import { ReactElement } from 'react' +import Verify from '../components/Faucet' +import content from '../../content/pages/faucet.json' +import Page from '@components/@shared/Page' + +export default function PageVerify(): ReactElement { + return ( + + + + ) +}