IPC Explorer
{"title": "IPC Explorer", "logoImg": "bafkreic3zrslhsummx6pplmbjulmxcn6m56riy34lvfbqvtzylz2aitaiy", "website": "https://ipcexplorer.com", "bannerImg": "bafkreiewxpjske6offquktxjfmwhji3xciq3udbt5qnv7kjzqgqvxzav5y", "createdAt": 1712645681190, "userGithub": "31z4", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..oVD2BsEBoG74ckOVYL2_4Pn2RRPH2-IkibrLaT6ogJQCdkyHx2eEbFYrf1N4g_KlrqHfWVa50mocTDSgk7H9Dw", "type": "Ed25519Signature2018", "created": "2024-04-09T07:09:21.278Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-09T07:09:21.278Z", "expirationDate": "2024-07-08T07:09:21.278Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x59A56819A33B63A6e4331206204c2B4411B54eF6", "hash": "v0.0.0:4MWqMXsKAsbpvtAGACsgZMMw91EItm0eIV+OVbTuU/Q=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#cronian-tech#3657959"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..1VSIsSPSE3E_LSm7kbMH-VW6Iu28sL8yZwec2MHuOObfwq7yIWAwAYzRnlknMcyTv13p140n__GUa7lwSujbAw", "type": "Ed25519Signature2018", "created": "2024-04-09T07:08:08.546Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-09T07:08:08.546Z", "expirationDate": "2024-07-08T07:08:08.546Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x59A56819A33B63A6e4331206204c2B4411B54eF6", "hash": "v0.0.0:ll+4YQVlb76ZCCb5HCcve/0qV6rOiusrHVS30NYWgCc=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#e1z4"}}}, "description": "The initial goal of this project was to build a minimum viable product (MVP) of the IPC explorer. See [what's next](#whats-next) after the MVP.\n\n> InterPlanetary Consensus (IPC) is a revolutionary blockchain technology that powers planetary-scale web3 apps.\n\nYou can learn more about this technology at [https://www.ipc.space](https://www.ipc.space).\n\nUsing IPC Explorer you can:\n\n- Browse subnets.\n- View subnet configuration.\n- View the last committed bottom-up checkpoint of a subnet.\n- View subnet genesis validators.\n- View recent subnet deposits.\n- View recent subnet withdrawals.\n- View recent subnet transactions.\n\n## How it's made\n\n- To narrow the scope of the MVP the decision was made to not build an indexing backend at this stage.\n- The application relies on [public Filecoin RPC providers](https://docs.filecoin.io/networks/calibration/rpcs).\n- IPC Explorer is a single page application (SPA) built using [React](https://react.dev).\n- The application uses [ethers.js](https://ethers.org) to:\n  - Call various methods of the IPC Subnet Actor (ISA) and the IPC Gateway Actor (IGA) smart contracts to collect various information about subnets.\n  - Fetch blocks, transactions, and events from the root network and its child subnets.\n\n## Known issues and limitations\n\n- **Listing subnet withdrawals may not work.**\n  It relies on the `NewBottomUpMsgBatch` event of the IPC Gateway Actor smart contract.\n  But for some reason, I do not observe such events via a local subnet RPC during manual testing.\n- **Connecting to a subnet RPC provider is subject to [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)**.\n  Therefore, you can only connect to a local subnet RPC provider from a locally running application.\n  Connecting to a public subnet RPC provider is possible if the provider explicitly allows it by setting corresponding [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) headers.\n- **Not displaying when the last bottom-up checkpoint of a subnet was committed to the parent**. Finding in what parent block a subnet committed its last bottom-up checkpoint is inefficient without having an indexing backend. In the worst-case scenario, you'd have to scan the parent from its current block down to the subnet's genesis block to find the last checkpoint transaction.\n- **L3+ subnets are not supported**.\n  Nested subnets would require different application architecture and more sophisticated UX. It is simply out of scope of the MVP.\n\n## Why building from scratch?\n\nSince the [Filecoin Virtual Machine](https://fvm.filecoin.io) used by IPC is an EVM-compatible runtime, you may wonder, can't we just use some existing open-source blockchain explorer like [Blockscout](https://www.blockscout.com)?\nAnd the short answer is yes, we can.\nBut, the user experience will be poor out-of-the-box.\n\n- Blockscout doesn't support simultaneously connecting to multiple RPC providers.\n  This means you either look at a parent or a child IPC network at a time.\n  Or have to deploy a separate Blockscout instance for every subnet.\n  Which seems inefficient.\n- Blockscout is a general-purpose blockchain explorer and knows nothing about IPC subnets.\n  Even if you upload and verify IPC-specific smart contracts into it, this will improve visibility into subnets just a little.\n  And the UX will remain poor.\n  Because you still need to manually call a set of Gateway and Subnet Actor methods to gather info about subnets.\n\nSo for the best visibility into subnets and a good user experience you either fork and extend something like Blockscout or build your own IPC explorer from scratch.\nFor this MVP I chose the latter.\n\n## What's next?\n\nBefore the IPC General Availability launch (planned for 2024 Q3) I want to build a production-ready IPC explorer.\nThe key difference from the current MVP will be having an indexing backend.\nThis backend will greatly improve the UX of the explorer and enable new features.\nTo name a few:\n\n- Full history of transactions, messages, events, etc. is available and searchable.\n- Various charts and analytics based on real-time and historical data.\n- Quicker application load times.\n\nAnother useful feature will be the ability to connect your Metamask wallet to a subnet.", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "cronian-tech", "projectTwitter": "e1z4"}