From 959e8292f11249448fd97197207b865f576ca903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Jedli=C4=8Dka?= Date: Wed, 18 Oct 2023 10:45:09 +0200 Subject: [PATCH 01/46] amend Calamar's milestone 3 (#2055) --- applications/Calamar.md | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/applications/Calamar.md b/applications/Calamar.md index a7953c14400..ff52a1eae69 100644 --- a/applications/Calamar.md +++ b/applications/Calamar.md @@ -69,26 +69,31 @@ As we are gathering feedback, one of the most important features for the users s - account's name if set - owned assets accross all listed chains, including dollar values and graphs for visualization. - list all chain-specific addresses - - list all related transfers, XCM transfers, extrinsics and calls + - list all related transfers, extrinsics and calls -![Account page](https://res.cloudinary.com/topmonks/image/upload/v1672668761/calamar/account2.png) +![Account page](https://res.cloudinary.com/topmonks/image/upload/v1672668761/calamar/account3.png) #### Chain dashboards Each chain will have own dashboard with statistics and listing of latest blocks, latest transfers, top holders, etc. It makes the explorer more useful even for users who are not searching for specific items. -![Statistics page](https://res.cloudinary.com/topmonks/image/upload/v1661765199/calamar/statistics.png) +![Statistics page](https://res.cloudinary.com/topmonks/image/upload/v1697542484/calamar/statistics2.png) -#### Cross-chain transfers -Important feature is to create good UI for displaying information about XCM teleports and other cross-chain transfers where you can easily see all involved sides (chains, accounts) and other useful data. +#### Metadata explorer -- XCM transfer detail +The runtime metadata of each chain are still evolving and changing but it is not so easy to display them in a structured and human-readable way. There is e.g. a tool https://wiki.polkadot.network/docs/metadata which displays them but only latest version and supports only a few networks. The metadata explorer we are going to implement will support all the networks and also historical versions of the runtime spec. -![XCM transfer page](https://res.cloudinary.com/topmonks/image/upload/v1662492906/calamar/xcm-transfer-detail.png) +![Metadata explorer](https://res.cloudinary.com/topmonks/image/upload/v1672668761/calamar/metadata_explorer.png) -- in transfers table +#### Item metadata -![Transfers table](https://res.cloudinary.com/topmonks/image/upload/v1662492938/calamar/xcm-transfers-list.png) +The metadata information will be deeply integrated into whole Calamar so we can display it in the detail pages of the items. E.g. in extrinsic's detail page we will show info for the call name, error, parameters and link to the metadata explorer for more info. + +![Extrinsic metadata](https://res.cloudinary.com/topmonks/image/upload/v1672668761/calamar/extrinsic_metadata.png) + +#### Search input autocomplete for call and event names + +Thanks to the metadata we can also autocomplete and suggest the call and event names when typing into the search input. ### Technology stack @@ -203,7 +208,7 @@ Even though we have the already working application, there are still many things | 10. | Website polishing | Add useful information to the website (footer with team logos, contact information, terms, etc.). | | 11. | Polkadot.js integration | Create a PR to integrate links to the Calamar Explorer into Polkadot.js app. | -### Milestone 2 - Account detail & Cross-chain transfers +### Milestone 2 - Account detail & Chain dashboards - **Estimated duration:** 4 weeks - **FTE:** 1 @@ -232,10 +237,10 @@ In this milestone we are going to improve [account detail](#account-detail) page | 10. | Chain dashboard / Top holders | Add top holders list table | -### Milestone 3 - Universal search & Chain dashboards +### Milestone 3 - Universal search & Metadata explorer -- **Estimated duration:** 3 weeks -- **FTE:** 1 +- **Estimated duration:** 8 weeks +- **FTE:** 0.375 - **Costs:** $7,500 In this milestone we are going to implement [universal search](#universal-search) and one of the most requested features: [cross-chain transfers](#cross-chain-transfers) detection. @@ -248,12 +253,16 @@ In this milestone we are going to implement [universal search](#universal-search | 0d. | Docker | *N/A - will be provided by the first milestone.* | | 0e. | Article | We will publish an article that explains what was done as part of the grant | | 1. | Universal search | Search items through all the chains without the knowledge where it belongs. See [Universal search](#universal-search). | -| 2. | XCM transfers and teleports | Detect cross-chain transfers and display relevant information of involved chains and accounts: from chain, to chain, relayed at chain (reserve), sender, beneficiary, etc. Also add their listings to account detail and chain dashboard. See [Cross-chain transfers](#cross-chain-transfers) for more. | +| 2. | Metadata explorer | UI interface for exploring metadata retrieved from network's latest and historical versions of runtime spec. See [Metadata explorer](#metadata-explorer). +| 3. | Show related runtime metadata in items' detail | Show related metadata information directly in detail pages of individual items and interlink to metadata explorer. See [Item metadata](#item-metadata). +| 4. | Search input autocomplete | Autocomplete extrinsic and event name in the search input. See [Search input autocomplete for call and event names](#search-input-autocomplete-for-call-and-event-names). ## Future Plans There is a huge potential for future improvements which the Polkadot's community can benefit from. +We would like to definitely display information about XCM transfers and teleports. + As developers of most parachains implement their own custom modules/pallets it opens the opportunity to cooperate and customize Calamar explorer with UI/UX components and logic tailored to their needs. It relates to various XCM transactions which makes it even more complex and the more types will our explorer support the more it makes the users' lives easier. From 990c63578bd7555a84b72ba6d8f76e6d0461d69f Mon Sep 17 00:00:00 2001 From: flipchan Date: Thu, 19 Oct 2023 09:24:38 +0200 Subject: [PATCH 02/46] [RFP]socks5 support for JsonRpsee (#2056) * socks5 support * Update jsonrpsee-proxy-support.md * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A * Update docs/RFPs/jsonrpsee-proxy-support.md Co-authored-by: S E R A Y A --------- Co-authored-by: S E R A Y A --- docs/RFPs/jsonrpsee-proxy-support.md | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 docs/RFPs/jsonrpsee-proxy-support.md diff --git a/docs/RFPs/jsonrpsee-proxy-support.md b/docs/RFPs/jsonrpsee-proxy-support.md new file mode 100644 index 00000000000..711c6633646 --- /dev/null +++ b/docs/RFPs/jsonrpsee-proxy-support.md @@ -0,0 +1,75 @@ +# Socks5 proxy support for JsonRpsee + +* **Status:** Open +* **Proposer:** flipchan + +## Project Description :page_facing_up: + +[JsonRpsee](https://github.com/paritytech/jsonrpsee) is an opensource Rust library used by several para and relay chain client libraries to connect to chains over ws or rpc. + +## Background story + +Tor is a anonymization project that has been active for several years. By utilizing a traffic obfusication protocol to route data, it enables users to anonymize their internet traffic. Several blockchain projects leverage this technology to allow users to connect to nodes over tor, inputting the .onion address of the rpc provider. + +By providing a .onion address for a rpc/ws node, we can allow users to have more privacy by masking the origination of the request (the sender's ip address). + + +Gavin Wood mentioned onion-routing as an important future feature on Decoded 2023: +![](https://lh4.googleusercontent.com/jVXYOtm4ORONGqAdtpj3tS4RUgpNJP3lAST_7byZOaT2FKzzGdvdVQOqf-2v1bhvWdniWuJDN2qBxkjYvMByqKXc9v6odzULbWla-sflQlEITA1hC34vCiumr3FKtpuaLo0xwfJNH_j9G-1O1RWki8k) + +[In february 2023](https://forum.polkadot.network/t/privhost-public-polkadot-kusama-and-edgeware-nodes-with-tor-v3-onion-support/2093), a small public rpc provider was launched in order to provide .onion rpc endpoints for handful of chains in the ecosystem. +Privhost was later listed on the [awesome-substrate list](https://github.com/substrate-developer-hub/awesome-substrate#products-and-services). + + +In order to connect to a .onion site, a user must pass it's connection through a tor socks5 proxy in order to resolve the .onion domain and connect. + + +Several ecosystem projects want to add support for connecting to .onion, but are blocked due to JsonRpsee not having support for sock5 proxy. + + +Third party pr's that are waiting for JsonRpsee to support socks5: +- [Fedimint #391](https://github.com/fedimint/fedimint/issues/391#issuecomment-1643878929) +- [Uptest #15](https://github.com/uptest-sc/uptest/issues/15) + +On 4th of September of 2022 a [pr was created](https://github.com/paritytech/jsonrpsee/issues/870) to start the process of adding socks5 support for JsonRpsee. +Noone has had time to fix this issue and implement this feature, therefor this RFP. + + +## Motivation +- Enable client libraries to connect to .onion rpc nodes. + + +### Ecosystem projects that rely on JsonRpsee +- [Subxt](https://github.com/paritytech/subxt) +- [Substrate](https://github.com/paritytech/substrate) +- [Subwasm](https://github.com/chevdor/subwasm) +- [Uptest](https://github.com/uptest-sc/uptest) +- [Subway](https://github.com/AcalaNetwork/subway) + +## Deliverables :nut_and_bolt: + +* **Total Estimated Duration:** 4 weeks +* **Full-time equivalent (FTE):** 4 weeks +* **Total Costs:** 9000 USD(may be changed by the future team) + + +### Milestone 1 + +Please add additional milestones in the same way: +* **Estimated Duration:** Duration of milestone 1 +* **FTE:** 4 weeks +* **Costs:** 9000 USD(may be changed by the future team) + + +| Number | Deliverable | Specification | +| ------------- | ------------- | ------------- | +| 0a. | License | Apache 2.0 / MIT / Unlicense| +| 0b. | Documentation | Public documentation with implementation guides and sample code | +| 0c. | Testing Guide |Rust Unit tests| +| 0d. | Article |Article explaining how to utilize the socks5 support| +| 1. | Middleware layer | In order to enable socks5 support, several modifications of the `WsTransportClientBuilder` needs to be implemented, described in [issue #1162](https://github.com/paritytech/jsonrpsee/issues/1162) | +| 2. | Socks5 support |enable a jsonrpsee client to proxy connections using a socks5 proxy | + + +#### Demonstrations +- Connect to a .onion rpc node with jsonrpsee. From 95c382b7755bb7e32de323003996b39db3ded2b3 Mon Sep 17 00:00:00 2001 From: Noc2 Date: Thu, 19 Oct 2023 09:27:37 +0200 Subject: [PATCH 03/46] Update rfps page --- docs/rfps.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/rfps.md b/docs/rfps.md index 73ab405b258..62fc4f16dec 100644 --- a/docs/rfps.md +++ b/docs/rfps.md @@ -26,6 +26,7 @@ If you find an open RFP here that you think you can address, feel free to [submi | [anti-collusion_infrastructure.md](RFPs/anti-collusion_infrastructure.md) | 21.09.2023 | | [formal_guarantees_for_grandpa.md](RFPs/formal_guarantees_for_grandpa.md) | 12.10.2023 | | [ISO_20022.md](RFPs/ISO_20022.md) | 12.10.2023 | +| [jsonrpsee-proxy-support.md](RFPs/jsonrpsee-proxy-support.md) | 19.10.2023 | | [parachain_validation_conformance_testing.md](RFPs/parachain_validation_conformance_testing.md) | 18.01.2023 | | [sub-consensus.md](RFPs/sub-consensus.md) | 23.02.2022 | | [user-account-access-analysis.md](RFPs/user-account-access-analysis.md) | 07.01.2023 | From 6082d805923924991b2afcc5d6c045994f9bca58 Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Thu, 19 Oct 2023 12:51:51 -0500 Subject: [PATCH 04/46] Update index.md (#2059) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index 360c23aa51f..20e5c931579 100644 --- a/applications/index.md +++ b/applications/index.md @@ -72,7 +72,7 @@ Besides, **there is a clear difference between an application being accepted and | [Salaheldin Soliman](https://github.com/salaheldinsoliman) | [Solang Playground](Solang_Playground.md) | [GitHub](https://github.com/salaheldinsoliman) | ☐ | ☐ | ☐ | | [P2P.ORG](http://p2p.org/) | [P2P data platform](data_platform_with_deep_indexed_data_and_staking_reports.md) | [GitHub](https://github.com/p2p-org) | ☐ | ☐ | ☐ | | [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests](CoinFabrik_On_Ink_Integration_Tests.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☒ | ☒ | -| [Stake Plus Inc](https://stake.plus) | [Treasury Tracker](TreasuryTracker.md) | [GitHub](https://github.com/stake-plus) | ☐ | ☐ | ☐ | +| [Stake Plus Inc](https://stake.plus) | [Treasury Tracker](TreasuryTracker.md) | [GitHub](https://github.com/stake-plus) | ☐ | ☒ | ☒ | | [MOBR Systems](https://www.mobr.ai) | [Polkadot Analytics Platform](polkadot_analytics_platform.md) | [GitHub](https://github.com/mobr-ai) | ☐ | ☒ | ☐ | | [Infra3](https://network.infra-3.xyz) | [Hyperdot - Powerful data analysis and creations platform](Hyperdot.md) | [GitHub](https://github.com/Infra3-Network/hyperdot) | ☐ | ☐ | ☐ | | [David Semakula](https://github.com/davidsemakula) | [ink! analyzer (phase 2)](ink-analyzer-phase-2.md) | [GitHub](https://github.com/ink-analyzer) | ☐ | ☒ | ☐ | From 2aed1df339bab137cffa55766fa630bed6941c1e Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Fri, 20 Oct 2023 01:42:27 -0500 Subject: [PATCH 05/46] Update Syncra.md (#2060) --- applications/Syncra.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/applications/Syncra.md b/applications/Syncra.md index 20f2ea99ba2..3764804ae1f 100644 --- a/applications/Syncra.md +++ b/applications/Syncra.md @@ -3,6 +3,7 @@ - **Team Name:** Syncra - **Payment Address:** 15Geo1RfLLM1PmPsD4uggts1Ht5LrWUChBDruLPqt5EgFKPB (PolkaDOT - USDT) - **Level:** 2 +- **Status:** [Terminated](https://github.com/w3f/Grants-Program/pull/1762#issuecomment-1769273868) ## Project Overview @@ -286,4 +287,4 @@ Web3 Foundation Website, and Personal Recommendation. ### Previous grants you may have applied for -- Aleph Zero Grants program \ No newline at end of file +- Aleph Zero Grants program From ff79ffaea4a44a95991c1fcf14d88a68a8aa36e5 Mon Sep 17 00:00:00 2001 From: Diogo <112647953+dsm-w3f@users.noreply.github.com> Date: Fri, 20 Oct 2023 15:29:59 -0300 Subject: [PATCH 06/46] Update index.md to check first delivery and completed (#2062) * Update index.md * Update index.md * Update index.md * Update index.md --- applications/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/applications/index.md b/applications/index.md index 20e5c931579..2fcf4e1cc57 100644 --- a/applications/index.md +++ b/applications/index.md @@ -62,7 +62,7 @@ Besides, **there is a clear difference between an application being accepted and | [ZeroDAO](https://github.com/ZeroDAO) | [Melodot](./Melodot.md) | [GitHub](https://github.com/ZeroDAO) | ☐ | ☒ | ☒ | | [Starks](https://github.com/tur461) | [XCM tool for NFTs](./xNFT.md) | [GitHub](https://github.com/tur461) | ☐ | ☐ | ☐ | | [ChainSafe](https://chainsafe.io/) | [Polkadot Snap Maintenance](./maintenance/Substratesnap_Maintenance.md) | [GitHub](https://github.com/ChainSafe/metamask-snap-polkadot) | ☐ | ☐ | ☐ | -| [justmert](https://github.com/justmert) | [DOTLY: Revolutionizing Polkadot Account Statistics](./dotly.md) | [GitHub](https://github.com/justmert/dotly) | ☐ | ☐ | ☐ | +| [justmert](https://github.com/justmert) | [DOTLY: Revolutionizing Polkadot Account Statistics](./dotly.md) | [GitHub](https://github.com/justmert/dotly) | ☐ | ☒ | ☒ | | [Federico Cicciarella](https://www.linkedin.com/in/federicocicciarella/?originalSubdomain=it) | [Tracking Chain](./tracking_chain.md) | [GitHub](https://github.com/TrackingChains/TrackingChain) | ☐ | ☒ | ☐ | | [TPScore](https://github.com/its-a-setup) | [TPScore](./TPScore.md) | [GitHub](https://github.com/its-a-setup) | ☐ | ☒ | ☒ | | [Orochi Network](https://www.orochi.network/) | [Research and development MPC ECDSA](./orochi-network-orosign-part1.md) | [GitHub](https://github.com/orochi-network) | ☐ | ☒ | ☒ | @@ -88,7 +88,7 @@ Besides, **there is a clear difference between an application being accepted and | [Zondax AG](https://zondax.ch/) | [PoC Polkadot Conformance Tests](./polkadot_tests.md) | [GitHub](https://github.com/zondax) | ☐ | ☐ | ☐ | | [SO/DA zone](https://github.com/sodazone) | [Ocelloids XCM Transfer Monitoring Service](ocelloids_xcm_monitoring_service.md) | [GitHub](https://github.com/sodazone) | ☐ | ☐ | ☐ | | [Moonsong Labs](https://moonsonglabs.com/) | [StorageHub](./StorageHub.md) | [GitHub](https://github.com/Moonsong-Labs) | ☐ | ☐ | ☐ | -| [Jonathan Brown](https://acuity.social/) | [Hybrid Explorer Phase 2](hybrid2.md) | [GitHub](https://github.com/hybrid-explorer) | ☐ | ☐ | ☐ | +| [Jonathan Brown](https://acuity.social/) | [Hybrid Explorer Phase 2](hybrid2.md) | [GitHub](https://github.com/hybrid-explorer) | ☐ | ☒ | ☐ | | [Coong Crafts](https://coongcrafts.io/) | [DelightfulDOT](delightfuldot.md) | [GitHub](https://github.com/CoongCrafts) | ☐ | ☐ | ☐ | | [Lastic](https://www.lastic.xyz/) | [Lastic](Lastic.md) | [GitHub](https://github.com/LasticXYZ) | ☐ | ☐ | ☐ | @@ -101,7 +101,7 @@ Besides, **there is a clear difference between an application being accepted and | [Interstellar](https://www.interstellar.gg/) | [Interstellar - Wallet Phase 2](./Interstellar-network2.md) | [GitHub](https://github.com/Interstellar-Network) | ☐ | ☒ | ☒ | | [Valletech AB](https://valletech.eu/) | [DINFRA](./DINFRA.md) | [GitHub](https://gitlab.com/polkawatch) | ☐ | ☒ | ☐ | | [DAuth](https://github.com/DAuth-Network) | [DAuth](./dauth_network.md) | [GitHub](https://github.com/DAuth-Network) | ☐ | ☐ | ☐ | -| [Galaxy.Do](https://galaxy.do) | [Galaxy: Three-dimensional Web for Polkadot Users](./galaxy.md) | [GitHub](https://github.com/7flash) | ☐ | ☒ | ☐ | +| [Galaxy.Do](https://galaxy.do) | [Galaxy: Three-dimensional Web for Polkadot Users](./galaxy.md) | [GitHub](https://github.com/7flash) | ☐ | ☒ | ☒ | | [Web3 Labs Ltd](https://www.web3labs.com/) | [Sirato (Epirus) Substrate Explorer - Phase III](./sirato_substrate_phase3.md) | [GitHub](https://github.com/web3labs) | ☐ | ☒ | ☒ | | [Collective Intelligence Labs](https://collectiveintelligence.dev/)| [Omnichain Infrastructure](./CILA-omnichain-infrastructure.md) | [GitHub](https://github.com/Collective-Intelligence-Labs) | ☐ | ☒ | ☐ | | [TradeLink](https://tradelink.pro/) | [Sandox](./sandox.md) | [GitHub](https://github.com/BEARlogin) | ☐ | ☒ | ☐ | @@ -115,7 +115,7 @@ Besides, **there is a clear difference between an application being accepted and | [Talentica Software](https://www.talentica.com/) | [Implementation Benchmarking Milestone 3](ink-pallet-benchmarking-phase-2.md) | [GitHub](https://github.com/Nikhil-Desai-Talentica) | ☐ | ☒ | ☒ | | [Deep Ink Ventures GmbH](https://github.com/deep-ink-ventures) | [Stylograph](Stylograph.md) | [GitHub](https://github.com/deep-ink-ventures) | ☐ | ☒ | ☒ | | [Zeeve](https://www.zeeve.io) | [Ink Playground IDE Improvements](ink-playground-ide-improvements.md) | [GitHub](https://github.com/Zeeve-App) | ☐ | ☐ | ☐ | -| [Scio Labs](https://scio.xyz/) | [XCM Domain Name Service](xcm-domain-service.md) | [GitHub](https://github.com/scio-labs) | ☐ | ☒ | ☐ | +| [Scio Labs](https://scio.xyz/) | [XCM Domain Name Service](xcm-domain-service.md) | [GitHub](https://github.com/scio-labs) | ☐ | ☒ | ☒ | | [Gloslab](https://github.com/smiasojed) | [Contracts performance measurement tool proposal](contracts-tool.md) | [GitHub](https://github.com/smiasojed) | ☐ | ☒ | ☐ | | [Nikita Orlov PR](https://github.com/stringnick) | [Faucet chat based bot](faucet-bot.md) | [GitHub](https://github.com/stringnick) | ☐ | ☒ | ☒ | | [Societal Labs Ltd.](https://www.sctl.xyz/) | [Societal Saas Pricing](societal_saas_pricing.md) | [GitHub](https://github.com/sctllabs) | ☐ | ☒ | ☒ | @@ -126,9 +126,9 @@ Besides, **there is a clear difference between an application being accepted and | [Zaniyar Jahany](https://github.com/Zaniyar/) | [Grantmaster](grantmaster.md) | [GitHub](https://github.com/Zaniyar/plant2earn/) | ☐ | ☐ | ☐ | | [FiDi Tech](https://fidi.tech/) | [FiDi DotSight: Analytics Data Platform for DotSama](fidi-dotsight-analytics.md)| [GitHub](https://github.com/fidi-tech) | ☐ | ☒ | ☐ | | [Ideal Labs](https://www.idealabs.network/) | [Cryptex](cryptex.md)| [GitHub](https://github.com/ideal-lab5) | ☐ | ☒ | ☐ | -| [Xcavate](https://xcavate.io/) | [Real estate centric lending and asset minting protocol](Xcavate.md)| [GitHub](https://github.com/xcavateblockchain) | ☐ | ☐ | ☐ | +| [Xcavate](https://xcavate.io/) | [Real estate centric lending and asset minting protocol](Xcavate.md)| [GitHub](https://github.com/xcavateblockchain) | ☐ | ☒ | ☒ | | [Syncra](https://syncra.xyz) | [No Code DAO Maker and ZK Powered Private Voting Solution](Syncra.md)| [GitHub](https://github.com/SyncraDAO) | ☐ | ☐ | ☐ | -| [P2P.ORG](http://p2p.org/) | [Validator Monitoring Service](Validator_Monitoring_Service.md)| [GitHub](https://github.com/p2p-org/polkadot_monitoring_service) | ☐ | ☐ | ☐ | +| [P2P.ORG](http://p2p.org/) | [Validator Monitoring Service](Validator_Monitoring_Service.md)| [GitHub](https://github.com/p2p-org/polkadot_monitoring_service) | ☐ | ☒ | ☒ | | [Colorful Notion](https://github.com/colorfulnotion) | [Deep Account Analytics in Three Tiers for the Polkadot Data Alliance](DeepAccountAnalytics-PolkadotDataAlliance.md)| [GitHub](https://github.com/colorfulnotion/) | ☐ | ☐ | ☐ | | [Dastanbek Samatov](https://dastansam.github.io/) | [ISO-8553 PoC implementation](ISO-8583-implementation.md)| [GitHub](https://github.com/dastanbeksamatov) | ☐ | ☒ | ☐ | | [Eiger](https://www.eiger.co/) | [Substrate Move System Pallet, pt. 1](Substrate_Move_System_Pallet_1.md)| [GitHub](https://github.com/eigerco) | ☐ | ☒ | ☒ | From 37256f34c6aeb771720505d40469e1a8492b474f Mon Sep 17 00:00:00 2001 From: Muhammed Irfan <50794925+MuhammedIrfan@users.noreply.github.com> Date: Mon, 23 Oct 2023 14:17:09 +0530 Subject: [PATCH 07/46] Update: Project Aurras - MVP - Phase 2 (#2061) * amend proposal * add staking and payout features link * update team details * updated original estimation * add estimated delivery date * docs: update payment method to fiat --- applications/project_aurras_mvp_phase_2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/project_aurras_mvp_phase_2.md b/applications/project_aurras_mvp_phase_2.md index accc4756723..cb9f659c9ac 100644 --- a/applications/project_aurras_mvp_phase_2.md +++ b/applications/project_aurras_mvp_phase_2.md @@ -1,7 +1,7 @@ # Project Aurras - MVP - Phase 2 - **Team Name:** HugoByte AI Labs Private Limited -- **Payment Address:** 1G5Fo5KfLSopTFKPRDUZgeCSU5PNY2kkD5 (BTC) +- **Payment Address:** Fiat 20.10.2023, 06:33 UTC - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 ## Project Overview :page_facing_up: From a464436a226237c26250936db577443b0076863e Mon Sep 17 00:00:00 2001 From: valeriacaracciolo <71491710+valeriacaracciolo@users.noreply.github.com> Date: Mon, 23 Oct 2023 19:21:28 +0200 Subject: [PATCH 08/46] Create CoinFabrik_On_Ink_Integration_Tests_2.md (#1980) * Create CoinFabrik_On_Ink_Integration_Tests_2.md * Update CoinFabrik_On_Ink_Integration_Tests_2.md * Update CoinFabrik_On_Ink_Integration_Tests_2.md We reduced the grant proposal to the Milestone Execution and Further Analysis, leaving the last milestone for a next proposal. We also corrected a typo on the numbering of mentioned functions, and removed a comment on accounts that did not correspond. --- .../CoinFabrik_On_Ink_Integration_Tests_2.md | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 applications/CoinFabrik_On_Ink_Integration_Tests_2.md diff --git a/applications/CoinFabrik_On_Ink_Integration_Tests_2.md b/applications/CoinFabrik_On_Ink_Integration_Tests_2.md new file mode 100644 index 00000000000..86d5225d81d --- /dev/null +++ b/applications/CoinFabrik_On_Ink_Integration_Tests_2.md @@ -0,0 +1,182 @@ +# CoinFabrik On Ink Integration Tests 2 +- **Team Name:** CoinFabrik (Nektra S.A) +- **Payment Address:** 0xf488039EDe6B38D7689fDCC6A9FC2dd0EF39D54e (USDC) +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 + +## Project Overview :page_facing_up: + +### Overview + +We have discovered that integration tests for ink! contracts lack some of the functionalities, or present implementation differences, when compared to E2E testing. + +Integration tests run significantly faster than E2E (end-to-end) tests. If a full range of functionalities were provided, it could reduce testing and QA times. + +Our intention is to `flatten the anvil` of ink! integration testing. With a properly flattened anvil, quality tools can be built. + + +### Project Details + +We have conducted a comprehensive analysis to identify any missing functionalities in integration tests and implementation differences with E2E tests, and to propose and develop new testing features based on our findings. This analysis was carried as part of a previous grant ([link](https://github.com/w3f/Grant-Milestone-Delivery/pull/998)). + +With this new grant, our objective is to implement our findings. Specifically, we aim to address functions in integration testing that have missing implementations or show differences when compared to e2e tests. We will add our contributions into the [ink! project repository](https://github.com/paritytech/ink ) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). + +### Ecosystem Fit + +Having a comprehensive set of functionalities available for integration tests would bring numerous benefits to the entire community, including improved reliability, code quality and maturity, and faster feedback loops. + +Integration tests are useful during their development and they are quicker than E2E tests. We learned this while working on fuzzing detection techniques during the [Proof of Concept of Scout](https://github.com/CoinFabrik/web3-grant), which we performed in collaboration with [researchers from the University of Buenos Aires](https://lafhis.dc.uba.ar/home). We believe that having a complete set of functionalities for integration tests would be useful for other teams working in the development of ink! smart contracts. + +## Team :busts_in_silhouette: + +### Team members + +- Ariel Wassbein, Head of Research. +- Agustin Aon, Technical Lead. +- Valeria Caracciolo, Business Development. +- CoinFabrik's development and QA teams. + +### Contact + +- **Contact Name:** Valeria Caracciolo +- **Contact Email:** valeria.caracciolo@coinfabrik.com +- **Website:** https://www.coinfabrik.com/ + +### Legal Structure + +- **Registered Address:** Dr. Emilio Ravignani 2394, C1425 CABA, Argentina. +- **Registered Legal Entity:** Nektra S.A. + +### Team's experience + +We are a research and development company specialized in Web3, with a strong background in cybersecurity. Founded in 2014, we have worked on over 200 blockchain-related projects, EVM based and also for Solana, Algorand, and Polkadot. Beyond development, we offer security audits through a dedicated in-house team of senior cybersecurity professionals, currently working on code in Substrate, Solidity, Clarity, Rust, and TEAL. + +Our team has an academic background in computer science and mathematics, with work experience focused on cybersecurity and software development, including academic publications, patents turned into products, and conference presentations. Furthermore, we have an ongoing collaboration on knowledge transfer and open-source projects with the University of Buenos Aires. + +As well, CoinFabrik has been providing Quality Assurance as a service to development teams, accumulating valuable expertise in the field for a considerable period of time. Our clients highly appreciate this service, and as a result, we are eager to expand our capabilities to the ink! ecosystem. + + +### Team Code Repos + +- https://github.com/CoinFabrik +- https://github.com/CoinFabrik/on-ink-integration-tests +- https://github.com/CoinFabrik/scout +- https://github.com/CoinFabrik/web3-grant + +### Team LinkedIn Profiles (if available) + +- https://www.linkedin.com/in/arielwaissbein/ +- https://www.linkedin.com/in/agustin-aon/ +- https://www.linkedin.com/in/valeriacaracciolo/ + + +## Development Status :open_book: + +We have identified 24 functions exposed for their usage in integration and E2E tests in the file [env_access.rs](https://github.com/paritytech/ink/blob/master/crates/ink/src/env_access.rs) of the ink! repository. Of these 24 functions, we determined that there are 9 functions to work on with explicit plans, and 13 functions for which there might be implementation differences that remain to be analyzed. Two functions were deemed unfeasible for their implementation in the integration testing environment. + + +**Table 1: Status of functions exposed in integration and e2e testing environments.** +| Issue Number | Function | Implemented Integration Tests | Implemented Integration E2E Tests | Status | +|--------------|-----------------------------|-------------------------------|------------------------|------------------------------------------------------------------------------------------------| +| 1 | default_accounts() | Yes | Yes | Implementation Difference. | +| 2 | set_contract_storage() | Yes | Yes | Missing limitation on Integration Testing. | +| 3 | invoke_contract_delegate() | No | Yes | Missing Function Implementation on Integration Testing. | +| 4 | invoke_contract() | No | Yes | Missing Function Implementation on Integration Testing | +| 5 | gas_left() | No | Yes | Missing Function Implementation on Integration Testing. Unfeasible Implementation. | +| 6 | set_code_hash() | No | Yes | Missing Function Implementation on Integration Testing. | +| 7 | instantiate_contract() | No | Yes | Missing Function Implementation on Integration Testing. | +| 8 | caller_is_origin() | No | Yes | Missing Function Implementation on Integration Testing. | +| 9 | code_hash() | No | Yes | Missing Function Implementation on Integration Testing. | +| 10 | own_code_hash() | No | Yes | Missing Function Implementation on Integration Testing. | +| 11 | call_runtime() | No | Yes | Missing Function Implementation on Integration Testing. Unfeasible Implementation. | +| 12 | caller() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 13 | transferred_value() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 14 | weight_to_fee() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 15 | block_timestamp() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 16 | account_id() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 17 | balance() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 18 | block_number() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 19 | minimum_balance() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 20 | terminate_contract() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 21 | transfer() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 22 | hash_bytes() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 23 | hash_encoded() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | +| 24 | ecdsa_recover() | Yes | Yes | Pending Analysis for Corrections in Implementation Differences. | + +For these two sets of functions, with explicit implementation plans and pending analysis, the following work remains to be performed. +- The implementation and correction of implementation differences of the 9 functions with explicit plans. These are the functions with issue numbers 1, 2, 3, 4, 6, 7, 8, 9, 10. +- An analysis of the remaining 13 functions, which are implemented both for integration and E2E tests, in order to first estimate and then correct implementation differences (if any). These correspond to functions issue numbers 12 through 24. +- QA: Adding tests to integrate the functions we add or modify to the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). +- Report Describing our Contribution. + +Considering the dependency of several functions on the implementation of `instantiate_contract()`, we propose to split the work above into two milestones. All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink ) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). + +We have also identified a bug in the e2e tests. When contracts are in a workspace with dependencies defined in `Cargo.toml`, and these dependencies are inherited in contracts, the e2e tests fail to compile. However, manually specifying dependencies in each contract resolves the issue. We've logged this bug on GitHub [Issue #1919](https://github.com/paritytech/ink/issues/1919) and will be addressing it as part of our work in Milestone 1. + +## Development Roadmap :nut_and_bolt: + +### Overview + +- **Total Estimated Duration:** 4 weeks +- **Full-Time Equivalent (FTE):** 4 FTE +(0.50 Project Manager, +0.50 Tech Lead, +1 Full time Sr Rust Developer, +1 Full Time SemiSr Rust Developer, +1 Full Time QA Specialist) +- **Total Costs:** 30,000 USD + +### Milestone 1: Execution and Further Analysis +- **Estimated duration:** 4 weeks +- **FTE:** 4 +- **Costs:** 30,000 USD + +| Number | Deliverable | Specification | +| ----- | ----------- | ------------- | +| 0a. | License | MIT +| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the functions to be implemented/corrected in this milestone, corresponding to issues 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract().

Documentation and test cases will be provided for the 13 functions with remaining analysis. If implementation differences are found in these functions, an estimate for their correction and an implementation idea will also be provided in our report.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. +| 0c. | Testing and Testing Guide | The newly developed functionalities will be documented and tested following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). A testing guide will be included. +| 0d. | Docker | Does not apply at this stage. +| 0e. | Article | We will publish an updated report summary in our blog at https://blog.coinfabrik.com/. + **1** | Develop | We will develop the missing functionalities or correct implementation differences for functions 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract(). All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. + **2** | Review and Estimate | We will review the remaining 13 unanalysed functions, which are implemented both for integration and e2e tests. For these functions we will provide documentation, a test case and an implementation estimation if applicable. These correspond to functions issue numbers 12 through 24. + **3** | Quality Assurance | We will adhere to existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md) and add necessary tests to integrate the new implemented or corrected functions to the [ink! project repository](https://github.com/paritytech/ink). + + + +## Future Plans + +After finishing the Milestone 1: Execution and Further Analysis, we will submit a new grant proposal to continue with the implementation of the remaining functions. We will include specific references to developments associated with the estimations resulting from the further analysis of functions issue numbers 12 through 24. + +### Next Milestone: Execution +- **Estimated duration:** 4 weeks +- **FTE:** 4 +- **Costs:** 30,000 USD + + + +| Number | Deliverable | Specification | +| ----- | ----------- | ------------- | +| 0a. | License | MIT +| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the the functions to be implemented in this milestone, corresponding to issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

Our report will also document the implementation of any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work that was required in order to ensure consistency between integration and e2e tests.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. +| 0c. | Testing and Testing Guide | The newly developed functionalities will be documented and tested following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). A testing guide will be included. +| 0d. | Docker | Does not apply at this stage. +| 0e. | Article | We will publish an updated report summary in our blog at https://blog.coinfabrik.com/. + **1** | Development | We will implement the missing functionalities or resolve implementation differences for function issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

We will implement any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work required in order to ensure consistency between integration and e2e tests.

All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. +**2** | Quality Assurance| We will adhere to existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md) and add necessary tests to integrate the new implemented or corrected functions to the [ink! project repository](https://github.com/paritytech/ink). + + +Moving forward, we have two projects in mind: + +- Research and develop an advanced testing automation solution for ink! smart contracts. +- Improve our open source bug-detection tool [Scout](https://coinfabrik.github.io/scout/ ). + + + +## Referral Program (optional) :moneybag: + +## Additional Information :heavy_plus_sign: + +**How did you hear about the Grants Program?** Richard Casey from Parity brought this program to our attention, and we have already successfully delivered two applications as a result. + +During our inquiries for this application, we briefly consulted Sam Ruberti from the ink! Team and David Hawig from the Web3 Foundation. Their encouragement motivated us to proceed with this presentation. + From 146ec9b3bb4ad51bef521c04653d6c19b77e4f5a Mon Sep 17 00:00:00 2001 From: David Hawig Date: Mon, 23 Oct 2023 19:24:15 +0200 Subject: [PATCH 09/46] Update index.md Add CoinFabrik On Ink Integration Tests 2 --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index 2fcf4e1cc57..aaa0c272946 100644 --- a/applications/index.md +++ b/applications/index.md @@ -51,6 +51,7 @@ Besides, **there is a clear difference between an application being accepted and | [LimeChain](https://github.com/LimeChain) | [Polkadot Protocol Conformance Tests Research](./Polkadot-Protocol-Conformance-Tests.md) | [GitHub](https://github.com/LimeChain) | ☐ | ☐ | ☐ | | [KodaDot](https://kodadot.xyz/) | [AssetsHub NFT indexer](./kodadot_assethub_nft_indexer_statemine_statemint.md) | [GitHub](https://github.com/kodadot) | ☐ | ☐ | ☐ | | [Apollos Collective](https://rhys.tech) | [Infimum](./infimum.md) | [GitHub](https://github.com/rhysbalevicius) | ☐ | ☐ | ☐ | +| [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☒ | ☒ | [🔝](#top) From 6acb1b2d6c63a9de19cf4b6f8995cfe29730ab71 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Mon, 23 Oct 2023 19:24:52 +0200 Subject: [PATCH 10/46] Update index.md fix progress --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index aaa0c272946..c99ba20f32e 100644 --- a/applications/index.md +++ b/applications/index.md @@ -51,7 +51,7 @@ Besides, **there is a clear difference between an application being accepted and | [LimeChain](https://github.com/LimeChain) | [Polkadot Protocol Conformance Tests Research](./Polkadot-Protocol-Conformance-Tests.md) | [GitHub](https://github.com/LimeChain) | ☐ | ☐ | ☐ | | [KodaDot](https://kodadot.xyz/) | [AssetsHub NFT indexer](./kodadot_assethub_nft_indexer_statemine_statemint.md) | [GitHub](https://github.com/kodadot) | ☐ | ☐ | ☐ | | [Apollos Collective](https://rhys.tech) | [Infimum](./infimum.md) | [GitHub](https://github.com/rhysbalevicius) | ☐ | ☐ | ☐ | -| [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☒ | ☒ | +| [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☐ | ☐ | [🔝](#top) From 840cecc9f410283e854c8e89409b2b46cfdd8d71 Mon Sep 17 00:00:00 2001 From: Noc2 Date: Mon, 23 Oct 2023 19:41:33 +0200 Subject: [PATCH 11/46] fix website --- applications/CoinFabrik_On_Ink_Integration_Tests_2.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/CoinFabrik_On_Ink_Integration_Tests_2.md b/applications/CoinFabrik_On_Ink_Integration_Tests_2.md index 86d5225d81d..684228a91ea 100644 --- a/applications/CoinFabrik_On_Ink_Integration_Tests_2.md +++ b/applications/CoinFabrik_On_Ink_Integration_Tests_2.md @@ -133,11 +133,11 @@ We have also identified a bug in the e2e tests. When contracts are in a workspac | Number | Deliverable | Specification | | ----- | ----------- | ------------- | | 0a. | License | MIT -| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the functions to be implemented/corrected in this milestone, corresponding to issues 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract().

Documentation and test cases will be provided for the 13 functions with remaining analysis. If implementation differences are found in these functions, an estimate for their correction and an implementation idea will also be provided in our report.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. +| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the functions to be implemented/corrected in this milestone, corresponding to issues 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract().

Documentation and test cases will be provided for the 13 functions with remaining analysis. If implementation differences are found in these functions, an estimate for their correction and an implementation idea will also be provided in our report.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. | 0c. | Testing and Testing Guide | The newly developed functionalities will be documented and tested following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). A testing guide will be included. | 0d. | Docker | Does not apply at this stage. | 0e. | Article | We will publish an updated report summary in our blog at https://blog.coinfabrik.com/. - **1** | Develop | We will develop the missing functionalities or correct implementation differences for functions 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract(). All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. + **1** | Develop | We will develop the missing functionalities or correct implementation differences for functions 1-default_accounts(), 2-set_contract_storage() and 7-instantiate_contract(). All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. **2** | Review and Estimate | We will review the remaining 13 unanalysed functions, which are implemented both for integration and e2e tests. For these functions we will provide documentation, a test case and an implementation estimation if applicable. These correspond to functions issue numbers 12 through 24. **3** | Quality Assurance | We will adhere to existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md) and add necessary tests to integrate the new implemented or corrected functions to the [ink! project repository](https://github.com/paritytech/ink). @@ -157,11 +157,11 @@ After finishing the Milestone 1: Execution and Further Analysis, we will submit | Number | Deliverable | Specification | | ----- | ----------- | ------------- | | 0a. | License | MIT -| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the the functions to be implemented in this milestone, corresponding to issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

Our report will also document the implementation of any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work that was required in order to ensure consistency between integration and e2e tests.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. +| 0b. | Documentation | We will write a comprehensive report that compares the functionalities of integration tests and E2E (End-to-End) tests. This report will focus on the the functions to be implemented in this milestone, corresponding to issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

Our report will also document the implementation of any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work that was required in order to ensure consistency between integration and e2e tests.

If applicable, we will suggest additional tests outside of the scope of this milestone. Particularly, for functions declared outside of the env_access.rs file, but that could be related to integration or e2e testing. | 0c. | Testing and Testing Guide | The newly developed functionalities will be documented and tested following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md). A testing guide will be included. | 0d. | Docker | Does not apply at this stage. | 0e. | Article | We will publish an updated report summary in our blog at https://blog.coinfabrik.com/. - **1** | Development | We will implement the missing functionalities or resolve implementation differences for function issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

We will implement any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work required in order to ensure consistency between integration and e2e tests.

All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. + **1** | Development | We will implement the missing functionalities or resolve implementation differences for function issues 3-invoke_contract_delegate(), 4-invoke_contract(), 6-set_code_hash(), 8-caller_is_origin(), 9-code_hash(), 10-own_code_hash().

We will implement any missing functionalities, or correct implementation differences, for the 13 functions with issues 12 through 24. For this group, we will document any additional work required in order to ensure consistency between integration and e2e tests.

All these implementations or modifications will be pushed into the [ink! project repository](https://github.com/paritytech/ink) following existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md).

If applicable, we will develop additional tests or make ad hoc improvements to the ink codebase necessary for the completion of this milestone. Particularly for functions declared outside the env_access.rs file that might be related to integration or end-to-end testing. **2** | Quality Assurance| We will adhere to existing [contribution guidelines](https://github.com/paritytech/ink/blob/master/CONTRIBUTING.md) and add necessary tests to integrate the new implemented or corrected functions to the [ink! project repository](https://github.com/paritytech/ink). From 7578af282bf77f1e1dfb33b7f3e91e074bc9e773 Mon Sep 17 00:00:00 2001 From: Rostislav Litovkin <77352013+RostislavLitovkin@users.noreply.github.com> Date: Tue, 24 Oct 2023 17:49:00 +0200 Subject: [PATCH 12/46] Create Plutonication.md (#1947) * Create Plutonication.md * Update Plutonication.md * Update Plutonication.md * Update Plutonication.md --- applications/Plutonication.md | 497 ++++++++++++++++++++++++++++++++++ 1 file changed, 497 insertions(+) create mode 100644 applications/Plutonication.md diff --git a/applications/Plutonication.md b/applications/Plutonication.md new file mode 100644 index 00000000000..75c744d1de2 --- /dev/null +++ b/applications/Plutonication.md @@ -0,0 +1,497 @@ +# Plutonication + +- **Team Name:** Plutonication +- **Payment Address:** 1WmPE1X9Ykpb7QcVamPtUSRjEZy2GMDeTm5N72DyXYiqMCo (USDT) +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 + +## Project Overview :page_facing_up: + +### Overview + +Please provide the following: + +#### If the name of your project is not descriptive, a tag line (one sentence summary). + +- Communications protocol that enables seamless interactions between dApps and wallets across all platforms. + +#### A brief description of your project. + +- Plutonication allows users to connect PlutoWallet to other dApps seamlessly on any platforms, accross multiple codebases. +DApp just generates a QR code and once it is scanned in the wallet, they will pair and the wallet will be able to receive transaction requests from the dApp. It works on the same principle as WalletConnect protocol. + +- You can see a short (90 sec) demo here: https://youtu.be/hw2B8-sBc9A?si=O8MiWa0Wq1jxfZdr + +#### An indication of how your project relates to / integrates into Substrate / Polkadot / Kusama. + +- Currently, the only way to connect your mobile wallet to other dApps is to use Wallet connect protocol, or a very clunky Polkadot Vault (Parity signer). + +- We think, we will be good competitors to WalletConnect and that we will do will better than them! + +- Our Plutonication Extension already works with most of the web dApps as supposed to WalletConnect, which is implemented into only a handful of dApps. + +- WalletConnect is also only available in javascript and we would like to expand it further to other programming languages. + +- C# is a very popular programming language for games and there have not been much focus on it in the Polkadot Ecosystem appart from Ajuna Network and their excellent Substrate.NetApi. We are dirrectly communicating with Ajuna developers to help better coordinate the Substrate.NetApi development and Plutonication, so that their are dirrectly compatible with each other. + +#### An indication of why your team is interested in creating this project. + +- We have been very pationate about Plutonication since the beginning. We have noticed the lack of WalletConnect protocol before it was available. + +- We have been working on Plutonication in our free time to prove the concepts are possible. + +- We have also landed a second place at Polkadot Global Series: Europe edition 2023 hackathon in Web3 and Tooling category. + +### Project Details + +We expect the teams to already have a solid idea about your project's expected final state. Therefore, we ask the teams to submit (where relevant): + +#### Data models / API specifications of the core functionality + +Native Plutonication: + +```mermaid +flowchart LR + +subgraph Cloud +S[Plutonication Websocket Server] +end + +subgraph Any device +D[dApp using Plutonication] +end + +subgraph Phone +W["Mobile wallet + Private key always stays here"] +end + +S -- Receive signed payload --> D +D -- Send extrinsic payload --> S + +S -- Receive extrinsic payload --> W +W -- Send signed payload --> S + +D -. Scan QR code for establishing connection .-> W; +``` + +Plutonication on existing polkadot.js apps: +```mermaid +flowchart LR + +subgraph Cloud +S[Plutonication Websocket Server] +end + +subgraph Web +D[dApp using Polkadot.js] ~~~ E[Plutonication Extension] +E -. Connection via Polkadot.js extension .- D +end + +subgraph Phone +W["Mobile wallet + Private key always stays here"] +end + +S -- Receive signed payload --> E +E -- Send extrinsic payload --> S + +S -- Receive extrinsic payload --> W +W -- Send signed payload --> S + +E -. Scan QR code for establishing connection .-> W; +``` + +#### An overview of the technology stack to be used + +1) Plutonication server (Python): Flask, Flask-SocketIO +2) Mobile Wallet: https://github.com/rostislavLitovkin/plutowallet +3) Plutonication Native (C#): SocketIOClient, Substrate.NetApi +4) Plutonication Native (TS): socket.io-client, Polkadot.js +5) Plutonication Extension: socket.io-client, Polkadot.js extension + +#### Documentation of core components, protocols, architecture, etc. to be deployed + +##### Plutonication Server +- Used for reliable establishing of connection. +- Passes payloads between Wallets and dApps. + +##### Mobile Wallet +- Has access to the private key +- signs the payloads and sends them back to the dApp. +- Never exposes the private key + +##### dApp +- needs to have access to either: Plutonication Native / Plutonication Extension + +##### Plutonication Native +- A simple package that allows the dApp get connected with the Mobile Wallet. +- Connects the dApp with the Plutonication server. +- Helps to generate a QR code for the Wallet to establish the connection. + +##### Plutonication Extension +- a polkadot.js extension that works with any existing dApp that supports polkadot.js extension. +- Connects the dApp with the Plutonication server. +- Generate a QR code for the Wallet to establish the connection. + +#### PoC/MVP or other relevant prior work or research on the topic +- Second place at Polkadot Global Series: Europe edition 2023 hackathon in Web3 and Tooling category. +- https://github.com/cisar2218/Plutonication +- Plutonication is integrated to: https://github.com/rostislavLitovkin/plutowallet +- https://github.com/rostislavLitovkin/plutonicationextension + +#### What your project is _not_ or will _not_ provide or implement + +- Any improvements to PlutoWallet appart from the things needed for Plutonication to work in the PlutoWallet. + +- Although it is planned support Kotlin and Swift programming languages as well, it is not part of this grant proposal. + +- We are certainly willing to make PRs to other popular dApps to utilise Plutonication, it is also not part of this grant proposal. We would be willing to do a follow-up grant or get a treasury funding to make the PRs. + +### Ecosystem Fit + +Help us locate your project in the Polkadot/Substrate/Kusama landscape and what problems it tries to solve by answering each of these questions: + +#### Where and how does your project fit into the ecosystem? + +- Our project is comparable to WalletConnect, which was also our inspiration. + +##### [WalletConnect](https://walletconnect.com/) +- When we started making our first prototypes in February, WalletConnect was not available in the Polkadot Ecosystem yet. +Even thought they have taken a lot of time and had a lot more experience then us, they were unable to make quick and elegant deliveries. +WalletConnect still is not supported by most of the dApps. We think we can do better. Actually, we already did. + +- We made a Plutonication Extension, which already allows you to interact with existing dApps, even though they have not implemented the Plutonication standard directly. This can be a perfect middle ground during the transition of popularizing the Plutonication. Even if the user wanted to use a new niche dApp, they can do so with Plutonication. + +- Wallet connect is also only supported in javascript. We want to make Plutonication available in more languages, including a very popular C# language, which is mostly used for game development. We will make web3 gaming possible on game consoles, thanks to the Plutonication. + +- WalletConnect's server solution (also known as WalletConnect cloud) is not opensourced. We want to be open to everybody and fully opensourced. + +##### [SubConnect](https://github.com/Koniverse/SubConnect) +- This is a great aggregation of wallets. This certainly improves the UX and simplifies the development for developers. However, it is not trying to do the same thing as Plutonication. Plutonication tries to achieve connection between 2 different platforms (like mobile wallet on Android and dApp on web on Windows). + +- It may be certainly a good idea to talk to SubWallet to implement Plutonication into the SubConnect solution. + +##### [Tesseract](https://github.com/tesseract-one/Tesseract.rs) + +- Tesseract is a great solution for connecting a wallet and a dApp together on a single device. However, Plutonication allows wallets and dApps to be connected across different devices. + +##### [@talismn/connect](https://github.com/TalismanSociety/talisman-connect) + +- This is similar to SubConnect. Once again, we try to solve a completely different problem. + +#### Who is your target audience (parachain/dapp/wallet/UI developers, designers, your own user base, some dapp's userbase, yourself)? + +- dApps developers - To integrate the Plutonication in their dApps. We will ensure that the developers will receive a good documentation. + +- Wallet developers - We are welcoming other wallets to use the Plutonication. We would like to help them make this possible. + +- Users - In the end, it will be mainly used by mobile focused users. They will be able to interact with web3 apps on unusual platforms, like game consoles, smartwatches ... + +#### What need(s) does your project meet? + +- You are unable securely interact with dApps on gaming consoles, smartwatches and other unusual platforms. Without Plutonication, you would have to expose your private key, which is very unsafe. + +- You can also interact with existing web dApps with your mobile wallet. Again, you do not need to expose your private key to multiple places (in this case browser extension wallet), which would be very unsafe. + +#### Are there any other projects similar to yours in the Substrate / Polkadot / Kusama ecosystem? + +- Yes, WalletConnect. + +#### If so, how is your project different? + +- We support more programming languages. We also have a browser extension that enables Plutonication on existing dApps. + +- WalletConnect also mainly focuses on Ethereum ecosystem. We are focusing only on Polkadot. + +## Team :busts_in_silhouette: + +### Team members + +#### Name of team leader: + +Rostislav Litovkin + +#### Names of team members: + +Valentina Gómez + +Dušan Jánsky + +### Contact + +- **Contact Name:** Rostislav Litovkin +- **Contact Email:** rostislavlitovkin@gmail.com +- **Website:** https://github.com/cisar2218/Plutonication + +### Legal Structure + +- **Registered Address:** Píškova 1946/12, 155 00, Prague, Czech republic +- **Registered Legal Entity:** None + +### Team's experience + +#### [Rostislav Litovkin](http://rostislavlitovkin.pythonanywhere.com/aboutme) +- Alumnus at Polkadot Blockchain Academy 2023 in Berkeley +- Experienced .net MAUI developer, e.g.: + - [Galaxy Logic Game](https://github.com/RostislavLitovkin/galaxylogicgamemaui) (successful game for watches and mobiles, 50k+ downloads) +- Frontend developer at [Calamar explorer](https://calamar.app/) +- Successful student at Polkadot DevCamp #2 +- Successful student at [Solana Summer School](https://ackeeblockchain.com/school-of-solana) +- Polkadot Global Series 2023 (Europe) - second place +- Audience choice prize at EthPrague 2023 + +#### Valentina Gómez +- Alumnus at Polkadot Blockchain Academy 2023 - Berkeley. +- Full stack web developer in TeamClass. +- Financial Engineer + +#### Dušan Jánsky +- Alumnus at Polkadot Blockchain Academy 2023 in Berkeley +- Student at Faculty of Electrical Engineering Czech Technical University in Prague - Opens Informatics (specialization in computer games and computer graphics) +- Fullstack developer at [Universal Scientific Technologies](https://www.ust.cz/) +- Polkadot Global Series 2023 (Europe) - second place + +#### If anyone on your team has applied for a grant at the Web3 Foundation previously, please list the name of the project and legal entity here. + +Rostislav Litovkin helped with **Calamar.app - TopMonks s.r.o** + +### Team Code Repos + +- https://github.com/ThunderFly-aerospace/thumby +- https://github.com/topmonks/calamar +- https://github.com/RostislavLitovkin/GalaxyLogicGameMAUI +- https://github.com/RostislavLitovkin/Uniquery.Net + +#### Please also provide the GitHub accounts of all team members. If they contain no activity, references to projects hosted elsewhere or live are also fine. + +- https://github.com/cisar2218 +- https://github.com/rostislavlitovkin + +### Team LinkedIn Profiles (if available) + +- https://www.linkedin.com/in/dusan-jansky-6aab69239/ +- https://www.linkedin.com/in/valentinaga1/ + +## Development Status :open_book: + +If you've already started implementing your project or it is part of a larger repository, please provide a link and a description of the code here. In any case, please provide some documentation on the research and other work you have conducted before applying. This could be: + +- The idea was already tested by WalletConnect. Now, we are expanding it further in the Polkadot ecosystem. + +- We have already made working MVPs which can be found here: + + - https://github.com/cisar2218/Plutonication + + - https://github.com/rostislavLitovkin/plutowallet + + - https://github.com/rostislavLitovkin/plutonicationextension + +## Development Roadmap :nut_and_bolt: + +This section should break the development roadmap down into milestones and deliverables. To assist you in defining it, we have created a document with examples for some grant categories [here](../docs/Support%20Docs/grant_guidelines_per_category.md). Since these will be part of the agreement, it helps to describe _the functionality we should expect in as much detail as possible_, plus how we can verify and test that functionality. Whenever milestones are delivered, we refer to this document to ensure that everything has been delivered as expected. + +Below we provide an **example roadmap**. In the descriptions, it should be clear how your project is related to Substrate, Kusama or Polkadot. We _recommend_ that teams structure their roadmap as 1 milestone ≈ 1 month. + +> :exclamation: If any of your deliverables is based on somebody else's work, make sure you work and publish _under the terms of the license_ of the respective project and that you **highlight this fact in your milestone documentation** and in the source code if applicable! **Projects that submit other people's work without proper attribution will be immediately terminated.** + +### Overview + +- **Total Estimated Duration:** 2 months +- **Full-Time Equivalent (FTE):** 0.83 FTE +- **Total Costs:** 25,000 USD + +### Milestone 1 Plutonication Server (Python: Flask) + +- **Estimated Duration:** 1 month +- **FTE:** 0.33 +- **Costs:** 5,000 USD + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | MIT | +| **0b.** | Documentation | We will provide both **in code documentation for individual methods**. We will also provide a tutorial on how to run the Plutonication Server locally and in cloud. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone and for running the server in production. | +| 1. | PlutonicationServerFlask | A Python server with Flask and Flask-SocketIO used for establishing a stable websocket connection between the dApp and Wallet. Use of server is crucial for reliable establishing of connection. | +| 1a. | create_room | dApp creates room | +| 1b. | pubkey | Sends an account address (SS58 encoded) from wallet to dApp | +| 1c. | sign_payload | dApp requests an extrinsic payload signature | +| 1d. | sign_raw | dApp requests a raw message signature | +| 1e. | payload_signature | wallet provides an extrinsic payload signature | +| 1f. | raw_signature | wallet provides a raw message signature | +| 2. | database requirements | none | + +### Milestone 2 Plutonication C# version + +- **Estimated duration:** 1 month +- **FTE:** 0.5 +- **Costs:** 7500 USD + +> :exclamation: **The default deliverables 0a-0d below are mandatory for all milestones**, and deliverable 0e at least for the last one. + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | MIT | +| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a c# dApp. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in c# (with Plutonication and Substrate.NetApi) and a sample Wallet (PlutoWallet) | +| **0d.** | Docker | We will provide a Dockerfile for a sample dApp that can be used to test all the functionality delivered with this milestone. | +| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with Substrate.NetApi | +| 1a. | Initialize(AccessCredentials ac) -> void | Method used for initializing the PlutonicationDAppClient | +| 1b. | ReceiveAddress() -> Address | Handles the receiving of SS58 encoded address | +| 1c. | SendPayloadAsync(Payload payload) -> void | Method used for requesting an extrinsic payload sign | +| 1d. | SendRawAsync(bytes rawMessage) -> void | Method used for requesting a raw message sign | +| 2. | PlutonicationWalletClient | This would be a series of methods tailored for use with wallets. | +| 2a. | SendAddress() -> Address | Sends the SS58 encoded address of the account in the wallet | +| 2b. | SendSignedPayloadAsync(Payload payload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | +| 2c. | SendSignedRawAsync(bytes signedRaw) -> void | Method used for sending a signed raw message back to the dApp. | +| 3. | NuGet package | We will provide a NuGet package, which is commonly used it c# development. It is comparable to NPM packages in Javascript world. | +| 4. | Sample dApp | We will make a sample C# console dApp (with Plutonication and Substrate.NetApi) published to a public github repo. | + +### Milestone 3 Plutonication Typescript version + +- **Estimated Duration:** 1 month +- **FTE:** 0.5 +- **Costs:** 7500 USD + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | MIT | +| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a javascript/typescript dApp. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | +| **0d.** | Docker | We will provide a Dockerfile for a sample dApp that can be used to test all the functionality delivered with this milestone. | +| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with polkadot.js api | +| 1a. | Initialize(AccessCredentials ac) -> void | Method used for initializing the PlutonicationDAppClient | +| 1b. | ReceiveAddress() -> Address | Handles the receiving of SS58 encoded address | +| 1c. | SendPayloadAsync(Payload payload) -> void | Method used for requesting an extrinsic payload sign | +| 1d. | SendRawAsync(Bytes rawMessage) -> void | Method used for requesting a raw message sign | +| 2. | PlutonicationWalletClient | This would be a series of methods tailored for use with wallets. | +| 2a. | SendAddress(Address address) -> void | Sends the SS58 encoded address of the account in the wallet | +| 2b. | SendSignedPayloadAsync(Payload signedPayload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | +| 2c. | SendSignedRawAsync(bytes signedRaw) -> void | Method used for sending a signed raw message back to the dApp. | +| 3. | QR code pop-up | We will provide a function that would embed an HTML qr code popup into a dApp. The QR code is used for establishing a connection. | +| 4. | NPM package | We will provide an NPM package, which is commonly used it javascript/typescript development. | +| 5. | Sample dApp | We will make a sample typescript console dApp (with Plutonication and Polkadot.js api) published to a public github repo. | + +### Milestone 4 Plutonication extension + +- **Estimated Duration:** 1 month +- **FTE:** 0.33 +- **Costs:** 5,000 USD + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | MIT | +| **0b.** | Documentation | We will provide **inline documentation of the code**. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp (https://polkadot.js.org/apps/) and a sample Wallet (PlutoWallet) | +| **0d.** | Docker | We will not provide a docker file | +| **0e.** | Article | We will publish an article that explains what was done as part of the grant. We will mention how Plutonication is ground-breaking and can be used by anyone. | +| 1. | Plutonication Extension | This is a [polkadot.js extension](https://github.com/polkadot-js/extension) compatible browser extension for Plutonication. | +| 1a. | Inject(..) | Injects the browser extension into the polkadot.js dApp. | +| 1b. | ReceiveAddress(..) | Handles the receiving of SS58 encoded address | +| 1c. | SendPayloadAsync(..) | Method used for requesting an extrinsic payload sign | +| 1d. | ReceiveSignedPayloadAsync(..) | Method used for receiving a signed extrinsic payload data. This signed extrinsic payload will then be added to the extrinsic and submitted to chain. (Done automatically by polkadot.js) | +| 1e. | SendRawAsync(..) | Method used for requesting a raw message sign | +| 1f. | ReceiveSignedRawAsync(..) | Method used for receiving a signed raw message. | +| 2. | Chrome browser extension | Released to Chrome Web Store | + +## Future Plans + +Please include here + +#### how you intend to use, enhance, promote and support your project in the short term, and + +- Once all of these 4 milestones are completed, we will have a solid ground to start integrating Plutonication to other dApps. + +#### the team's long-term plans and intentions in relation to it. + +- Our goal would be to create multiple PRs to already popular dApps to utilise Plutonication. At that point, other wallet companies will have a solid motivation to start integrating Plutonication into their wallets too. + +- Further plans are to combine Plutonication with PlutoWallet custom layouts (find more in PlutoWallet readme: https://github.com/RostislavLitovkin/PlutoWallet) and make onboarding of new users easier. + +- The endgoal would be to become a defaultly used solution for wallet injection. + +## Referral Program (optional) :moneybag: + +You can find more information about the program [here](../README.md#moneybag-referral-program). +- **Referrer:** https://github.com/topmonks +- **Payment Address:** 32NoFbB4x8bZ7YNvjra1DUYcje2B2XQwP3 (BTC) + +- They are a grants alumni. + +## Additional Information :heavy_plus_sign: + +**How did you hear about the Grants Program?** - personal recommendation + +Here you can also add any additional information that you think is relevant to this application but isn't part of it already, such as: + +#### Work you have already done. + +- https://github.com/cisar2218/Plutonication + +- https://github.com/rostislavLitovkin/plutonicationextension + +- https://github.com/rostislavLitovkin/plutowallet + +#### If there are any other teams who have already contributed (financially) to the project. + +- Nobody has financially supported the project. + +#### Previous grants you may have applied for. + +- None yet. + +#### Why are you focusing on C#? Do you have any relation to Ajuna? + +- I was a c# developer and I still like it to this day. It is probably the best option for game development and in my opinion also the best way to develop mobile applications. +Originally, I wanted to create a mobile dApp with c# frontend, so I did my research and that is how I discovered Ajuna and their [Substrate.NetApi](https://github.com/SubstrateGaming/Substrate.NET.API). +It was an excellent tool to get started and without it, I would have probably gave up and moved on. I still noticed that few of the important features were missing, like these: + - how to securely connect a foreign wallet to a c# dApp. + - how to efficiently query NFT data. + - how to elegantly interact with smart contracts (namely ink! contracts) from c#. + +- So I started addressing them one by one. + - First is Plutonication. + - Second is https://github.com/rostislavlitovkin/uniquery.net (this one is already production ready) + - Third was just brainstormed during PBA. It might be my next project in the future. + +- Regarding Ajuna, I am currently in a very close relationship with them. We discuss a lot of the potential changes and updates made to the Substrate.NetApi. +They are very supportive to me. +Last week, I had a chance to represent Ajuna at the Token2049. So, I was showing off all of the projects that have built on the Substrate.NetApi so far ^^. + +#### Is Plutonication made just for PlutoWallet? + +- Although the name may suggest it, it is not true. The name came from the hackathon, so we figured out a combination of __Pluto + Comunication =__ **Plutonication**. Once we figure out a better name, we will rename it to something more generic. It is totally meant to be used by anyone. We are willing to write a good documentation to make it simple for any developers to use. + +#### Can you share some user numbers or other metrics that show adoption of PlutoWallet? + +- It is in an MVP stage currently, meaning it works quite well, suports all of the important features, can be run on any platform and demonstrates well the idea of customizable layouts. It is on a good track to get released by the end of this year. + +#### Regarding deliverable 4.1, you mean polkadot.js apps, not the extension, correct? + +- I truly meant [polkadot.js extension](https://github.com/polkadot-js/extension) (https://polkadot.js.org/docs/extension/usage/). +This Polkadot.js extension is implemented in polkadot.js.org/apps, which means, that it will also work with polkadot.js apps. + +- Also on the demo video, it already works with polkadot.js.org/apps ^^ + +- What I am trying to say is that it is not just limited to polkadot.js.org/apps, but it can work with any dApp that implements the extension package, which most of the dApps did. + +#### Wallet Connect does have both a [Dapp integration guide](https://docs.walletconnect.com/advanced/multichain/polkadot/dapp-integration-guide) and a [wallet integration guide](https://docs.walletconnect.com/advanced/multichain/polkadot/wallet-integration-guide) for Polkadot. Can you compare to this and what is missing that your solution would provide? + +- WalletConnect for Polkadot is not available for c#. + +- WalletConnect also is not optimised for use with Substrate.NetApi. +This is very important because all of the c# projects currently building on Polkadot ecosystem are using Substrate.NetApi. + +#### You point out that the only way to connect a mobile wallet to a Dapp is through Substrate Connect or Vault, but afaik mobile wallets such as Talisman and Fearless will also let you connect. + +- Substrate Connect / Vault are not very elegant and do not work on any device. The device needs to have access to a camera, which for example consoles do not have. Desktops also do not come with webcam out of the box. Smartwatches also do not have access to camera. + +- Talisman is not a mobile wallet. Sorry, I do not understand the second part of the question. + +#### How do you plan to get developers to use your solution? + +- The developers want to provide secure and easy to use dApps. If they do not have to deal about key management, they can focus on other parts of development. + +- For users, it is very risky to expose the private key. This way, they never expose their private key. The developers should recognize this risk and solve it with this easy to use solution. + +- As far as I know, this is the only solution so far for c# that allows the users to connect their wallet to a Substrate.NetApi dApp. From dc30407b4ccdd3d4cb3b0f046f4ddb633af90891 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Tue, 24 Oct 2023 19:25:33 +0200 Subject: [PATCH 13/46] Update index.md Add Plutonication --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index c99ba20f32e..e0daec38d8e 100644 --- a/applications/index.md +++ b/applications/index.md @@ -52,6 +52,7 @@ Besides, **there is a clear difference between an application being accepted and | [KodaDot](https://kodadot.xyz/) | [AssetsHub NFT indexer](./kodadot_assethub_nft_indexer_statemine_statemint.md) | [GitHub](https://github.com/kodadot) | ☐ | ☐ | ☐ | | [Apollos Collective](https://rhys.tech) | [Infimum](./infimum.md) | [GitHub](https://github.com/rhysbalevicius) | ☐ | ☐ | ☐ | | [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☐ | ☐ | +| [Plutonication](https://github.com/cisar2218/Plutonication) | [Plutonication](Plutonication.md) | [GitHub](https://github.com/cisar2218/Plutonication) | ☐ | ☐ | ☐ | [🔝](#top) From 0a09879e62a68e44eafcd0174e55e58dbda125de Mon Sep 17 00:00:00 2001 From: Nikhil W3F <142136841+nikw3f@users.noreply.github.com> Date: Wed, 25 Oct 2023 13:45:46 +0200 Subject: [PATCH 14/46] Aisland docsig milestone 2 (#2070) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index e0daec38d8e..9c1552c2d2d 100644 --- a/applications/index.md +++ b/applications/index.md @@ -69,7 +69,7 @@ Besides, **there is a clear difference between an application being accepted and | [TPScore](https://github.com/its-a-setup) | [TPScore](./TPScore.md) | [GitHub](https://github.com/its-a-setup) | ☐ | ☒ | ☒ | | [Orochi Network](https://www.orochi.network/) | [Research and development MPC ECDSA](./orochi-network-orosign-part1.md) | [GitHub](https://github.com/orochi-network) | ☐ | ☒ | ☒ | | [k/factory](https://k-f.co/) | [On-Chain Automated Treasury Management](./centrifuge-twamm.md) | [GitHub](https://github.com/centrifuge) | ☐ | ☐ | ☐ | -| [AISLAND DAO](https://aisland.io) | [Aisland Docsig](./Aisland-DocSig.md) | [GitHub](https://github.com/aisland-dao) | ☐ | ☒ | ☐ | +| [AISLAND DAO](https://aisland.io) | [Aisland Docsig](./Aisland-DocSig.md) | [GitHub](https://github.com/aisland-dao) | ☐ | ☒ | ☒ | | [Eiger](https://www.eiger.co/) | [Storage solution on Polkadot](./Eiger_Storage_on_Polkadot_1.md) | [GitHub](https://github.com/eigerco) | ☐ | ☐ | ☐ | | [Salaheldin Soliman](https://github.com/salaheldinsoliman) | [Solang Playground](Solang_Playground.md) | [GitHub](https://github.com/salaheldinsoliman) | ☐ | ☐ | ☐ | | [P2P.ORG](http://p2p.org/) | [P2P data platform](data_platform_with_deep_indexed_data_and_staking_reports.md) | [GitHub](https://github.com/p2p-org) | ☐ | ☐ | ☐ | From 562e7ad3eac59adb2f247d5a362021f419735708 Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Thu, 26 Oct 2023 01:33:55 -0500 Subject: [PATCH 15/46] Update index.md (#2072) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index 9c1552c2d2d..2c539541f61 100644 --- a/applications/index.md +++ b/applications/index.md @@ -85,7 +85,7 @@ Besides, **there is a clear difference between an application being accepted and | [Rust Syndicate x Decentration](https://www.decentration.org/) | [XCMSend](./xcmsend.md) | [GitHub](https://github.com/decentration) | ☐ | ☒ | ☐ | | [Off Narrative Labs](https://github.com/Off-Narrative-Labs) | [Tuxedo Parachain Support](./tuxedo_parachain.md) | [GitHub](https://github.com/Off-Narrative-Labs) | ☐ | ☐ | ☐ | | [PolyCrypt GmbH](https://polycry.pt) | [Distributed Cryptography for Polkadot Wallets](./distributed_cryptography_for_polkadot_wallets.md) | [GitHub](https://github.com/perun-network) | ☐ | ☐ | ☐ | -| [Open Smart Contract](https://github.com/OpenSmartContract) | [ISO20022 PoC](./ISO20022.md) | [GitHub](https://github.com/OpenSmartContract) | ☐ | ☐ | ☐ | +| [Open Smart Contract](https://github.com/OpenSmartContract) | [ISO20022 PoC](./ISO20022.md) | [GitHub](https://github.com/OpenSmartContract) | ☐ | ☒ | ☒ | | [DAOsign](https://daosign.org/) | [DAOsign](./DAOsign.md) | [GitHub](https://github.com/DAOsign) | ☐ | ☐ | ☐ | | [Zondax AG](https://zondax.ch/) | [PoC Polkadot Conformance Tests](./polkadot_tests.md) | [GitHub](https://github.com/zondax) | ☐ | ☐ | ☐ | | [SO/DA zone](https://github.com/sodazone) | [Ocelloids XCM Transfer Monitoring Service](ocelloids_xcm_monitoring_service.md) | [GitHub](https://github.com/sodazone) | ☐ | ☐ | ☐ | From 5fda16ac16e7e5bd46ed11ba7ac0f8cb4e88914f Mon Sep 17 00:00:00 2001 From: gmajor <63032554+gmajor-encrypt@users.noreply.github.com> Date: Thu, 26 Oct 2023 14:53:36 +0800 Subject: [PATCH 16/46] Add JsonRpsee-socks5-proxy (#2068) * Add JsonRpsee-socks5-proxy.md * Fix Costs --- applications/JsonRpsee-socks5-proxy.md | 98 ++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 applications/JsonRpsee-socks5-proxy.md diff --git a/applications/JsonRpsee-socks5-proxy.md b/applications/JsonRpsee-socks5-proxy.md new file mode 100644 index 00000000000..223844b2069 --- /dev/null +++ b/applications/JsonRpsee-socks5-proxy.md @@ -0,0 +1,98 @@ +# JsonRpsee socks5 proxy + +* **Team Name:** [gmajor](https://github.com/gmajor-encrypt) +* **Payment Address:** 0xC3094f0ddce699a1Ad9Ef2621DF68Cd297a4c44F(USDC) +* **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 1 + +## Project Overview :page_facing_up: + +RFPs [https://github.com/w3f/Grants-Program/blob/master/docs/RFPs/jsonrpsee-proxy-support.md](https://github.com/w3f/Grants-Program/blob/master/docs/RFPs/jsonrpsee-proxy-support.md) + +### Overview + +This proposal is to develop a JsonRpsee socks5 middleware proxy. + +### Project Details + +This proposal is to develop a JsonRpsee [socks5](https://datatracker.ietf.org/doc/html/rfc1928) middleware proxy. + + +### Ecosystem Fit + +- Where and how does your project fit into the ecosystem? + + This project is a middleware that can be used to proxy connections using a socks5 proxy. It can be used in any application that uses jsonrpsee as a client. + +- Who is your target audience (parachain/dapp/wallet/UI developers, designers, your own user base, some dapp's userbase, + yourself)? + + jsonrpsee client developers + +- What need(s) does your project meet? + + Enhance the JsonRpsee package and add support for socks5 proxy + +- Are there any other projects similar to yours in the Substrate / Polkadot / Kusama ecosystem? + + Nothing + +## Team :busts_in_silhouette: + +### Team members + +* gmajor + +### Contact + +* **Contact Name:** gmajor +* **Contact Email:** gmajorencrypt@gmail.com +* **Website:** + +### Legal Structure + +individual + +### Team's experience + +I have many years of PHP development experience and nearly five years of blockchain development experience, familiar +with PHP, GOLANG, PYTHON, Nodejs, Rust + +### Team Code Repos + +- https://github.com/gmajor-encrypt/php-scale-codec +- https://github.com/gmajor-encrypt/php-substrate-api +- https://github.com/gmajor-encrypt/scale-codec-comparator +- https://github.com/gmajor-encrypt/sr25519-bindings +- https://github.com/gmajor-encrypt/xcm-tools + +## Development Status :open_book: + +Not yet + +## Development Roadmap :nut_and_bolt: + +### Overview + +* **Total Estimated Duration:** 1 months +* **Total Costs:** 9000 USDC + +### Milestone 1 + + +* **Estimated duration:** 4 week +* **FTE:** 1 +* **Costs:** 9000 USDC + +| Number | Deliverable | Specification | +|-------:|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 0a. | License | MIT or Apache 2.0 | +| 0b. | Documentation | Simple documentation on how to use and how to test | +| 0c. | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | +| 1. | Socks5 middleware support | Enable a jsonrpsee client to proxy connections using a socks5 proxy | +| 2. | Example | I will now provide an example to demonstrate the usage of this socks 5 middleware. | +| 3. | Pull request | Create pull request merge into [jsonrpsee](https://github.com/paritytech/jsonrpsee) | + + +## Future Plans + +If there are any problems with this feature, I will still maintain it. \ No newline at end of file From f1af54663383292d18ed07c4535db70e413a35ae Mon Sep 17 00:00:00 2001 From: David Hawig Date: Thu, 26 Oct 2023 08:57:30 +0200 Subject: [PATCH 17/46] Update index.md Add JsonRpsee socks5 proxy --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index 2c539541f61..6a22e7e9faf 100644 --- a/applications/index.md +++ b/applications/index.md @@ -53,6 +53,7 @@ Besides, **there is a clear difference between an application being accepted and | [Apollos Collective](https://rhys.tech) | [Infimum](./infimum.md) | [GitHub](https://github.com/rhysbalevicius) | ☐ | ☐ | ☐ | | [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☐ | ☐ | | [Plutonication](https://github.com/cisar2218/Plutonication) | [Plutonication](Plutonication.md) | [GitHub](https://github.com/cisar2218/Plutonication) | ☐ | ☐ | ☐ | +| [gmajor](https://github.com/gmajor-encrypt) | [JsonRpsee socks5 proxy](JsonRpsee-socks5-proxy.md) | [GitHub](https://github.com/gmajor-encrypt) | ☐ | ☐ | ☐ | [🔝](#top) From 8780b41af91a7a03918b66f64143eb436df0d23e Mon Sep 17 00:00:00 2001 From: S E R A Y A Date: Fri, 27 Oct 2023 05:30:57 +0200 Subject: [PATCH 18/46] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 550b5d50fa2..7a270927d7c 100644 --- a/README.md +++ b/README.md @@ -90,11 +90,9 @@ In cases where a niche expert opinion is desirable, one of the committee members - [Aeron Buchanan](https://github.com/aeronbuchanan) - [Gautam Dhameja](https://github.com/gautamdhameja) - [David Hawig](https://github.com/Noc2) -- [Diogo Mendonça](https://github.com/dsm-w3f) - [Sebastian Müller](https://github.com/semuelle) - [Bill Laboon](https://github.com/laboon) - [Keegan Quigley](https://github.com/keeganquigley) -- [Nikhil Ranjan](https://github.com/nikw3f) - [Raul Romanutti](https://github.com/rrtti) - [Seraya Takahashi](https://github.com/takahser) - [Benjamin Weiß](https://github.com/BenWhiteJam) @@ -105,10 +103,8 @@ In cases where a niche expert opinion is desirable, one of the committee members Evaluators are individuals able to evaluate the technology delivered as a result of the Grants Program. The committee has the right to add or remove evaluators on the basis of supermajority. - [David Hawig](https://github.com/Noc2) -- [Diogo Mendonça](https://github.com/dsm-w3f) - [Sebastian Müller](https://github.com/semuelle) - [Keegan Quigley](https://github.com/keeganquigley) -- [Nikhil Ranjan](https://github.com/nikw3f) - [Seraya Takahashi](https://github.com/takahser) #### W3F Operations Team @@ -116,7 +112,6 @@ Evaluators are individuals able to evaluate the technology delivered as a result The Operations Team takes care of legal documents, invoicing, and remittances. - [Melanie Diener](https://github.com/meldien) -- [Federica Dubbini](https://github.com/fededubbi) - [Rouven Pérez](https://github.com/RouvenP) From d6331303c84ee8103ec19972a3aa7c30668992f5 Mon Sep 17 00:00:00 2001 From: Dusan Morhac <55763425+dudo50@users.noreply.github.com> Date: Fri, 27 Oct 2023 10:16:59 +0300 Subject: [PATCH 19/46] Create SpellRouter-proposal.md (#2057) * Create SpellRouter-proposal.md * Update SpellRouter-proposal.md * Update SpellRouter-proposal.md --- applications/SpellRouter-proposal.md | 302 +++++++++++++++++++++++++++ 1 file changed, 302 insertions(+) create mode 100644 applications/SpellRouter-proposal.md diff --git a/applications/SpellRouter-proposal.md b/applications/SpellRouter-proposal.md new file mode 100644 index 00000000000..526f1b9a272 --- /dev/null +++ b/applications/SpellRouter-proposal.md @@ -0,0 +1,302 @@ +# SpellRouter - XCM Router by ParaSpell✨ + +- **Team Name:** ParaSpell✨ +- **Payment Address:** bc1qa7m3f5cm5pcyh7m8f899kx59m93w496ld8nyux BTC +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 🐤 + +## Project Overview :page_facing_up: + +Previously completed grants: +- [Phase 1](https://github.com/w3f/Grants-Program/pull/1118) +- [Phase 2](https://github.com/w3f/Grants-Program/pull/1245) +- [Phase 3](https://github.com/w3f/Grants-Program/pull/1589) +- [LightSpell](https://github.com/w3f/Grants-Program/pull/1817) + +**What we do focus on in ParaSpell✨:** + +Our team has focused on the unification of cross-chain communication in the Polkadot and Kusama ecosystems for a while now. Our latest and flagship addition is XCM API also known as LightSpell⚡️. This tool allows you to implement cross-chain interoperability into your application within moments. ParaSpell offers a set of XCM & XCMP Developer tools meant to ease the integration of cross-chain functionality into dApps. As we have learnt by now, cross-chain experience between Parachains can be very diverse. ParaSpell means to unify this experience by doing all the research for developers. We have wrapped all XCM pallets from compatible nodes into simple patterns from which it is easy to create XCM calls. As an example, we provide the image below. + +![img1](https://user-images.githubusercontent.com/55763425/218987451-2bfc9526-8f2b-4477-8c42-8c70cbcb6ec4.jpg) + +In this image, we can see, that ParaSpell XCM SDK saves much time for developers. Just one call can contain multiple lines of JSON which would otherwise have to be integrated manually by the developer. ParaSpell does it in marginally fewer lines and hides the complex logic of building messages which ensures, that messages are constructed correctly. This call in the end results in the following lengthy extrinsic: + +![img2](https://user-images.githubusercontent.com/55763425/218987583-f5fb10b2-2e0c-4f36-b01c-0d610deab1c6.jpg) + +This extrinsic can be subscribed to for useful data in front-end applications. + +The same call can also be reproduced with the latest addition to our tool pack - XCM API. See the example below. + +howapiworks + +### Overview 🎨 + +ParaSpell is currently split into three main repositories at the moment. XCM Router, XCM API and XCM SDK will be merged into one monorepo package with the intention of sharing types and saving code: + +- [XCM ROUTER - TBA](): Meant to give developers the ability to exchange and transfer assets in one call in a seamless way that allows them to lift complexity from users. +- [XCM SDK](https://github.com/paraspell/xcm-sdk): Meant to unify cross-chain experience on Polkadot and become a layer 2 protocol that allows for seamless integration of XCM into your dApps. +- [XCM API](https://github.com/paraspell/xcm-api): Meant to ease the integration of XCM interoperability into your dApp, offload your dApp from heavy computing and save you costs. +- [Docs](https://github.com/paraspell/docs): Extensive documentation for an overview of ParaSpell, a guide for SDK and API + +#### XCM SDK + +Few facts about XCM SDK: +- The core component for XCM API +- Comprehensive unification of XCM from 43 different Parachains +- Allows for creating XCM calls with one-line +- Simple to implement typescript package +- Completely free with an MIT license + +XCM SDK allows developers to use XCM in all three available scenarios: +- Parachain to Parachain - HRMP +- Parachain to Relay chain - UMP +- Relay chain to Parachain - DMP + +SDK contains many useful features that allow for easier integration: +- Builder pattern implementation, easy to construct XCM calls, much more used recently for simplicity of implementation. + +- Suggestions, SDK contains TYPES that help to guide developers through integration. For example, they show compatible Parachains that can be used in calls. +![1_59xApnboumYhzuRHKx60TA](https://user-images.githubusercontent.com/55763425/219314223-79c31085-2e90-4dc7-ad51-da96de730ea0.png) + +- Console printouts, SDK allows for printing into the console so developers can always check if the call they constructed is correct. +![1_2KT6Z1rxxprmE03XWYY-HA](https://user-images.githubusercontent.com/55763425/219314235-1da52511-b4e8-4a41-bdaa-04fa6a9e8a48.png) + +- Exporting registered assets for each compatible node in many useful functions + +- Exporting supported XCM pallets for each compatible node in useful functions + +And more. + +#### XCM API +XCM API currently supports 43 (this number changes a lot) XCM-compatible Parachains. It brings lots of advantages for developers. +The advantages of LightSpell⚡️ XCM API for developers: +- Provides the same functionality as XCM SDK with many benefits +- Built-in user error prevention for seamless operation +- Built-in Token authentication for DDoS prevention +- Easy to use tech stack: Typescript, Nest.js, ParaSpell XCM-SDK +- Completely free with an MIT license +- Also designed for simple private deploy +- API Offloads your server from heavy computing required to construct calls (You receive constructed message already) +- API saves you server costs (Because of the reason mentioned above) +- API features Package-less integration (No need to install anything compared to SDK alternatives) +- API is simple to implement (Constructed to be as dev-friendly as possible) +- API is already live on the following link: https://api.lightspell.xyz + +#### Docs +Meet our comprehensive docs covering just about every topic developers will meet with when implementing XCM and our tools into their dAPPs. +docsgif + + +#### Architecture 🏗️ +##### Old +The old design had SDK integrated into dApp: + +![taskFlow](https://user-images.githubusercontent.com/55763425/198412240-e031d877-c5d8-4952-9048-2e1256ba4469.svg) + +The replacement design with XCM API, there is no need for integrating XCM SDK. There is only a need to send the request. No more installing packages. Works way faster and offloads dApp from heavy computing to generate calls. + +![diag drawio](https://user-images.githubusercontent.com/55763425/275814797-d0472306-4e57-4bea-9d9b-86fac2afd125.svg) + +##### New +The newest architecture is similar to the one before it, however, dApps will now be able to call XCM Router through XCM API or integrate it as an independent package. XCM Router will benefit users with ease of exchanging and transferring assets to another chain as well as developers who can hide complex logic from users and integrate this feature with ease without the need for extensive research. + +![diadg drawio](https://user-images.githubusercontent.com/55763425/275827358-d0cf38cc-48e2-4b25-9853-8c2b59e0424f.svg) + +This architecture is only proof of concept architecture. The final architecture may differ a little (Mostly because we want to make this as efficient as possible so if we find a better solution we will instead resort to it. +#### Technology Stack 💻️ +- Vue.js +- Node.js +- Typescript +- Polkadot API libraries +- Nest.js + +### Ecosystem Fit 🌳 + +#### XCM Router +We strive to bring state-of-the-art technology to the ecosystem with any bright idea we get. SpellRouter XCM Router is no different. The implementation would become the first XCM Router in the Polkadot ecosystem. + +We aim to achieve XCM Router functionality by building a sovereign typescript package (for those who wish to implement it as a package) that will also be implemented in LightSpell XCM API (for those implementing LightSpell XCM API already). The core component for generating XCM calls will be ParaSpell XCM SDK. Other functionality regarding exchanges and logic will be unique to the Router itself. The XCM router will serve ecosystem users to transfer their assets cross-chain while giving them the ability to exchange them into different assets all in just one call (3 signatures). There were numerous suggestions for this tool in the ecosystem. Mainly because it brings the following benefits: + +- Ability to transfer assets cross-chain via XCM while being able to exchange them for another asset all within one call. +- Offlift users from the complexity of moving assets to another chain in order to exchange tokens just to send them to another chain later +- Developers able to hide asset exchange complexity and skip multiple implementation steps +- Developers save the time required for complex research +- Complex logic hidden in simple one-line calls + +An example of a Router call can be seen below: +![carbon](https://user-images.githubusercontent.com/55763425/275885095-14b21777-ed1f-494e-a524-6b2962271679.png) + +The choice of exchange Parachain will be automatic in a later version of XCM Router so users will only have to select exchange Parachain manually if they wish to. + +A high overview of Router functionality can be seen below: +![gfds drawio](https://user-images.githubusercontent.com/55763425/275976780-e1d47546-f75c-4788-81f0-388a2c71f183.svg) + + + +#### XCM API +As mentioned in a tweet from Alice&Bob, we need Chain APIs to put XCM on steroids - [link](https://twitter.com/alice_und_bob/status/1664564442456109057?cxt=HHwWgsC9pdGi3JkuAAAA). + +We aim to achieve this by utilizing the XCM-SDK technology we built previously. +Using XCM API compared to implementing XCM SDK into dApp can bring three main benefits: +- Calls are generated much quicker +- API is much simpler to implement than SDK +- No need to install anything (Comes with the benefit of saving space and without issues with dependencies) + +Why we chose NestJS for XCM API: +By choosing Nest.js as our backend HTTP REST API framework, we can harness the power of Node.js, leverage TypeScript's benefits, ensure maintainability through its modular architecture, and take advantage of its extensive community support. This enabled us to build a reliable, scalable, and well-documented XCM API that seamlessly integrates with the existing XCM SDK. In addition, Nest.js offers a powerful code generation feature that allows us to quickly scaffold boilerplate code for controllers, services, modules, and more. By utilizing the Nest.js code generator, we can significantly reduce development time and effort, ensuring rapid prototyping and efficient implementation of the XCM API endpoints. Compared to other TypeScript frameworks, Nest.js stands out with its modular architecture, seamless integration with Node.js, and strong community support, offering developers a scalable and maintainable solution. + +As API is now fully implemented we can observe its metrics for the first month it is deployed: +Screenshot 2023-10-16 at 21 42 53 + +We can see, that API serves between 500 to 1000 requests in a day. API uptime is 100%. API is completely free for everyone to use, implement or privately deploy. +It now features various error prevention mechanisms (Valid wallet address check) and analytic tools to report errors that are not handled by API or report API usage (Strictly without collecting any sensitive user data). + +#### XCM SDK + +There are not many XCM & XCMP-related development tools released currently. We aim to aid this mostly empty space and help developers understand XCM & XCMP as the current state-of-the-art technology by providing documentation and a set of tools which help them do development tasks more easily and faster. + +In Polkadot and Kusama ecosystems, there are few XCM-related tools in development. For example, Moonbeam XCM SDK and Parity Asset Transfer API. We bring a comparison table that compares them to our ParaSpell XCM SDK. +| Features | ParaSpell XCM SDK | Moonbeam XCM SDK | Parity Asset Transfer API| +| -----: | ----------- | ------------- | -----------| +|UMP Support|Implemented|Implemented|Implemented (only for 2 Chains)| +|DMP Support|Implemented|Implemented|Implemented (only for 2 Chains)| +|HRMP Support|Implemented|Implemented|To be implemented| +|No. of chains implemented|45 incl. Relay chains (To change to more chains with next update)|42 incl. Relay chains|4 incl. Relay chains| +|Support for NFT transfers|Planned to be implemented|Not implemented| Planned to be implemented| +|Multi-asset transfer support|Planned to be implemented|Not implemented|Planned to be implemented| +|Multi-location specification|Automatic|Automatic|Required in some scenarios| +| Build pattern | Integrated as intuitive as possible | Integrated, not as intuitive to implement however | Only function style call construction| +| Support for asset pallet operations | Integrated | Not integrated | Not integrated| +| Support for HRMP Channel operations | Integrated users can open & close HRMP channels on their local chain (Useful feature for devs) | Not integrated | Not integrated| +| Support for checking details that do not change | Integrated & also be covered with some error handling eg (too little amount being sent, not sufficient for XCM transfer) | Integrated in the form of a small "map" for different Tokens & Node IDs | Integrated in form of Map| + +We are currently in talks with several Parachain teams that like the idea of unified SDK for XCM transfers as much as we do. SDK that unifies XCM can be very helpful for the entire ecosystem in our opinion. With the introduction of XCM API and soon XCM Router this improves even further. + +Our target audiences are Web3 projects and starting/current blockchain developers. + +As SDK is also fully developed and its metrics are available to the public we can see, that it is still used a lot by developers in the ecosystem (Even after the API release). +Screenshot 2023-10-16 at 18 50 37 + +## Team :busts_in_silhouette: + +### Team members + +Dušan Morháč - Student, project Founder & Core Dev. Faculty of Informatics and Information Technologies STU in Bratislava + +Michael Absolon - Student, XCM SDK & XCM API Core Dev. Faculty of Informatics and Information Technologies STU in Bratislava + +### Contact + +- **Contact Name:** Dušan Morháč +- **Contact Email:** dudo.morhac@gmail.com + + +### Legal Structure + +- **Registered Address:** Tomášovská 453/2 Kalinovo 98501 Slovakia +- **Registered Legal Entity:** Adam Morháč + +### Team's experience +- Dušan is the founder & researcher behind this project and he has successfully presented it at the international conference ICECET2022 held in Prague from which there is an article regarding the XCMP & ParaSpell project. It is published by IEEE - [link](https://ieeexplore.ieee.org/document/9872938). He also successfully presented it at the ICBC 2023 conference held in Dubai. The article was published in [IEEE Enhancing XCMP Interoperability Across Polkadot Paraverse | IEEE Conference Publication](https://ieeexplore.ieee.org/document/10174872). Dušan studies Blockchain technology and had a bachelor's thesis about cross-blockchain sharing from which this idea was born. Dušan continues research on this idea in his Master's thesis. He is actively working on [LightSpell and ParaSpell](https://github.com/paraspell) full-time & has also participated in other ecosystem projects. Recently he attended Polkadot Blockchain Academy 2023 in Buenos Aires which gave him a lot of insight into the ecosystem and he also graduated from the academy successfully. Here is the [NFT that was minted as a certificate by Parity](https://singular.app/collectibles/statemine/20/12). + +And here is a certificate in physical form: + +certificate + +- Michael is a dedicated TypeScript developer with 2 years of full-time experience in the Web2 sphere. Michael's expertise in this field was further solidified in 2019 when he won first place in the Junior Internet Web competition for his online multiplayer game, which was written in JavaScript. In addition to his professional background, Michael also achieved a bachelor's degree in the same computer science University as Dušan and he is currently pursuing a master's degree which focuses on Blockchain. His passion for technology led him to explore Blockchain technology in his free time. He was recently offered the opportunity to work on ParaSpell XCM SDK & LightSpell XCM API with Dušan and he delivered many of the key features SDK & API now offer. +### Team Code Repos + +- https://github.com/paraspell/xcm-api +- https://github.com/paraspell/xcm-sdk +- https://github.com/paraspell/docs + +### Team Github Profiles 🧑‍🎓 + +- https://github.com/dudo50 Dušan Morháč +- https://github.com/michaeldev5 Michael Absolon + +### Team LinkedIn Profiles 🧑‍🎓 + +- https://www.linkedin.com/in/dudo50/ +- https://www.linkedin.com/in/michael--absolon/ + +## Development Status :open_book: +We are currently finishing maintenance tasks and issues that are open in XCM SDK, XCM API and Docs repositories. After that, we wish to shift our focus to the development of an XCM Router which we already have laid out the structure for and we have basic functionality laid into small steps that will help us achieve making this state-of-the-art technology. + +As there are no XCM Routers currently in the ecosystem, this challenging task motivates us to fill the gap once again (Just like with XCM API). + +## Development Roadmap :nut_and_bolt: + +### Overview + +- **Total Estimated Duration:** 5 months +- **Full-Time Equivalent (FTE):** 1 FTE +- **Total Costs:** 22 000 USD + +### Milestone 1 - Create XCM Router and move all three tools into Monorepo + +- **Estimated duration:** 3 months ⌛️ +- **FTE:** 1 +- **Costs:** 12 000 USD 💰️ + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| 0a. | License | MIT | +| 0b. | Documentation | We will provide both readme.md and official docs documentation | +| 0c. | Testing and Testing Guide | Testing guide will be mentioned in official docs| +| 0e. | Create Medium article about development of early Router | Add article covering early XCM Router version | +| 1.a | Integrate early version of XCM Router I| This version will contain additional detail about exchange Parachain (XCM Router will not select exchange automatically yet, the developer has to select from a provided list). The first version will feature functions like patterns to create calls. [See an example of function pattern](https://paraspell.github.io/docs/sdk/xcmPallet.html#function-pattern-xcm-call-from-relay-chain-to-parachain) | +| 1.b | Integrate early version of XCM Router II| Compared to the first version, this version will feature a Builder pattern to enhance the developer experience. [See an example of builder pattern](https://paraspell.github.io/docs/sdk/xcmPallet.html#builder-pattern-xcm-call-from-relay-chain-to-parachain) | +| 2. | Update docs to cover early XCM Router version| Add comprehensive guide that covers usage of early XCM Router version| +|3.|Create unit tests for XCM Router|Create unit tests for core features in XCM Router| + +### Milestone 2 - Enhance XCM Router and feature automatic tool updating + +- **Estimated duration:** 2.5 months ⌛️ +- **FTE:** 1 +- **Costs:** 10 000 USD 💰️ + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| 0a. | License | MIT | +| 0b. | Documentation | We will provide both readme.md and official docs documentation | +| 0c. | Testing and Testing Guide | Testing guide will be mentioned in official docs| +| 0e. | Create Medium article about development of latest XCM Router | Add article covering new features & improvements brought with SpellRouter☄️ | +| 1. | Integrate automatic exchange chain selection into XCM Router | Integrate automatic exchange chain selection into the router (If the user wishes they can manually insert it otherwise Router will select automatically). XCM Router will try to select an exchange with the best pool/price. To see the difference between automatic and manual selection feel free to see the [following image](https://user-images.githubusercontent.com/55763425/277431789-cc3892dc-4452-49e1-a201-19edbc6f20d8.png)| +| 2. | Integrate XCM Router into LightSpell XCM API | Integrate core functionality of XCM Router into LightSpell XCM API | +|3.a| Update unit tests for new XCM Router functionalities| Update unit tests for new XCM Router functionalities| +|3.b| Create integration tests for XCM Router|Create integration tests for core features in XCM Router| +|3.c| Update integration, unit and e2e tests for LightSpell XCM API| Add new integration,unit & e2e tests for core LightSpell XCM API XCM Router integration| +| 4.a | Cover latest automatic exchange chain selection in XCM Router section (Docs) | Add comprehensive guide covering automatic selection in XCM Router section | +| 4.b | Cover XCM Router integration in XCM API section (Docs) | Cover XCM Router integration in LightSpell XCM API Section | + +## Future Plans 🔭 +- We wish to implement XCM v3 NFT transfer support +- Once XCMP is out, we deprecate HRMP in SDK in favour of it. +- Continue shaping XCM API to be as developer-friendly as possible +- Continue gaining project integrations +- Make sure XCM API uptime is nearing 100% and API works as should at all times +- Improve XCM Router and add new ways to simplify call constructions + +Our focus will always remain on developer experience as well as being open source, completely free, common good and helpful to others. +Another future goal that we try to keep is to continue innovating in the XCM area - bringing new state-of-the-art tech. + +## Additional Information :heavy_plus_sign: + +**How did you hear about the Grants Program?** Personal recommendation + +##### Project achievements in chronological order ⌛️ + +- 📙 Article about the project created & presented at international conference ICECET2022 held in Prague (450 out of 1000+ articles accepted) Link to IEEE publication - [IEEE Sharing Fungible Assets Across Polkadot Paraverse](https://ieeexplore.ieee.org/document/9872938/) +- 🥈 2nd Prize, Build an XCM-related Tool for Moonbeam - Polkadot North America Hackathon [Hackathon entry](https://devpost.com/software/polkachange-cross-blockchain-transfer-tool) +- 🥉 3rd Prize, EVM+ DApp for aUSD yield - Polkadot North America Hackathon [Hackathon entry](https://devpost.com/software/polkachange-cross-blockchain-transfer-tool) +- 🎈 Web 3 Foundation base grant [Application](https://github.com/w3f/Grants-Program/pull/1118), [Delivery](https://github.com/w3f/Grant-Milestone-Delivery/pull/584) +- 🐍 [Basilisk](https://bsx.fi/) treasury proposal 2 / 2 Approved [link](https://basilisk.subsquare.io/treasury/proposal/2), [link2](https://basilisk.subsquare.io/treasury/proposal/4) +- 🔭 Web 3 Foundation phase 2 grant Milestone 3 / 3 delivered [Application](https://github.com/w3f/Grants-Program/pull/1245), [Delivery1](https://github.com/w3f/Grant-Milestone-Delivery/pull/670), [Delivery 2 & 3](https://github.com/w3f/Grant-Milestone-Delivery/pull/715) +- 📕 Article about Polkadot & ParaSpell created & accepted to be presented at international cross-chain conference IEEE ICBC 2023 held in Dubai - [IEEE Enhancing XCMP Interoperability Across Polkadot Paraverse](https://ieeexplore.ieee.org/document/10174872) +- 💼 Kusama Treasury Funding proposal number 1 - Upgrade SDK, [Application](https://kusama.subsquare.io/referenda/referendum/123s), [Delivery](https://docs.google.com/document/d/1lMY_8EtQ41IX7Zn9VIMAiG1k3oLYN0h_lVj8dWDwZ_k/edit?usp=sharing) +- 🏗️ Web 3 Foundation phase 3 grant (Make SDK better) Milestone 1 / 1 delivered [Application](https://github.com/w3f/Grants-Program/pull/1589), [Delivery](https://github.com/w3f/Grant-Milestone-Delivery/pull/836) +- 📘 Article about Polkadot & ParaSpell created & accepted to be presented at international cross-chain conference IEEE BCCA 2023 held in Kuwait [links TBA] +- 🥈 Second place at sponsored prices Polkadot Global Series APAC 2023 Hackathon: Build a Connected Contract With Moonbeam [Linkedin post announcement](https://www.linkedin.com/posts/angelhack_polkadothackathonapac-koreablockchainweek-activity-7097217757724758016-8pJ_?utm_source=share&utm_medium=member_desktop) +- 🥇 First place at Polkadot Global Series APAC 2023 Hackathon Finale [Finalist announcement post](https://www.linkedin.com/posts/angelhack_polkadothackathonapac-koreablockchainweek-activity-7097217757724758016-8pJ_?utm_source=share&utm_medium=member_desktop), [Final result](https://drive.google.com/drive/folders/1YxFJ4NO9_mMyNsXoPKboFfYHwHM1AJHv?usp=sharing), [Final result announcement post](https://www.linkedin.com/posts/angelhack_polkadothackathonapac-activity-7108072292718428160-i1dr?utm_source=share&utm_medium=member_desktop) +- 🚀 Web 3 Foundation phase 4 grant (Build XCM-API) Milestone 1 / 1 delivered [Application](https://github.com/w3f/Grants-Program/pull/1817), [Delivery](https://github.com/w3f/Grant-Milestone-Delivery/pull/972) +- 👷‍♂️ Maintenance funded by Kusama treasury from October 2023 until February 2024 [Referenda link](https://kusama.polkassembly.io/referenda/277) From a727c536c4942a3ab76cd18881dfb1555676127d Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Fri, 27 Oct 2023 02:19:01 -0500 Subject: [PATCH 20/46] Update Claps.md (#2074) --- applications/Claps.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/Claps.md b/applications/Claps.md index 885da5632f0..200d8c0b6b8 100644 --- a/applications/Claps.md +++ b/applications/Claps.md @@ -3,6 +3,7 @@ - **Team Name:** Taiwan Research-based Biopharmaceutical Manufacturers Association - **Payment Address:** 0x39D3E0c7AAcfbCa133f08cfb153B4888fd36bA9B (DAI) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 +- **Status:** [Terminated](https://github.com/w3f/Grants-Program/pull/1440#issuecomment-1773610786) ## Overview From d449c1508cd18675a5c071154fdee2f8ef8fa9c1 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Fri, 27 Oct 2023 09:21:57 +0200 Subject: [PATCH 21/46] Update index.md Add SpellRouter --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index 6a22e7e9faf..f00cf5c3f81 100644 --- a/applications/index.md +++ b/applications/index.md @@ -54,6 +54,7 @@ Besides, **there is a clear difference between an application being accepted and | [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests 2](CoinFabrik_On_Ink_Integration_Tests_2.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☐ | ☐ | | [Plutonication](https://github.com/cisar2218/Plutonication) | [Plutonication](Plutonication.md) | [GitHub](https://github.com/cisar2218/Plutonication) | ☐ | ☐ | ☐ | | [gmajor](https://github.com/gmajor-encrypt) | [JsonRpsee socks5 proxy](JsonRpsee-socks5-proxy.md) | [GitHub](https://github.com/gmajor-encrypt) | ☐ | ☐ | ☐ | +| [ParaSpell](https://github.com/paraspell) | [SpellRouter](SpellRouter-proposal.md) | [GitHub](https://github.com/paraspell) | ☐ | ☐ | ☐ | [🔝](#top) From db7670823065814e06538bfa5292cf13cfdff23b Mon Sep 17 00:00:00 2001 From: Chiro Hiro Date: Fri, 27 Oct 2023 14:55:05 +0700 Subject: [PATCH 22/46] Update payment (#2076) --- applications/orochi-network-orosign-part1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/orochi-network-orosign-part1.md b/applications/orochi-network-orosign-part1.md index 3e92a275415..3b9aa1db24a 100644 --- a/applications/orochi-network-orosign-part1.md +++ b/applications/orochi-network-orosign-part1.md @@ -1,7 +1,7 @@ # Orochi Network's proposal for research and development MPC ECDSA - **Team Name:** Orochi Network -- **Payment Address:** 0x2d309e09149259bD2b9a8C88985581B724d058b2 (ETH) +- **Payment Address:** 167Zj4mv1jBTzJimSe7LngcRS7SBixsx3ZSCFr45Eo1SjWCY (USDT Polkadot) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 1 ## Project Overview :page_facing_up: From 6d6b30ed74f7a2f6370082a243df54f5894281d4 Mon Sep 17 00:00:00 2001 From: Noc2 Date: Fri, 27 Oct 2023 10:36:33 +0200 Subject: [PATCH 23/46] fix website --- applications/SpellRouter-proposal.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/SpellRouter-proposal.md b/applications/SpellRouter-proposal.md index 526f1b9a272..aa3d7b6ba72 100644 --- a/applications/SpellRouter-proposal.md +++ b/applications/SpellRouter-proposal.md @@ -32,7 +32,7 @@ The same call can also be reproduced with the latest addition to our tool pack - ParaSpell is currently split into three main repositories at the moment. XCM Router, XCM API and XCM SDK will be merged into one monorepo package with the intention of sharing types and saving code: -- [XCM ROUTER - TBA](): Meant to give developers the ability to exchange and transfer assets in one call in a seamless way that allows them to lift complexity from users. +- XCM ROUTER - TBA: Meant to give developers the ability to exchange and transfer assets in one call in a seamless way that allows them to lift complexity from users. - [XCM SDK](https://github.com/paraspell/xcm-sdk): Meant to unify cross-chain experience on Polkadot and become a layer 2 protocol that allows for seamless integration of XCM into your dApps. - [XCM API](https://github.com/paraspell/xcm-api): Meant to ease the integration of XCM interoperability into your dApp, offload your dApp from heavy computing and save you costs. - [Docs](https://github.com/paraspell/docs): Extensive documentation for an overview of ParaSpell, a guide for SDK and API @@ -145,7 +145,7 @@ Why we chose NestJS for XCM API: By choosing Nest.js as our backend HTTP REST API framework, we can harness the power of Node.js, leverage TypeScript's benefits, ensure maintainability through its modular architecture, and take advantage of its extensive community support. This enabled us to build a reliable, scalable, and well-documented XCM API that seamlessly integrates with the existing XCM SDK. In addition, Nest.js offers a powerful code generation feature that allows us to quickly scaffold boilerplate code for controllers, services, modules, and more. By utilizing the Nest.js code generator, we can significantly reduce development time and effort, ensuring rapid prototyping and efficient implementation of the XCM API endpoints. Compared to other TypeScript frameworks, Nest.js stands out with its modular architecture, seamless integration with Node.js, and strong community support, offering developers a scalable and maintainable solution. As API is now fully implemented we can observe its metrics for the first month it is deployed: -Screenshot 2023-10-16 at 21 42 53 +Screenshot 2023-10-16 at 21 42 53 We can see, that API serves between 500 to 1000 requests in a day. API uptime is 100%. API is completely free for everyone to use, implement or privately deploy. It now features various error prevention mechanisms (Valid wallet address check) and analytic tools to report errors that are not handled by API or report API usage (Strictly without collecting any sensitive user data). @@ -174,7 +174,7 @@ We are currently in talks with several Parachain teams that like the idea of uni Our target audiences are Web3 projects and starting/current blockchain developers. As SDK is also fully developed and its metrics are available to the public we can see, that it is still used a lot by developers in the ecosystem (Even after the API release). -Screenshot 2023-10-16 at 18 50 37 +Screenshot 2023-10-16 at 18 50 37 ## Team :busts_in_silhouette: @@ -200,7 +200,7 @@ Michael Absolon - Student, XCM SDK & XCM API Core Dev. Faculty of Informatics an And here is a certificate in physical form: -certificate +certificate - Michael is a dedicated TypeScript developer with 2 years of full-time experience in the Web2 sphere. Michael's expertise in this field was further solidified in 2019 when he won first place in the Junior Internet Web competition for his online multiplayer game, which was written in JavaScript. In addition to his professional background, Michael also achieved a bachelor's degree in the same computer science University as Dušan and he is currently pursuing a master's degree which focuses on Blockchain. His passion for technology led him to explore Blockchain technology in his free time. He was recently offered the opportunity to work on ParaSpell XCM SDK & LightSpell XCM API with Dušan and he delivered many of the key features SDK & API now offer. ### Team Code Repos From f0bc40076637fcea398c2557be1675aec9e5d6bc Mon Sep 17 00:00:00 2001 From: David Hawig Date: Fri, 27 Oct 2023 12:04:55 +0200 Subject: [PATCH 24/46] Update team.md Update team --- docs/Introduction/team.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/Introduction/team.md b/docs/Introduction/team.md index a267b0379dd..cd279081ef2 100644 --- a/docs/Introduction/team.md +++ b/docs/Introduction/team.md @@ -6,7 +6,7 @@ sidebar_position: 5 ## W3F Grants Committee -The committee consists of individuals who know the funding priorities of the Polkadot ecosystem, and is responsible for evaluating grant applications and providing feedback on these. +The committee consists of individuals who know the funding priorities of the Polkadot ecosystem and is responsible for evaluating grant applications and providing feedback on these. In cases where a niche expert opinion is desirable, one of the committee members may request such a review. @@ -14,11 +14,9 @@ In cases where a niche expert opinion is desirable, one of the committee members - [Aeron Buchanan](https://github.com/aeronbuchanan) - [Gautam Dhameja](https://github.com/gautamdhameja) - [David Hawig](https://github.com/Noc2) -- [Diogo Mendonça](https://github.com/dsm-w3f) - [Sebastian Müller](https://github.com/semuelle) - [Bill Laboon](https://github.com/laboon) - [Keegan Quigley](https://github.com/keeganquigley) -- [Nikhil Ranjan](https://github.com/nikw3f) - [Raul Romanutti](https://github.com/rrtti) - [Seraya Takahashi](https://github.com/takahser) - [Benjamin Weiß](https://github.com/BenWhiteJam) @@ -29,10 +27,8 @@ In cases where a niche expert opinion is desirable, one of the committee members Evaluators are individuals able to evaluate the technology delivered as a result of the Grants Program. The committee has the right to add or remove evaluators on the basis of supermajority. - [David Hawig](https://github.com/Noc2) -- [Diogo Mendonça](https://github.com/dsm-w3f) - [Sebastian Müller](https://github.com/semuelle) - [Keegan Quigley](https://github.com/keeganquigley) -- [Nikhil Ranjan](https://github.com/nikw3f) - [Seraya Takahashi](https://github.com/takahser) ## W3F Operations Team @@ -40,5 +36,4 @@ Evaluators are individuals able to evaluate the technology delivered as a result The Operations Team takes care of legal documents, invoicing and remittances. - [Melanie Diener](https://github.com/meldien) -- [Federica Dubbini](https://github.com/fededubbi) - [Rouven Pérez](https://github.com/RouvenP) From bb26a5d7fa27eb39a2aa8f92301eadbb5126bf06 Mon Sep 17 00:00:00 2001 From: replghost <110247003+replghost@users.noreply.github.com> Date: Tue, 31 Oct 2023 18:58:03 +0800 Subject: [PATCH 25/46] Create signet.md (#2051) * Create signet.md * Update signet.md * Update signet.md * Update signet.md * Update signet.md * Update signet.md * Update signet.md --- applications/signet.md | 261 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 applications/signet.md diff --git a/applications/signet.md b/applications/signet.md new file mode 100644 index 00000000000..6337fcbc757 --- /dev/null +++ b/applications/signet.md @@ -0,0 +1,261 @@ +# Signet - Talisman + +- **Team Name:** Paraverse Foundation +- **Payment Address:** 128tk6D5CvYvGFtvjTgZT8yrD2wPWZyczBoj8LzkmGpTNbo9 (USDC/AssetHub) +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 + +## Project Overview :page_facing_up: + +### Overview + +Signet is blockchain-native financial workflow management software for enterprises. + +The goal of Signet is to enable enterprises to perform blockchain operations such as treasury management, payments, staking and governance in a way that is friendly to non-technical users but include similar "best practice" risk management controls to how they may operate in web2 today. + +We believe enterprise adoption will be one of the central narratives of the transition to Polkadot 2.0, and the capabilities of the Signet platform will enable this to happen in Polkadot, enabling enterprises to feel comfortable to inject liquidity into the ecosystem. + +Signet is built natively on top of Substrate, including the multisig, proxy, governance and staking pallets, but adds an open-source self-hostable software layer on top that enables configurable workflows for the purpose of internal risk mititgation. + +Signet was initially created out of Talisman’s user research, which revealed that teams faced many difficulties and risked mistakes when trying to run their on-chain financial operations, and ended up choosing convenience over security. In mid 2023, the Signet team was formed within Talisman to focus on B2B and enterprise opportunities. + +We believe what we are proposing is a great candidate for W3F funding because of two reasons: + +1. The common good aspect of a documented, integratable Sign in with Substrate (SIWS) reusable component, coupled with the halo effect it will have on Substrate adoption by providing a new avenue for both existing web2 and current web3 developers to build for the ecosystem. +2. The importance of usability for larger organizations, enterprises and institutional users, who find it difficult today to use overly technical tools such as Polkadot.js. We believe strongly that ease of use and understanding are extremely important when trying to achieve security, in practice, in an enterprise context, and by delivering this, Signet will enable liquidity to flow into the ecosystem. + +### Project Details + +We will first describe the architecture of the current system, and then the improvements and additions we plan to implement in the course of this grant. + +#### Architecture Overview + +Signet's architecture provides the ability to manage offchain enterprise workflows along with supporting data like address books in a secure manner. With access controls and the ability to self host the instance, clients can choose the level of security and privacy for their implementation. + +![architecture](https://github.com/TalismanSociety/sigdoc/blob/7510061e0b5b4077dc41ee7edb31f1536ab44b09/wwwf/images/sig-arch-hq.jpg?raw=true) + +Our system is designed around the idea that a multisig unit is a keyless any proxy controlled by a Substrate multisig. We use a magic link system that encodes the proxy address and the member addresses of the multisig, which can then be shared with other signers to import it into their instance of Signet. The frontend is built in React and Typescript. + +Offchain data used to support Enterprise Workflows are stored in a Postgres Database via Hasura, which offers at least 2 levels of authorisation. Requests to access data in the database are authorised using a combination of on-chain and off-chain data to satisfy various business needs, followed by role based access control built into Hasura. Access is restricted so that the Hasura server is the only service that can call the database. + +We use Sign in with Substrate (SIWS) to authenticate users. This allows our backend to confirm that whoever claims to own an address and wants resources relevant to that address actually owns the address and is able to sign a challenge message to provide proof. SIWS has been created specifically for Signet, and is run in a nodejs sidecar. + +Signet is designed in a modular way, so that specific workflows or extrinsics can be have a custom UI that enables non-technical users to perform blockchain actions. + +The initial version of Signet was developed as part of a Polkadot Treasury Proposal and aimed at DAOs and smaller teams in Polkadot. We have since decided to focus on larger enterprises who require more complex workflows and risk mitigation. + +#### Key Focus Areas + +For the purpose of this grant, we are looking to build on top of the work and architecture presented above and address the following two issues: + +1. **No standard for Sign in with Substrate:** While other projects have built custom solutions for logging into an app using Substrate, there are currently no reusable components to make it easy for developers to build apps and services on top of Substrate login. +2. **Improve existing UX for Selecting Validators:** Validator selection is currently difficult and error prone, and users have no easy way to double-check the addresses they are assigning in the process. + +The following diagram shows Signet as it is being built out currently (in black), as well as the additions enabled by this grant (in green). + +![capabilities]( +https://github.com/TalismanSociety/sigdoc/blob/1cdba109e5a8474592611987d550b441bdfddbd4/wwwf/images/sig-capabilities.jpg?raw=true) + +SIWS is a building block towards a shared address book for multisigs/organizations, which can enable migration of shared enterprise information from computer to computer or authorized person to authorized person, as well as allows for easier selection of validator addresses for all signers to leverage and is a key part of improving the experience of using Substrate-based proxy-multisigs. + +### Ecosystem Fit + +The project is built on Substrate, using Substrate native features. The goal of the project is to enable entities (corporations, asset managers, web3 companies etc.) to feel comfortable enough operationally to manage a significant amount of assets on Substrate. + +#### Target User +The target audience is enterprises and larger organizations who require workflows and risk management in order to be comfortable to deploy capital into the Polkadot ecosystem. This may include enterprises already operating on-chain in Substrate, enterprises with a large web2 footprint, including, potentially, customers of Mythical Games, Aventus, Peaq, Energy Web, etc, or more traditional organizations evaluating moving into Substrate including, potentially, Deloitte, Sony or Toyota. Signet would allow C-Levels and Finance/Operations departments at these types of companies to feel comfortable integrating blockchain into their workflows. + +#### Similar Projects +There are a number of multisig front-ends or multisigs in development in the Polkadot ecosystem, including: Multix, PolkaSafe, Saturn. While ostensibly there is an overlap in functionality related to being a multisig, Signet is designed to sit at a layer above the multisig and aimed at a different target audience: + +1. Signet is designed to be self-hostable to enable an organization to manage it's own off-chain data and workflows in a way that meets it's internal devops and security needs. +2. Signet's main value-add is not simply to provide a more friendly multisig UX, but rather to enable an organization to implement their own workflows on top of the multisig process. It's likely that these workflows require, at least at this time, off-chain operations and data storage that enhance the underlying blockchain. +3. Signet's direction is to become a platform that integrates with different multisig front-ends or multisig pallets, rather than competing with them. + +Regarding Sign in With Substrate, there are a few projects that have implemented bespoke methods of logging in with a Substrate keypair to their own dapps, however we believe these fall short of the user-friendly and developer-friendly needs to truly function as a component that can be reused, as well as to grow an ecosystem of apps and services on top of a Substrate login: + +- The messages signed are unintelligble bytes, rather than human readable messages +- The format of the login has not been standardized/structured to enable implementation into wallets/signers +- The component(s) are not packaged, available and deployable in developer-friendly ways +- The documentation doesn't exist that enables a developer to implement the sign-in functionality. + +Regarding managing a staking position, most institutional holders still use Polkadot.js, as it is the most longstanding and trusted tool, though due to a confuing UI, using it can easily lead to confusion or potential mistakes. + +Alternate methods of managing staking positions, such as Polkadot Staking Dashboard, are available to users, but they are focused on retail usage at the current time, and do not support the more complex needs of institutional or enterprise users. + +## Team :busts_in_silhouette: + +### Team members + +- Team leader: William Chen +- Team members: Nipsey, Glide, Chris Ling + +### Contact + +- **Contact Name:** William Chen +- **Contact Email:** william@talisman.xyz +- **Website:** https://talisman.xyz + +### Legal Structure + +- **Registered Address:** 2nd Floor Whitehall House, 238 North Church Street, George Town, PO Box 31489, Cayman Islands KY1-1206 +- **Registered Legal Entity:** Paraverse Foundation + +### Team's experience + +William is the COO of Talisman. He has first hand experience with intricacies of managing fully-on-chain entities, including treasury management, distributed workforce compensation processes and other internal financial and operational processes on both Polkadot and Ethereum. + +Nipsey is the co-founder and CTO of Talisman. Nipsey leads the effort around Talisman's nomination pools, which, together, are the largest in Polkadot, containing over 3 million DOT. + +Glide has led a number of products in Web3 at Defi projects such as Sushi, DAOs including DeepDAO and on NFTs from 2017 before the ERC-721 standard. She has been a key contributor to Web3 product design community from 2018, speaking at events including Web3 Summit on User Data Design Considerations & Devcon on User testing practices for Mechanism Design. Prior to that, she led new product development and core banking transformations at large Banks and Financial institutions including BNP Paribas, Australian Super and UBS often working with industry regulators, compliance and security. Most recently she has worked in Defi, specialising in tokenomics design and implementing Multisigs on Ethereum to manage token distribution for DAOs and Treasuries. + +Chris has been a lead developer at a project in the Ethereum ecosystem, was previously on the identity team at Grab -- the only p0 (e.g. mission critical) team at the company -- and has worked on numerous web2 auth projects. In his spare time, he dabbles in MEV, Geth and Substrate. + +Various Talisman contributors will contribute on architecture, design, UX and testing. + +We have not previously applied for a grant at the Web3 Foundation. + +### Team Code Repos + +- https://github.com/TalismanSociety/talisman-web + +Please also provide the GitHub accounts of all team members. If they contain no activity, references to projects hosted elsewhere or live are also fine. + +- https://github.com/replghost +- https://github.com/jonathanpdunne +- https://github.com/0xglide +- https://github.com/chrisling-dev + +### Team LinkedIn Profiles (if available) + +n/a + +## Development Status :open_book: + +The product is currently being developed as a separate app inside the Talisman Portal repository (https://github.com/TalismanSociety/talisman-web/tree/multisig). + +For a UI walkthrough for existing functionality, please see this slideshow: +[Signet UI Walkthrough](https://docs.google.com/presentation/d/1GBEvA8QxKoYKya9iNJfODozwT1JbRP9m_I7-lk-eHEU/edit?usp=sharing) + +### Conversations with W3F +We have spoken briefly to David Hawig at the W3F to introduce the project, as well as to inquire about the W3F efforts to bring credit card processing/settlement to Polkadot (ISO20022, ISO8583). We also discussed the difficulty of staking (e.g. nominating or changing validators) today using Polkadot.js, especially as complex proxy and multisig structures come into play, which has informed this proposal. + +## Development Roadmap :nut_and_bolt: + +### Overview + +- **Total Estimated Duration:** 1 month +- **Full-Time Equivalent (FTE):** 1,5 FTE +- **Total Costs:** 26,400 USDC + +Talisman uses a blended rate for grants and proposals (see previously funded initiatives [here](https://docs.google.com/document/d/192asiQ13s4EAfXFFDFgKm_W3cqBVPPPxB5VNAig7keE/edit?usp=sharing), [here](https://docs.google.com/document/d/1OlJB4a2kcgWe-TZTC4ZR5cU9ZEIk8IoC85IJv2_2rdc/edit?usp=sharing) and [here](https://docs.google.com/document/d/1KohKDEYypNw_KJING2_uHXnC0LJwUxpPHMzBRfrH68M/edit?usp=sharing)). This allows us to ensure the needed resources can be allocated to product development as well as running the company, including, as needed, to supplement the FTEs with the expertise of senior Talisman members as needed, with the goal of executing at our product quality standards. In this case, due to the value added program provided by the W3F and to show our support for the W3F mission in helping to bring new products and technologies into existence, we are applying a reduced rate. + +### Milestone 1 — Sign in with Substrate (SIWS) Release + +We have modeled our substrate login functionality (Sign in with Substrate - SIWS) on Sign in with Ethererum, and we hope this can catalyze the development of applications that build upon Substrate keypairs. We will extract the work that we have in integrating the login with Signet into an independent package that can be integrated by any team, provide website and documentation around the package, and set this on the road to becoming a standard. + +Authenticating a user with a Substrate key was initially developed as part of Signet, however we believe it should have a number of improvements before it can be released as a service or component ready for use by third parties: + +1. The version as implemented uses the JSON format with minimal payload data and only supports the server-side nonce check. We should augment this by supporting a string field that can contain information such as a welcome message or the terms of service of the dapp. +2. We will implement both text and JSON formats for the message to be signed, for both the presentation of the message client-side, and verification of the message server-side. +3. We will implement a field for expressing time validity/expiration of the signature, as well as the corresponding server-side check. + +We will also create an example “boilerplate” NextJS Dapp that integrates SIWS. + +On the frontend: We will prepare 3 pages to demonstrate how SIWS works can protect an app’s data: + +- Sign in page with SIWS button to trigger sign in flow +- Signed in page that fetches a secret message from backend +- Unauthorized page that does not have access to get the secret message. + +On the backend: We expose 3 API endpoints: + +- /api/nonce: To generate a nonce for user to sign on the frontend +- /api/verify: To verify that the signed message is valid and issue a JWT +- /api/secret: A protected endpoint that returns a secret text only if the JWT is valid + +The demo app will be in a configuration that enables developers to easily deploy it on Vercel. + +We’d like to address these improvements in the course of packaging Sign in With Substrate (SIWS) as a releasable component. + +- **Estimated duration:** 0,5 month +- **FTE:** 1,5 +- **Costs:** 13,200 USD +- **Relevant Chains:** Polkadot & Kusama + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | GPLv3 | +| **0b.** | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how a user can spin up a SIWS service and authenticate wallets, which will show how the new functionality works. | +| **0c.** | Testing and Testing Guide | We will include documentation on verifying your SIWS integration is performing correctly. | +| **0d.** | Docker | This component will need to be integrated into a dapp before being deployed, so Docker is not applicable. | +| 0e. | Article | We will publish an article that explains how the service works, the work done for this grant, and direction on how to integrate SIWS into other apps | +| 1. | JS Package: Sign in with Substrate | We will extract our Substrate sign-in service into an independent javascript package that is hostable and easily integratable into other projects | +| 2. | Feature: Custom message | We will add the ability to specify a custom message with the payload that can, for example, function as a welcome message from the dapp or specify the terms of service for the dapp | +| 3. | Feature: Expiration | We will add the ability for the front end to specify an expiration time for the signed message | +| 4. | Feature: Message Formats | We will add the ability to create the message payload both as a human-readable string, in addition to the existing JSON format | +| 5. | Feature: Message Verification | We will add the ability to verify the signed message payload in either string or JSON format | +| 6. | Example: Integrate SIWS into Signet | We will integrate the newly created SIWS package back into Signet, replacing the initial implementation from before. This will allow Signet to function as a reference implementation for SIWS, including a front-end and back-end. | +| 7. | Example: Create example dapp for SIWS | We will create an example “boilerplate” NextJS Dapp that integrates SIWS, including a frontend with login functionality and a backend that can verify the login and return data to logged in users. | +| 8. | Public Docs: Sign in with Substrate | We will create a public documentation site/landing page for Sign in with Substrate, in order to catalyze adoption by other projects, as well as eventual standardization. | + +### Milestone 2 — Signet Staking Module Improvements re: Validator Selection & Rotation UI + +We would like to improve the use cases (a.k.a. modules) enabled by Signet, by enabling user-friendly validator selection. We believe this is a core use cases for organizational and institutional multisigs in Polkadot/Kusama, and would be a foundational aspect of workflows to be built out in future releases. Currently selecting or rotating validators requires complex copy and pasting actions to assemble Polkadot.js Apps extrinsics, and we believe a purpose-built front end would alleviate the pain in performing the following actions: + +1. Selection/rotation of validators for a nomination pool where the nomination pool controller is a pure proxy controlled by a multisig +2. Selection/rotation of validators by the stash, where the stash is a pure proxy controlled by a multisig +3. Selection/rotation of validators where the staking proxy is a pure proxy controlled by a multisig. + +- **Estimated duration:** 0,5 month +- **FTE:** 1,7 +- **Costs:** 13,200 USD +- **Relevant Chains:** Polkadot, Kusama, AssetHub Polkadot, AssetHub Kusama + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | GPLv3 | +| **0b.** | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how a user can spin up Signet, including the feature improvements here, which will show how the new functionality works. | +| **0c.** | Testing and Testing Guide | We run end to end tests on the application. | +| **0d.** | Docker | We support deployment from git at this point in time, and will have instructions on this in the repository. | +| 0e. | Article | We will publish an article that explains Signet and the work done for this grant | +| 1. | Feature: Nom Pool Validator Selection | This feature enables an intuitive UX around viewing currently selected validators, as well as updating the validators for a nomination pool, using the nominationPools.nominate extrinsic | +| 2. | Feature: Staking Stash Validator Selection | This will build upon the feature above to present an intuitive UX around the selection of validators for a pure proxy stash, using the staking.nominate extrinsic | +| 3. | Feature: Staking Pure Proxy Validator Selection | This will build upon the above features to present an intuitive UX around selection of validators for a staking proxy which is a pure proxy backed by a multisig, using proxy.proxy and staking.nominate extrinsics | + +## Future Plans + +Talisman initially embarked on the Signet project in order to "scratch its own itch" and bring it's user-friendly approach to multisigs. Signet has grown into its own project focused on larger enterprises and organizations, with the mission to build out a platform that enables institutional liquidity to flow in Polkadot. + +For SIWS, we are interested in promoting wider adoption, as we believe that it can unlock a use cases where off-chain data is combined with on-chain data, and this may span enterprise apps/integrations or even consumer apps or games. After this grant, we will take a look at how to garner support/adoption of the technology, and collaborate with others in the ecosystem to put this on the path to becoming a standard. + +## Referral Program (optional) :moneybag: + +You can find more information about the program [here](../README.md#moneybag-referral-program). + +- **Referrer:** n/a +- **Payment Address:** n/a + +## Additional Information :heavy_plus_sign: + +**How did you hear about the Grants Program?** Element + +Here you can also add any additional information that you think is relevant to this application but isn't part of it already, such as: + +### Financial Support +The Signet team is an independent team within Talisman, and receives financial, development, UI/UX and testing support as necessary. + +### Previous Work +Beyond the work in the initial treasury proposal referenced below, we have made a number of significant additions: + +1. CSV upload for easier batched sends +2. An initial implementation of SIWS (in progress), *Note - the addition of SIWS will remove the need to use the magic link.* +3. An initial address book implementation (in progress) +4. Refactoring and rearchitecting to meet upcoming needs + +### Previous Grants + +The initial version of this web app was funded by the Polkadot Treasury in February 2023. + +[Polkadot Spending Proposal: Business-Friendly Polkadot Multisig](https://docs.google.com/document/d/1KohKDEYypNw_KJING2_uHXnC0LJwUxpPHMzBRfrH68M/edit#heading=h.v6is2ta0txr1) + +>This proposal is for a business-friendly multisig frontend to lower the difficulty for teams and businesses when running their financial operations on Polkadot. Teams currently face many difficulties when trying to perform these operations, risking mistakes along the way, and leading them to choose convenience over security. We will apply Talisman’s UX and design philosophy to create improvements for standard workflows for Polkadot multisig usage (based on the current multisig pallet), and eventually integrate upgrades when improvements to the multisig pallet itself are available. From 97bef2a3e1f790563e7cafc6490845fa3217256a Mon Sep 17 00:00:00 2001 From: David Hawig Date: Tue, 31 Oct 2023 12:02:35 +0100 Subject: [PATCH 26/46] Update index.md signet --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index f00cf5c3f81..410ad652b15 100644 --- a/applications/index.md +++ b/applications/index.md @@ -55,6 +55,7 @@ Besides, **there is a clear difference between an application being accepted and | [Plutonication](https://github.com/cisar2218/Plutonication) | [Plutonication](Plutonication.md) | [GitHub](https://github.com/cisar2218/Plutonication) | ☐ | ☐ | ☐ | | [gmajor](https://github.com/gmajor-encrypt) | [JsonRpsee socks5 proxy](JsonRpsee-socks5-proxy.md) | [GitHub](https://github.com/gmajor-encrypt) | ☐ | ☐ | ☐ | | [ParaSpell](https://github.com/paraspell) | [SpellRouter](SpellRouter-proposal.md) | [GitHub](https://github.com/paraspell) | ☐ | ☐ | ☐ | +| [Paraverse Foundation](https://talisman.xyz) | [Signet - Talisman](signet.md) | [GitHub](https://github.com/TalismanSociety) | ☐ | ☐ | ☐ | [🔝](#top) From c411f5d2a0a21bd46540e4447fe4065d46141fd7 Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Thu, 2 Nov 2023 19:56:34 -0500 Subject: [PATCH 27/46] Update index.md (#2084) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index 410ad652b15..eb126e2b023 100644 --- a/applications/index.md +++ b/applications/index.md @@ -130,7 +130,7 @@ Besides, **there is a clear difference between an application being accepted and | [Antier Solutions Pvt. Ltd.](https://github.com/kulwindersingh-ant)| [Grants webapp](Grant_management_webapp.md) | [GitHub](https://github.com/kulwindersingh-ant) | ☐ | ☒ | ☒ | | [Zaniyar Jahany](https://github.com/Zaniyar/) | [Grantmaster](grantmaster.md) | [GitHub](https://github.com/Zaniyar/plant2earn/) | ☐ | ☐ | ☐ | | [FiDi Tech](https://fidi.tech/) | [FiDi DotSight: Analytics Data Platform for DotSama](fidi-dotsight-analytics.md)| [GitHub](https://github.com/fidi-tech) | ☐ | ☒ | ☐ | -| [Ideal Labs](https://www.idealabs.network/) | [Cryptex](cryptex.md)| [GitHub](https://github.com/ideal-lab5) | ☐ | ☒ | ☐ | +| [Ideal Labs](https://www.idealabs.network/) | [Cryptex](cryptex.md)| [GitHub](https://github.com/ideal-lab5) | ☐ | ☒ | ☒ | | [Xcavate](https://xcavate.io/) | [Real estate centric lending and asset minting protocol](Xcavate.md)| [GitHub](https://github.com/xcavateblockchain) | ☐ | ☒ | ☒ | | [Syncra](https://syncra.xyz) | [No Code DAO Maker and ZK Powered Private Voting Solution](Syncra.md)| [GitHub](https://github.com/SyncraDAO) | ☐ | ☐ | ☐ | | [P2P.ORG](http://p2p.org/) | [Validator Monitoring Service](Validator_Monitoring_Service.md)| [GitHub](https://github.com/p2p-org/polkadot_monitoring_service) | ☐ | ☒ | ☒ | From 0e6c511fc9a1f226382303cae33f9c5c0a33e447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 3 Nov 2023 17:11:28 +0100 Subject: [PATCH 28/46] Update intro.md --- docs/Introduction/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Introduction/intro.md b/docs/Introduction/intro.md index ea5629fa7fb..4bfad69e415 100644 --- a/docs/Introduction/intro.md +++ b/docs/Introduction/intro.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Guidelines -Anyone is welcome to apply for a grant. Projects funded through our program are broad in scope, but our focus lies on projects with a strong **technical** focus that add value to the ecosystem. Furthermore, you should be able to demonstrate a solid, long-term roadmap, be it through the project's significance to the community (such as for research-oriented projects) or an in-depth market analysis (for business-oriented projects). +Anyone is welcome to apply for a grant. Projects funded through our program are broad in scope, but our focus lies on projects with a strong **technical** focus that add value to the Polkadot ecosystem. Furthermore, you should be able to demonstrate a solid, long-term roadmap, be it through the project's significance to the community (such as for research-oriented projects) or an in-depth market analysis (for business-oriented projects). Generally, your project will have better chances to be accepted if: From 61e6869a6b87851a2fda0bec2b8daeec464ef1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 3 Nov 2023 17:25:06 +0100 Subject: [PATCH 29/46] Update intro.md (#2085) --- docs/Introduction/intro.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Introduction/intro.md b/docs/Introduction/intro.md index 4bfad69e415..0df98ec7e59 100644 --- a/docs/Introduction/intro.md +++ b/docs/Introduction/intro.md @@ -9,10 +9,11 @@ Anyone is welcome to apply for a grant. Projects funded through our program are Generally, your project will have better chances to be accepted if: - it presents a **well-researched** or tested concept, for which ideally you are able to show some prior work; +- you have tangible proof how and to what extent the project is a **benefit to the Polkadot ecosystem** and its users; - you can demonstrate that the project will be **maintained** after completion of the grant, be it through an obvious commitment to the technology from your side, additional funding sources, or an existing business model; - your team has **proven experience** with the relevant languages and technologies and/or a strong technical background. You will be asked to provide the GitHub profiles of your team members as part of your application, which we will examine for past activity and code quality. Naturally, you can also link to projects on other platforms; - your application is **rich in technical details** and well-defined; -- you can present how your project stands out among competitors or implements technology that doesn't exist in the ecosystem yet. +- you can present how your project stands out among competitors or implements technology that **doesn't exist** in the ecosystem yet. Additionally, it must fulfill the following requirements: From bfce697581564d1e17870af5b093bb92d409dcbc Mon Sep 17 00:00:00 2001 From: S E R A Y A Date: Fri, 3 Nov 2023 17:25:34 +0100 Subject: [PATCH 30/46] Update index.md --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index eb126e2b023..137f792e580 100644 --- a/applications/index.md +++ b/applications/index.md @@ -167,7 +167,7 @@ Besides, **there is a clear difference between an application being accepted and | [CoinFabrik](https://www.coinfabrik.com/) | [Scout - Security Analysis Tool](ScoutCoinFabrik.md) | [GitHub](https://github.com/coinfabrik) | ☐ | ☒ | ☒ | | [727.ventures](https://727.ventures/) | [Typechain-Polkadot Follow-up-2](typechain-polkadot-follow-up-2.md) | [GitHub](https://github.com/727-Ventures/typechain-polkadot) | ☐ | ☒ | ☒ | | [Mark Van de Vyver PhD(Dist)](https://www.student.uwa.edu.au/course/award-verification-service?family=van+de+vyver&family_partial=on&given=mark&search=Search) | [Substrate Tokenomics Survey](tokenomics-survey-2022.md) | [GitHub](https://github.com/taqtiqa-mark) | ☐ | ☒ | ☐ | -| [Zeeve](https://www.zeeve.io) | [Parachain deployment zoombienet testing automation](Zeeve_Parachain_deployment_zoombienet_testing_automation.md) | [GitHub](https://github.com/Zeeve-App) | ☐ | ☒ | ☐ | +| [Zeeve](https://www.zeeve.io) | [Parachain deployment zoombienet testing automation](Zeeve_Parachain_deployment_zoombienet_testing_automation.md) | [GitHub](https://github.com/Zeeve-App) | ☐ | ☒ | ☒ | | [Polytope Labs](https://research.polytope.technology/) | [Trie Verifier Implementation](solidity-trie-verifier.md) | [GitHub](https://github.com/polytope-labs) | ☐ | ☒ | ☒ | | [Off-Narrative Labs](https://github.com/Off-Narrative-Labs) | [Tuxedo](tuxedo.md) | [GitHub](https://github.com/JoshOrndorff) | ☐ | ☒ | ☒ | | [FuzzLand](https://fuzz.land/) | [FuzzLand](FuzzLand.md) | [GitHub](https://github.com/fuzzland) | ☐ | ☐ | ☐ | From 128c8eb8fcb9cd1c12affc038a028233519176b8 Mon Sep 17 00:00:00 2001 From: Matteo Muraca <56828990+muraca@users.noreply.github.com> Date: Mon, 6 Nov 2023 09:04:40 +0100 Subject: [PATCH 31/46] Tux0 application (#2071) * created Tux0.md Signed-off-by: muraca * add tech stack information Signed-off-by: muraca * details about benchmarking, milestones, other trivial improvements Co-authored-by: Gorzorg Signed-off-by: muraca --------- Signed-off-by: muraca --- applications/tux0.md | 225 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 applications/tux0.md diff --git a/applications/tux0.md b/applications/tux0.md new file mode 100644 index 00000000000..24c2c353f17 --- /dev/null +++ b/applications/tux0.md @@ -0,0 +1,225 @@ +# Tux0 + +- **Team Name:** Libeccio Labs +- **Payment Address:** 12poSUQPtcF1HUPQGY3zZu2P8emuW9YnsPduA4XG3oCEfJVp (USDT on Asset Hub) +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 🐤 + +## Project Overview :page_facing_up: + +A [Tuxedo](https://github.com/Off-Narrative-Labs/Tuxedo) piece that leverages zero-knowledge proofs to manage a private token. + +### Overview +Zero-knowledge proofs are revolutionizing the way we interact with the blockchain. They can be used to create new types of applications that are more private and secure. +We are particularly interested in finding a proving system which does not require a trusted setup, and is good enough to be used in a Substrate runtime. +Truth is zero knowledge primitives on parachains as host functions are still far, since it is a long and tedious path to decide, implement, test, and bring them on the relay chain, which involves Parity and the Polkadot Fellowship. + +Every developer in the Substrate ecosystem can benefit from this research. If we are successful in figuring out a fast and efficient zk protocol for Substrate runtimes, it will open up a whole new range of possibilities for runtime developers, particularly for parachains. + +A DAP (decentralized anonymous payment) is the simplest, yet useful, implementation of zero-knowledge proofs in blockchain we could think of, because it only needs to prove that the sender has the private key corresponding to the output UTXO and that the transaction is valid. + +We naturally chose to build on Tuxedo because it is designed to make it easy to develop UTXO-based blockchains, which DAPs typically are. For example, Manta Network implemented UTXOs inside a FRAME pallet for the same purpose, which is not ideal. +We believe that an UTXO-based alternative to FRAME was needed, to provide developers with more choices and flexibility, leading to innovation and experimentation, which can benefit the entire ecosystem. +As a consequence of this choice, this project will prove that Tuxedo is ready for people to write their own runtimes, and hopefully soon their parachains as well. +However, the objective of this project is not to develop a production-ready module, but to conduct a research and showcase our results to the Substrate community as a whole. + +### Project Details + +#### Research phase + +The first part of the project will involve a research on zero knowledge protocols, with the objective of finding out a protocol that can potentially be used in a parachain runtime. We're particularly interested in non-interactive protocols that don't require a trusted setup, use succinct proofs, are fast to verify. +Some potential candidates are: +- [Halo2](https://github.com/zcash/halo2/), used by Zcash in its orchard protocol; +- [Plonky2](https://github.com/0xPolygonZero/plonky2), developed by Polygon Zero; +- [Kimchi](https://github.com/o1-labs/proof-systems), by O(1) Labs, used by the Mina Protocol. + +The zero knowledge protocol used in the second phase will be chosen based on this research's results. The factors that will be considered are, by importance: +- verification performance and proof size; +- proof construction performance; +- security, if the library is production-ready; +- ease of use, for example high level languages to write circuits. + +Proof construction performance and proof size will be measured by running the construction function on a set of pre-generated inputs, and measuring the average time it takes to construct each proof. The prover will be tested in both native and WASM, as the wallet is currently only available as a native binary, but we think it would make sense to have a library that can be used in-browser as well. + +Verification performance will be measured by running the verification function on the previously generated proofs, and measuring the average time it takes to verify each proof. The verifier will need to be compiled to WASM, since it will be used in a Substrate runtime. +The execution times of some real-world FRAME extrinsics will be measured and included as well, as we hope to find a protocol with comparable execution times. + +We are aware that the results might not be as good as expected. If we fail to identify a protocol that can be used in a Substrate runtime, then we would still proceed with developing the final product, using custom host functions. +However, since some of these protocols are already used in other blockchains, we're confident this phase will be a success. + +###### Benchmarking program architecture + +There will be a sovereign trait to be implemented for each protocol one wants to benchmark. +One can also extend the trait to add more test cases to the benchmarking program. +Something along the lines of: +```rust +pub type Proof = Vec; + +pub trait Protocol { + /// Build a proof for the sum of two numbers + fn sum_build_proof(a: i64, b: i64, sum: i64) -> Proof; + /// Verify a proof for the sum of two numbers + fn sum_verify_proof(proof: Proof) -> bool; + + /// Build a proof for a Sudoku + fn sudoku_build_proof(sudoku: Sudoku) -> Proof; + /// Verify a proof for a Sudoku + fn sudoku_verify_proof(proof: Proof) -> bool; + + // ... other tests ... + + pub fn run_benchmarks() -> Vec { + let sum_proof = Self::sum_build_proof(2, 1, 3); + // ... run all the benchmarks ... + } +} +``` +We will implement a `run_benchmarks` method for every type that implements the Protocol trait, and we will provide a blanket implementation of Protocol for tuple of types that implements Protocol. +```rust +type Protocols = (Halo2, Plonky2, Kimchi); + +fn main() { + let benchmarking_results = Protocols.run_benchmarks(); + // ... export the results ... +} +``` +With this system, integrating new protocols will be as easy as implementing the Protocol trait for them, and adding a new item to the Protocols type. + +#### Development phase + +The final product will be a Tuxedo piece, written in Rust, which can be used in any Tuxedo runtime for private token transactions. The code will be stored in a public GitHub repository, along with an example on how to use it in a Tuxedo runtime. The documentation will be generated from Rustdocs and hosted on GitHub pages. +We will also develop an extension for Tuxedo's wallet, to be able to retrieve the balance for a certain address, build zero knowledge proofs and send transactions. +We will write unit tests for all of the Tuxedo primitives we develop for Tux0 to ensure that they are functionally correct, along with integration tests to show that the Tux0 wallet can successfully create and verify transactions against a template runtime. + +The basic primitives behind the protocol we designed for Tux0 are: +- **Coin**, a simple public currency, managed by the [Money piece](https://off-narrative-labs.github.io/Tuxedo/money/index.html). Each UTXO has a certain monetary value, and optionally an owner. +Wallets need to check all the transactions, to see if any produced UTXO is owned by a certain address they manage. Using the same process, any external entity can easily figure out the balance and transaction history for any public key. +- **DAP Coin**, similar to Coin, but it is stored on-chain as a H256, encrypted using the owner’s public key. Each UTXO has a private monetary value, an owner, and other parameters needed for proving its ownership and uniqueness. +Wallets will need to check all the transactions to see if any produced DAP Coin can be decrypted and decoded. However, external entities will not be able to understand the senders, recipients and values of any transaction, ensuring privacy. +- **Transfer function**, the only transaction the Tux0 piece will allow, which can consume and produce Coin or DAP Coin indiscriminately. As a consequence, users can freely convert Coin to DAP Coin and vice versa. +Each DAP Coin in input requires a zero knowledge proof to demonstrate the sender has the right to consume it, without revealing its identity. +Another zero knowledge proof is needed to prove that the operation is valid, because the sum of the outputs is less or equal to the sum of the inputs, without revealing any of these numbers. +Due to constraints imposed by the chosen proving system, this function will have a limited amount of inputs and outputs. + +We can't guarantee for the project's security, since its purpose is to demonstrate the use of the chosen zero knowledge protocol, not to write a production-ready module. For that, the protocol should be thoroughly reviewed by experts, and the libraries and piece should be subject to security audits. + +### Ecosystem Fit + +Our research will be useful to the Substrate community because it will help to identify zero-knowledge protocols that are suitable for use in Substrate runtimes. +This could enable Parachain developers to use zero-knowledge proofs for any use-case they want, without needing to wait for primitives to be added to the Relay Chain. + +After a proper security audit, Tux0 would be a valuable tool for developers who want to build privacy-preserving dapps on the Polkadot/Substrate/Kusama ecosystem. It would also be useful to users who want to be able to send and receive tokens privately. +Moreover, Tux0 would demonstrate that Tuxedo is ready for developers to build their custom logic on top of it, and hopefully to be able to use it in production soon. + +Even if fundamentally different, the protocol we designed for Tux0 is inspired by the Zerocash protocol, which uses zero knowledge proofs for private transactions. +An example of zero knowledge proofs used for private transactions can be found in Manta Network, where the protocol used requires a trusted setup. Moreover, their private coin is a simulation of UTXOs written inside a FRAME pallet, while Tuxedo allows native UTXOs in a Substrate runtime, and we are sure that our transactions costs will be fundamentally lower. + +## Team :busts_in_silhouette: + +### Team members + +- Matteo Muraca +- Alberto Perrella + +Advisors: +- Joshy Orndorff + +### Contact + +- **Contact Name:** Matteo Muraca +- **Contact Email:** muraca.matteo@icloud.com + +### Legal Structure + +- **Registered Address:** N/A +- **Registered Legal Entity:** N/A + +### Team's experience + +Matteo and Alberto were the first hires at NFT Chain, and worked there until its termination of business. +Matteo successfully graduated at the second cohort of the Polkadot Blockchain Academy in Buenos Aires, after which he started contributing to the Polkadot SDK, and lately to Tuxedo as well. At NFT Chain, he was one of the core developers for a parachain to handle custom non-fungible assets with formal constraints. +Alberto holds a Master's Degree in Mathematics at ETH Zurich. At NFT Chain, along his core team duties, he was responsible for prototyping a protocol that leverages zero knowledge proofs to facilitate the verification of formal constraints on-chain. + +Unfortunately, all the work done at NFT Chain is private, and we're legally obliged to not share it. +However, we presented some working prototypes at Sub0 2022, and the project has been accepted as part of the Substrate Builders Program. + + +--- + +Joshy Orndorff is one of the main contributors to Tuxedo. He's entered the Substrate ecosystem in 2019, and among all things he also taught the Polkadot Blockchain Academy in all three cohorts: Cambridge, Buenos Aires, and Berkeley. +He will not be directly involved in the development of this project, but he will be available for advice and guidance, mostly on the Tuxedo side. + +### Team GitHub Profiles + +- https://github.com/muraca +- https://github.com/Gorzorg + +The eventual code and documentation will be published in the Libeccio Labs GitHub organization: +- https://github.com/LibeccioLabs + +### Team LinkedIn Profiles + +- https://www.linkedin.com/in/matteo-muraca/ +- https://www.linkedin.com/in/alberto-perrella-2522bb1a2/ + + +## Development Status :open_book: + +We have currently identified some zero knowledge protocols which might become candidates for the research part. +We also started sketching out some code for a Tuxedo piece, but nothing worth mentioning. + +## Development Roadmap :nut_and_bolt: + +### Overview + +- **Total Estimated Duration:** 12 weeks +- **Full-Time Equivalent (FTE):** 1,5 FTE +- **Total Costs:** 18,000 USD + +### Milestone 1 — Research phase + +- **Estimated duration:** 6 weeks +- **FTE:** 1,5 +- **Costs:** 9,000 USD + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | Apache 2.0 | +| **0b.** | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how a user can add a new protocol, run the benchmarks, and verify the results. | +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | +| 0e. | Article | We will publish an **article** on our GitHub blog that explains our research process, the results, and why we decided to proceed with a certain protocol. | +| 1. | Benchmarking program | We will develop a Rust program that will automatically run zk protocols benchmarks and export the results in a readable format, like JSON. | +| 2. | Protocols integration | We will provide an integration of at least 3 protocols for the benchmarking program, which will be used to produce the results. We will document the reasons for the choice of these protocols rather than other potential candidates. | +| 3. | Data Visualization tool | We will provide a single page webapp to easily visualize and compare the benchmark results, using [C3.js](https://c3js.org/) or a similar library. The core of this page will be embedded in the article as well. | + +### Milestone 2 — Development phase + +- **Estimated Duration:** 6 weeks +- **FTE:** 1,5 +- **Costs:** 9,000 USD + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- +| **0a.** | License | Apache 2.0 | +| **0b.** | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how Tux0 can be included in a Tuxedo runtime, and how to interact with it, using Tuxedo's Template Wallet. | +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | +| 1. | Tux0 | We will develop a Tuxedo piece that manages a DAP token using zero knowledge proofs. It will be written in Rust, and it will leverage the library identified in the first milestone. | +| 2. | Tuxedo Wallet Extension | We will extend the Tuxedo Template Wallet to support Tux0 balances and to send Tux0 transactions. This will also be written in Rust. | + +## Future Plans + +We intend to continue to maintain Tux0 at least until a proper release of Tuxedo's parachain support - which might even come before the delivery of this grant. +We are interested in testing the zero-knowledge protocol we chose for Tux0 in a parachain environment. + +Bader [@CrackTheCode016](https://github.com/CrackTheCode016) suggested we could deploy a Tux0 parathread on Rococo, which would be a huge step forward for Tuxedo as well. + +## Referral Program (optional) :moneybag: + +- **Referrer:** Joshy Orndorff +- **Payment Address:** 0x5a335908df9D2C47304338E3b744579Ed7C6a64d (DAI) + +## Additional Information :heavy_plus_sign: + +We have been part of the Substrate ecosystem since early 2022, so we had the chance to hear about the W3F Grants from various sources: Substrate Builders Program, Polkadot Blockchain Academy, Parity employees, Sub0 2022, and probably more. +However, it was Joshy the one who suggested us to ask for a grant for this idea, and he deserves a big thank you from both of us. From 8e7b13e93806a0c3dd6a8039cb29dd34cd0cbf62 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Mon, 6 Nov 2023 09:06:38 +0100 Subject: [PATCH 32/46] Update index.md Tux0 --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index 137f792e580..d6c9ff9cc75 100644 --- a/applications/index.md +++ b/applications/index.md @@ -56,6 +56,7 @@ Besides, **there is a clear difference between an application being accepted and | [gmajor](https://github.com/gmajor-encrypt) | [JsonRpsee socks5 proxy](JsonRpsee-socks5-proxy.md) | [GitHub](https://github.com/gmajor-encrypt) | ☐ | ☐ | ☐ | | [ParaSpell](https://github.com/paraspell) | [SpellRouter](SpellRouter-proposal.md) | [GitHub](https://github.com/paraspell) | ☐ | ☐ | ☐ | | [Paraverse Foundation](https://talisman.xyz) | [Signet - Talisman](signet.md) | [GitHub](https://github.com/TalismanSociety) | ☐ | ☐ | ☐ | +| [Libeccio Labs](https://github.com/LibeccioLabs) | [Tux0](tux0.md) | [GitHub](https://github.com/LibeccioLabs) | ☐ | ☐ | ☐ | [🔝](#top) From a229dc12c695600d07b5aba54ff8e4ef75e9fe91 Mon Sep 17 00:00:00 2001 From: Chiro Hiro Date: Mon, 6 Nov 2023 15:11:48 +0700 Subject: [PATCH 33/46] Update entity information and address (#2087) --- applications/orochi-network-orosign-part1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/orochi-network-orosign-part1.md b/applications/orochi-network-orosign-part1.md index 3b9aa1db24a..68a4ce7effb 100644 --- a/applications/orochi-network-orosign-part1.md +++ b/applications/orochi-network-orosign-part1.md @@ -69,8 +69,8 @@ Orosign project utilize cryptographic primitives and Multiparty Computation (MPC ### Legal Structure -- **Registered Address:** OROCHI NETWORK PTE. LTD,68 CIRCULAR ROAD , #02-01 , SINGAPORE (049422) -- **Registered Legal Entity:** OROCHI NETWORK PTE. LTD,68 CIRCULAR ROAD , #02-01 , SINGAPORE (049422) +- **Registered Address:** Orochi Network LLC, Suite 305, Griffith Corporate Centre, Beachmont, Kingstown, Saint Vincent and the Grenadines (Postal code: VC0284) +- **Registered Legal Entity:** Orochi Network LLC (ID: 1416 LLC 2021) ### Team's experience From a576c3b22646693b1cf300ea670d9f60b1f5cefd Mon Sep 17 00:00:00 2001 From: ashWhiteHat Date: Mon, 6 Nov 2023 17:14:36 +0900 Subject: [PATCH 34/46] ZkWasm Rollup Grant Amendment (#2077) * amend zero knowledge proof delivarable * add groth16 implementation * fix project overview * support bn254 and grumpkin --- applications/zkwasm-rollups-transfer.md | 58 ++++--------------------- 1 file changed, 9 insertions(+), 49 deletions(-) diff --git a/applications/zkwasm-rollups-transfer.md b/applications/zkwasm-rollups-transfer.md index b1d7b66e521..f543e233426 100644 --- a/applications/zkwasm-rollups-transfer.md +++ b/applications/zkwasm-rollups-transfer.md @@ -111,9 +111,9 @@ Through this grant, we are going to implement the **zkwasm** which supports tran ### Overview -- **Total Estimated Duration:** 11 months +- **Total Estimated Duration:** 5 months - **Full-Time Equivalent (FTE):** 2 FTE -- **Total Costs:** 40,000 USDT +- **Total Costs:** 20,000 USDT ### Milestone 1 | Crypto Primitive @@ -134,13 +134,13 @@ In `Milestone 1`, we are going to implement `RedDSA`, optimize `Jubjub` curve an | 2. | `Jubjub` curve optimization | `Jubjub` curve optimization allows us to perform elliptic curve arithmetic quickly. In our scheme, zero-knowledge prover time is latency when users send transaction and verification time is gas cost on chain. Specifically, we implement [Twisted Edwards Curves Revisited](https://iacr.org/archive/asiacrypt2008/53500329/53500329.pdf), [Jacobian Coordinates](https://eprint.iacr.org/2014/1014.pdf) and [wNAF](https://www.scitepress.org/papers/2014/50587/50587.pdf), [pippenger](https://cr.yp.to/papers/pippenger.pdf). | |3. | Client wallet implementation |We are going to implement client wallet of `RedDSA`. With this wallet, user can generate private key and one time signing key, and delegate their proof generation, in addition to normal wallet functionalities through RPC.| -### Milestone 2 | Plonk Extension +### Milestone 2 | Nova Folding Recursive Snarks Pallet - **Estimated duration:** 3 month - **FTE:** 2 - **Costs:** 10,000 USDT -In `Milestone 2`, we are going to implement `plookup` and recursion on top of [plonk](https://github.com/zero-network/dusk-plonk). These can improve the performance and prove the validity of several circuits separatelly. +In `Milestone 2`, we are going to implement [Nova folding scheme](https://eprint.iacr.org/2021/370.pdf) which allows light weight recursive Snarks. | Number | Deliverable | Specification | | -----: | ----------- | ------------- | @@ -149,60 +149,20 @@ In `Milestone 2`, we are going to implement `plookup` and recursion on top of [p | 0c. | Testing Guide | Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | | 0d. | Docker | We will provide Dockerfiles that can be used to test all the functionality delivered with this milestone. | | 0e. | Article | We will publish an article/tutorial/workshop that explains | -| 1. | `plookup` implementation | We are going to implement `plookup` to our [plonk](https://github.com/zero-network/dusk-plonk). `plookup` allows us to use precomputed lookup table in zero knowledge circuit and reduce complexity of circuit.| -| 2. | `recursive proof` implementation | We are going to implement `recursive proof` to our [plonk](https://github.com/zero-network/dusk-plonk). `recursive proof` allows us to generate aggregation circuit and bundle **wasm** ISA proofs to one.| -| 3. | circuit implementation | We are going to implement zero knowledge circuit which supports combination of `plookup` and `recursive proof`. This circuit allows us to implement the circuit for **zkwasm**.| - -### Milestone 3 | Zk Wasm Transfer Prover and Verifier - -- **Estimated duration:** 1.5 month -- **FTE:** 2 -- **Costs:** 10,000 USDT - -In `Milestone 3`, we are going to implement `plookup` and `recursive proof` on top of [plonk](https://github.com/zero-network/dusk-plonk). These can improve the performance and prove the validity of several circuits separatelly. - -| Number | Deliverable | Specification | -| -----: | ----------- | ------------- | -| 0a. | License | Apache 2.0 | -| 0b. | Documentation | We will provide both `inline documentation` of the code and a `basic tutorial` that explains how users prove the validity of **wasm** ISA execution. | -| 0c. | Testing Guide | Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | -| 0d. | Docker | We will provide Dockerfiles that can be used to test all the functionality delivered with this milestone. | -| 0e. | Article | We will publish an article/tutorial/workshop that explains | -| 1. | **wasm** circuit implementation | We are going to implement zero knowledge circuit for **wasm** ISA. The transfer transaction consists of **wasm** ISA. We divide it into read and write access to each resource and prove with `plookup` and `recursive proof`.| -| 2. | proof generator implementation | We are going to implement proof generator which generates the proof for **wasm** ISA. The input is execution trace of **wasm** ISA and output is zero knowledge proof. This is implemented on off-chain.| -| 3. | proof verification implementation | We are going to implement proof verification function which verifies the proof. This is implemented on on-chain.| - -### Milestone 4 | Zk Wasm Transfer Rollup Node - -- **Estimated duration:** 1.5 month -- **FTE:** 2 -- **Costs:** 10,000 USDT - -In `Milestone 4`, we are going to implement rollup node. This can aggregate transfer transactions and generate proof. - -| Number | Deliverable | Specification | -| -----: | ----------- | ------------- | -| 0a. | License | Apache 2.0 | -| 0b. | Documentation | We will provide both `inline documentation` of the code and a `basic tutorial` that explains how users setup the node and send transfer transactions. | -| 0c. | Testing Guide | Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | -| 0d. | Docker | We will provide Dockerfiles that can be used to test all the functionality delivered with this milestone. | -| 0e. | Article | We will publish an article/tutorial/workshop that explains | -| 1. | rollup node implementation | We are going to implement rollup node. This allows to setup the execution environment of L2 transfer transactions, generate the proof and commit the state to mainchain.| -| 2. | client transactor implementation | We are going to implement client library to request transfer transactions to rollup node. This is the combination of Redsa wallet and proof generator. | -| 3. | integrate network | We are going to integrate network. There are four actor mainchain, rollup node and transactor, prover. The transactor generates the transaction and delegate proof generation to prover. The prover generates proof and send it back to transactor. The transactor send transaction to rollup node. The rollup node aggregates these transaction and commit the state to mainchain. | +| 1. | `bn254/grumpkin` implementation | We are going to implement fully Polkadot compatible `bn254/grumpkin` curve for efficient verifier encoder by [cycle of curves](https://eprint.iacr.org/2023/969.pdf).| +| 2. | `groth16` implementation | We are going to implement fully Polkadot compatible `groth16` for recursive Snarks verifier circuit.| +| 3. | `recursive proof` implementation | We are going to implement `recursive proof` with Nova folding scheme. `recursive proof` allows us to compress multiple statements to prove.| +| 4. | `Nova pallet` implementation | We are going to implement `Nova folding pallet`. `Nova folding pallet` allows us to verify Nova recursive proof which proves multiple statements with a single proof.| ## Timeline | Milestone | Deliverable | Estimated Duration (month) | Deadline | | -----: | ----------- | ------------- | ------------- | | 1 | Crypto Primitive | 2 | 2023 7/31 | -| 2 | Plonk Extension | 3 | 2023 10/31 | -| 3 | Zk Wasm Transfer Prover and Verifier | 1.5 | 2023 12/14 | -| 4 | Zk Wasm Transfer Rollup Node | 1.5 | 2024 1/31 | +| 2 | Nova Folding | 3 | 2023 11/30 | ## Future Plans -- Fully zkwasm rollup - Proof for XCMP - FHE - Verifiable hardware From 18b1c5eb349b02bdb3b670ea24b0b7fa13711a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Mon, 6 Nov 2023 16:36:38 +0100 Subject: [PATCH 35/46] Update jsonrpsee-proxy-support.md (#2088) Set status to under development --- docs/RFPs/jsonrpsee-proxy-support.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/RFPs/jsonrpsee-proxy-support.md b/docs/RFPs/jsonrpsee-proxy-support.md index 711c6633646..5f25149f087 100644 --- a/docs/RFPs/jsonrpsee-proxy-support.md +++ b/docs/RFPs/jsonrpsee-proxy-support.md @@ -1,6 +1,10 @@ # Socks5 proxy support for JsonRpsee -* **Status:** Open +:::caution +This Request for Proposals is currently considered **under development**, meaning one or more grants have been signed to address the topic. We might be interested in additional implementations, but it’s better to double check this with the grants team. +::: + +* **Status:** [Under Development](https://github.com/w3f/Grants-Program/blob/master/docs/RFPs/jsonrpsee-proxy-support.md) * **Proposer:** flipchan ## Project Description :page_facing_up: From 1b2f520fa41d35d6691e94e0dec901cbe88e3ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Mon, 6 Nov 2023 16:36:46 +0100 Subject: [PATCH 36/46] Update rfps.md (#2089) --- docs/rfps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/rfps.md b/docs/rfps.md index 62fc4f16dec..5237c46174e 100644 --- a/docs/rfps.md +++ b/docs/rfps.md @@ -26,7 +26,6 @@ If you find an open RFP here that you think you can address, feel free to [submi | [anti-collusion_infrastructure.md](RFPs/anti-collusion_infrastructure.md) | 21.09.2023 | | [formal_guarantees_for_grandpa.md](RFPs/formal_guarantees_for_grandpa.md) | 12.10.2023 | | [ISO_20022.md](RFPs/ISO_20022.md) | 12.10.2023 | -| [jsonrpsee-proxy-support.md](RFPs/jsonrpsee-proxy-support.md) | 19.10.2023 | | [parachain_validation_conformance_testing.md](RFPs/parachain_validation_conformance_testing.md) | 18.01.2023 | | [sub-consensus.md](RFPs/sub-consensus.md) | 23.02.2022 | | [user-account-access-analysis.md](RFPs/user-account-access-analysis.md) | 07.01.2023 | @@ -46,6 +45,7 @@ If you find an open RFP here that you think you can address, feel free to [submi | [implementation-benchmarking.md](RFPs/implementation-benchmarking.md) | 20.09.2023 | | [ink!_smart_contract_block_explorer.md](RFPs/ink_smart_contract_block_explorer.md) | 20.09.2023 | | [ISO_8583.md](RFPs/ISO_8583.md) | 20.09.2023 | +| [jsonrpsee-proxy-support.md](RFPs/jsonrpsee-proxy-support.md) | 06.11.2023 | | [move_smart_contract_pallet.md](RFPs/move_smart_contract_pallet.md) | 02.08.2023 | | [polkadot-protocol_conformance_tests.md](RFPs/polkadot-protocol_conformance_tests.md) | 21.09.2023 | | [raft-validators.md](RFPs/raft-validators.md) | 23.05.2023 | From a3bbc5fce54183a7d89631cdd20863f67a5baa17 Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Tue, 7 Nov 2023 13:17:13 -0600 Subject: [PATCH 37/46] Update index.md (#2093) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index d6c9ff9cc75..ff060b09030 100644 --- a/applications/index.md +++ b/applications/index.md @@ -74,7 +74,7 @@ Besides, **there is a clear difference between an application being accepted and | [Orochi Network](https://www.orochi.network/) | [Research and development MPC ECDSA](./orochi-network-orosign-part1.md) | [GitHub](https://github.com/orochi-network) | ☐ | ☒ | ☒ | | [k/factory](https://k-f.co/) | [On-Chain Automated Treasury Management](./centrifuge-twamm.md) | [GitHub](https://github.com/centrifuge) | ☐ | ☐ | ☐ | | [AISLAND DAO](https://aisland.io) | [Aisland Docsig](./Aisland-DocSig.md) | [GitHub](https://github.com/aisland-dao) | ☐ | ☒ | ☒ | -| [Eiger](https://www.eiger.co/) | [Storage solution on Polkadot](./Eiger_Storage_on_Polkadot_1.md) | [GitHub](https://github.com/eigerco) | ☐ | ☐ | ☐ | +| [Eiger](https://www.eiger.co/) | [Storage solution on Polkadot](./Eiger_Storage_on_Polkadot_1.md) | [GitHub](https://github.com/eigerco) | ☐ | ☒ | ☒ | | [Salaheldin Soliman](https://github.com/salaheldinsoliman) | [Solang Playground](Solang_Playground.md) | [GitHub](https://github.com/salaheldinsoliman) | ☐ | ☐ | ☐ | | [P2P.ORG](http://p2p.org/) | [P2P data platform](data_platform_with_deep_indexed_data_and_staking_reports.md) | [GitHub](https://github.com/p2p-org) | ☐ | ☐ | ☐ | | [CoinFabrik](https://www.coinfabrik.com/) | [CoinFabrik On Ink Integration Tests](CoinFabrik_On_Ink_Integration_Tests.md) | [GitHub](https://github.com/CoinFabrik) | ☐ | ☒ | ☒ | From 1b06cf686a9063c9fe68dbcaaa581a1eed82a6b0 Mon Sep 17 00:00:00 2001 From: "G. Kami Ekbatanifard" <46442452+Nick-1979@users.noreply.github.com> Date: Thu, 9 Nov 2023 10:26:53 +0200 Subject: [PATCH 38/46] PolkaMask: Bridging the Polkadot Ecosystem with Metamask - A Revolutionary Signer Snap Project (#2058) * add PolkaMask Update polkamask.md * apply requested changes * fix polkagate link * Update polkamask.md * Update polkamask.md --- applications/polkamask.md | 153 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 applications/polkamask.md diff --git a/applications/polkamask.md b/applications/polkamask.md new file mode 100644 index 00000000000..95b18d86c11 --- /dev/null +++ b/applications/polkamask.md @@ -0,0 +1,153 @@ +# PolkaMask + +- **Team Name:** PolkaGate +- **Payment Address:** 17VdcY2F3WvhSLFHBGZreubzQNQ3NZzLbQsugGzHmzzprSG (USDT) +- **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 + + +## Project Overview :page_facing_up: + +[Polkagate](https://polkagate.xyz) is a dedicated team of Polkadot enthusiasts, actively involved in various aspects of community development. Our multifaceted contributions encompass the development of the Polkagate extension, as well as the efficient management of Polkagate's Polkadot and Kusama pools. Today, we are excited to present our latest initiative aimed at further enriching the Polkadot ecosystem. + +Introducing a revolutionary project with the vision of bridging the gap between the Polkadot ecosystem and the vast user base of Metamask, which boasts over 30 million users. We are committed to creating a seamless connection between these two vibrant communities, opening up new possibilities and opportunities for all involved. + +### Overview + +This project includes a signer Snap for the Polkadot ecosystem on MetaMask. It seamlessly integrates with all existing dApps without requiring any code modifications. +The Signer is capable of signing not only Polkadot and Kusama extrinsics but also extrinsics from all other Substrate-based chains that align with Polkadot.js APIs. + +![Image](https://raw.githubusercontent.com/Nick-1979/PolkadotJsPlusPictures/main/polkagate/polkamask%20small.bmp) + + +### Project Details + +We've prepared two demo videos [1](https://youtu.be/rclCgIFql7U) and [2](https://youtu.be/Ykil4x8d-dM), showcasing how Polkadot.js Apps an Staking dashboard are seamlessly connected with MetaMask using the Polkagate Signer Snap. This Snap flawlessly signs transactions, enhancing the user experience. + +Our project primarily utilizes JavaScript and TypeScript for development, ensuring accessibility and extendability for developers interested in contributing fresh ideas. + +While not a full-fledged extension like existing Polkadot ecosystem extensions such as Polkagate, Subwallet, or Talisman, our project has the potential to evolve into a comprehensive extension. This transformation is contingent on MetaMask expanding the capabilities of its Snaps, which some of them are currently accessible only to developers using MetaMask Flask. + +To uphold Snap security, MetaMask requires audits from selected teams. We are in the process of arranging these audits to ensure a high level of security. Additionally, we have plans to further enhance the extension's capabilities as soon as MetaMask provides Snaps with more functionalities. + +### Ecosystem Fit + +Where and how does your project fit into the ecosystem? + +Polkamask is designed to seamlessly integrate into the Polkadot and Kusama ecosystems by enhancing the interaction between MetaMask and Substrate-based chains. It introduces the Polkagate Signer Snap, allowing users to access and utilize the Polkadot and Kusama networks without any code modifications. It aims to bridge the gap between MetaMask and the Polkadot ecosystem, making it more accessible and user-friendly. + +Who is your target audience (parachain/dapp/wallet/UI developers, designers, your own user base, some dapp's userbase, yourself)? + +Our primary target audience includes dApp developers and users who engage with the Polkadot and Kusama ecosystems through MetaMask. We aim to provide a solution that benefits developers by simplifying the integration process and offers users a smooth experience when interacting with Polkadot and Kusama dApps through MetaMask. + +What need(s) does your project meet? + +Polkamask addresses the need for seamless integration between MetaMask and Substrate-based chains like Polkadot and Kusama. It removes barriers and complexities in the user experience, allowing MetaMask users to access these ecosystems without having to modify existing dApps. This simplification and user-friendliness are essential for the broader adoption of Web3 technologies. + +Are there any other projects similar to yours in the Substrate / Polkadot / Kusama ecosystem? + +There are existing projects in the Polkadot ecosystem that aim to enhance the user experience and accessibility. One example is the Polkadot wallet Snap developed by ChainSafe. However, it primarily supports Polkadot, Kusama, and Westend based on their codebase on GitHub. An important distinction is that integrating with this wallet Snap often requires dApps to undergo modifications to utilize the Snap, which can be a significant barrier to integration. + +In contrast, Polkamask differentiates itself by introducing the Polkagate Signer Snap. This Snap offers seamless integration with MetaMask, providing a user-friendly experience and eliminating the need for dApps to make code modifications. This ease of use and the ability to connect to Substrate-based chains without requiring code changes make Polkamask a unique and valuable addition to the ecosystem. + +## Team :busts_in_silhouette: + +### Team members + +- [Kami Ekbatanifard](https://www.linkedin.com/in/ekbatanifard) +- [Morteza Chalaki](https://www.linkedin.com/in/mchalaki) +- [Mehran Pourvahab](https://www.linkedin.com/in/mehran-pourvahab) +- [Martin Azarbad](https://www.linkedin.com/in/mehranazarbad) +- [Amir Ekbatani](https://www.linkedin.com/in/amir-ekbatani-4b7399201) + +### Contact + +- **Contact Name:** Kami Ekbatanifard +- **Contact Email:** ekbatanifard@gmail.com +- **Website:** [polkagate.xyz](https://polkagate.xyz/) + +### Team's experience + +We are a dedicated team of Polkadot ecosystem enthusiasts with a strong track record of contributing to the blockchain space. Our mission is to make common Polkadot functionalities more accessible to end users. As the creators of the Polkagate extension, we have already demonstrated our commitment to enhancing the Polkadot experience. + +Our team members bring diverse expertise: + + Kami: Holds a Ph.D. in software systems and works as a blockchain engineer and full-stack developer. Kami's experience includes developing applications for both private and public sources, such as centralized and decentralized crypto exchanges, NFT markets on Ethereum, and more. Kami also has a notable research track record, which you can explore [here](https://scholar.google.com/citations?user=pJ0HwqEAAAAJ&hl=en). + + Morteza: Our CFO, Morteza, has an impressive background in financial systems, ensuring strong financial management for our projects. + + Mehran: As a dedicated blockchain researcher, Mehran contributes to in-depth research within the Polkadot ecosystem. + + Martin: Martin, a senior UX designer, who is working on enhancing the user experience of our softwares. + + Amir: Amir, our meticulous test engineer, is responsible for implementing various tests to guarantee the smooth performance of our developments. + +With the successful development of the Polkagate extension, we have already established our commitment to the Polkadot ecosystem. Together, we are determined to continue making Polkadot more user-friendly and accessible, building on our collective expertise and passion. + +Previous Web3 Foundation Grants: + + - Polkadot js plus Extension - [Details](./Plus.md) + - Polkadot js plus / Social Recovery Wallet (Follow-up Grant) - [Details](./Plus-social-recovery-wallet.md) + - Polkadot js plus / Nomination Pools (Follow-up Grant) - [Details](./Plus-follow-up.md) + +Note: Polkadot js plus has been rebranded as the Polkagate extension. + +### Team Code Repos + +- https://github.com/PolkaGate/polkagate-extension +- https://github.com/PolkaGate/polkadot-Js-Plus-extension +- https://github.com/Nick-1979/Eligibility +- https://github.com/Nick-1979/fastUnstakeTest +- https://github.com/Nick-1979/stuckTokens + +Please also provide the GitHub accounts of all team members. If they contain no activity, references to projects hosted elsewhere or live are also fine. + +- https://github.com/Nick-1979 +- https://github.com/AMIRKHANEF +- https://github.com/mehran-pourvahab + +### Team LinkedIn Profiles (if available) + +- https://www.linkedin.com/in/ekbatanifard +- https://www.linkedin.com/in/mchalaki +- https://www.linkedin.com/in/mehran-pourvahab +- https://www.linkedin.com/in/mehranazarbad +- https://www.linkedin.com/in/amir-ekbatani-4b7399201 + + +## Development Status :open_book: + +While our project code is currently housed in a private repository due to its work-in-progress (WIP) nature, we have made two essential packages available for the community: + + - @polkagate/snap: [NPM Link](https://www.npmjs.com/package/@polkagate/snap) + - @polkagate/extension-dapp: [NPM Link](https://www.npmjs.com/package/@polkagate/extension-dapp) + + +These packages serve as initial contributions to our project and provide a foundation for what's to come. We look forward to further developing and sharing our work as it matures. + +## Development Roadmap :nut_and_bolt: + +### Overview + +- **Total Estimated Duration:** 3 months +- **Full-Time Equivalent (FTE):** 2 +- **Total Costs:** 28,000 USD + +### Milestone 1 - Create PolkaMask + + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | Apache 2.0 / GPLv3 / MIT / Unlicense | +| **0b.** | Documentation | Our documentation will include both inline code explanations and a comprehensive tutorial to guide users on how to work with the Polkagate Signer and MetaMask Snaps. This tutorial will effectively showcase the functionality of Polkamask.| +| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. | +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | +| 0e. | Article | We will publish an **article** that explains what was done/achieved as part of the grant. | +| 1. | Polkagate Signer (Metamask Snap) | We will develop a MetaMask Snap that intercepts user interactions with dApps and provides a user-friendly interface for signing transactions. | +| 2. | Upgrading Polkadot extension-dapp | We will enhance the official Polkadot extension-dapp by adding Snap support to improve its functionality. | +| 3. | Upgrading Polkadot-Cloud | We will integrate Metamask as a connection option within Polkadot-Cloud, expanding its compatibility and accessibility. | + + + +## Future Plans + +Our future plans for the project involve gradual expansion in alignment with new features released by MetaMask for Snaps. Our short-term focus includes utilizing, enhancing, promoting, and supporting the existing functionality. In the long term, we intend to continue adapting and extending the project to encompass a broader range of features, ensuring it evolves into a full-featured extension as MetaMask introduces new capabilities for Snaps. \ No newline at end of file From 7f040a50cc4de8dd1a8a4c0112790c1d32e5d989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Thu, 9 Nov 2023 10:14:30 +0100 Subject: [PATCH 39/46] Update index.md Snap Maintenance M1 --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index ff060b09030..6747c74ccb3 100644 --- a/applications/index.md +++ b/applications/index.md @@ -67,7 +67,7 @@ Besides, **there is a clear difference between an application being accepted and | [Protofire](https://protofire.io/) | [Contract Wizard](./Contract_wizard.md) | [GitHub](https://github.com/protofire/polkadot-contract-wizard/) | ☐ | ☐ | ☐ | | [ZeroDAO](https://github.com/ZeroDAO) | [Melodot](./Melodot.md) | [GitHub](https://github.com/ZeroDAO) | ☐ | ☒ | ☒ | | [Starks](https://github.com/tur461) | [XCM tool for NFTs](./xNFT.md) | [GitHub](https://github.com/tur461) | ☐ | ☐ | ☐ | -| [ChainSafe](https://chainsafe.io/) | [Polkadot Snap Maintenance](./maintenance/Substratesnap_Maintenance.md) | [GitHub](https://github.com/ChainSafe/metamask-snap-polkadot) | ☐ | ☐ | ☐ | +| [ChainSafe](https://chainsafe.io/) | [Polkadot Snap Maintenance](./maintenance/Substratesnap_Maintenance.md) | [GitHub](https://github.com/ChainSafe/metamask-snap-polkadot) | ☐ | ☒ | ☐ | | [justmert](https://github.com/justmert) | [DOTLY: Revolutionizing Polkadot Account Statistics](./dotly.md) | [GitHub](https://github.com/justmert/dotly) | ☐ | ☒ | ☒ | | [Federico Cicciarella](https://www.linkedin.com/in/federicocicciarella/?originalSubdomain=it) | [Tracking Chain](./tracking_chain.md) | [GitHub](https://github.com/TrackingChains/TrackingChain) | ☐ | ☒ | ☐ | | [TPScore](https://github.com/its-a-setup) | [TPScore](./TPScore.md) | [GitHub](https://github.com/its-a-setup) | ☐ | ☒ | ☒ | From 535ed70a427004154fe475f9a79943cdaa3b2af3 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Thu, 9 Nov 2023 10:33:28 +0100 Subject: [PATCH 40/46] Update index.md Add PolkaGate --- applications/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/index.md b/applications/index.md index 6747c74ccb3..e895b3ac125 100644 --- a/applications/index.md +++ b/applications/index.md @@ -57,6 +57,7 @@ Besides, **there is a clear difference between an application being accepted and | [ParaSpell](https://github.com/paraspell) | [SpellRouter](SpellRouter-proposal.md) | [GitHub](https://github.com/paraspell) | ☐ | ☐ | ☐ | | [Paraverse Foundation](https://talisman.xyz) | [Signet - Talisman](signet.md) | [GitHub](https://github.com/TalismanSociety) | ☐ | ☐ | ☐ | | [Libeccio Labs](https://github.com/LibeccioLabs) | [Tux0](tux0.md) | [GitHub](https://github.com/LibeccioLabs) | ☐ | ☐ | ☐ | +| [PolkaGate](https://polkagate.xyz) | [PolkaMask](polkamask.md) | [GitHub](https://github.com/PolkaGate) | ☐ | ☐ | ☐ | [🔝](#top) From f5a7c3a6e19bb3c4e26340ef684bc7c9df408d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Thu, 9 Nov 2023 20:52:43 +0100 Subject: [PATCH 41/46] Update privacy_policy.md (#2098) * Update privacy_policy.md * Update privacy_policy.md Fix link to privacy policy --- docs/Support Docs/privacy_policy.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Support Docs/privacy_policy.md b/docs/Support Docs/privacy_policy.md index 288db029c0b..7af689aaa64 100644 --- a/docs/Support Docs/privacy_policy.md +++ b/docs/Support Docs/privacy_policy.md @@ -6,9 +6,9 @@ Updated December 2022 ## I. Data controller -1. The operator of the Web 3.0 Foundation website available under [https://w3f.github.io/Grants-Program/](https://w3f.github.io/Grants-Program/) (hereinafter referred to as the "**Website**") and offeror of blockchain-related services (such as currently e.g. the Polkadot Network, the Kusama Network and the Thousand Validators programme (hereinafter jointly and individually referred to as the "**Services**") and, thus, the Data Controller is the Web 3.0 Technologies Foundation, a company registered in the commercial register of the Canton of Zug, Switzerland (registration number CH-322.596.347), with the registered address Baarerstrasse 14, 6300 Zug, Switzerland (hereinafter referred to as "**Controller**", "**we**", "**us**"). +1. The operator of the Web 3.0 Foundation website available under [https://grants.web3.foundation/](https://grants.web3.foundation/) (hereinafter referred to as the "**Website**") and offeror of blockchain-related services (such as currently e.g. the Polkadot Network, the Kusama Network and the Thousand Validators programme (hereinafter jointly and individually referred to as the "**Services**") and, thus, the Data Controller is the Web 3.0 Technologies Foundation, a company registered in the commercial register of the Canton of Zug, Switzerland (registration number CH-322.596.347), with the registered address Baarerstrasse 14, 6300 Zug, Switzerland (hereinafter referred to as "**Controller**", "**we**", "**us**"). 2. We nurture and steward technologies and applications in the fields of decentralized web software protocols, particularly those, which utilize modern cryptographic methods to safeguard decentralization. Data protection is important to us and Controller adheres to the applicable data protection laws and regulations. This includes both the Swiss Federal Act on Data Protection ("**FADP**") and privacy requirements where applicable to individuals in the European Union and the member states of EFTA under the General Data Protection Regulation (hereinafter "**GDPR**") and/or other applicable national laws. -3. This Privacy Policy explains in particular how, for which purposes and to which extent your Personal Data is collected and processed by us through the Website or any type of Service we provide to you (whenever we are referring to you, hereinafter referred to as "**User**" or "**you**"). It also describes how your collected Personal Data can be verified, corrected or deleted. Our Services enable the collection of your Personal Data necessary for the establishment and maintenance of our blockchain-offerings.C +3. This Privacy Policy explains in particular how, for which purposes and to which extent your Personal Data is collected and processed by us through the Website or any type of Service we provide to you (whenever we are referring to you, hereinafter referred to as "**User**" or "**you**"). It also describes how your collected Personal Data can be verified, corrected or deleted. Our Services enable the collection of your Personal Data necessary for the establishment and maintenance of our blockchain-offerings. 4. As outlined in Sections II and X.A below, if you engage with us and use any of our blockchain-offerings, we may collect, by itself or through third parties, your data including, but not limited to: name, e-mail address, usage data and any information captured automatically through cookies. Complete details on each type of Personal Data collected are provided in the dedicated sections of this Privacy Policy or by specific explanation displayed to you online prior to the data collection. 5. This Website contains links to other third party websites. If you follow a link to any of those third party websites, please note that they have their own privacy policies and that we do not accept any responsibility or liability for their policies or their processing of your personal information. 6. For questions or requests related to data processing by us (such as request for information, deletion, revocation of consent, objection to data processing), you may revert by mail to the address above or write us an e-mail at [legal@web3.foundation](mailto:legal@web3.foundation) @@ -118,9 +118,9 @@ Updated December 2022 ## IX. Access to the Privacy Policy -1. The User can access, download, save or print this Privacy Policy in its' current/updated version at any time under the following address [https://web3.foundation/privacy-and-cookies/](https://web3.foundation/privacy-and-cookies). +1. The User can access, download, save or print this Privacy Policy in its current/updated version at any time under the following address [https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/privacy_policy.md](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/privacy_policy.md). -## IX. Definitions and legal references +## X. Definitions and legal references 1. **Personal Data** From 5f3b1ab36d5b936a5ea0751779dd56c3bd5c7884 Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Fri, 10 Nov 2023 02:24:06 -0600 Subject: [PATCH 42/46] Update Tellor.md (#2099) --- applications/Tellor.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/applications/Tellor.md b/applications/Tellor.md index 51ec98a776a..b21734eb7db 100644 --- a/applications/Tellor.md +++ b/applications/Tellor.md @@ -3,6 +3,7 @@ - **Team Name:** Tellor Inc - **Payment Address:** Ethereum 0x1B8E06E7133B89ea5A799Bf2bF0221aE71959190 (USDC) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 3 +- **Status:** [Terminated](https://github.com/w3f/Grants-Program/pull/1532#issuecomment-1781959568) ## Project Overview :page_facing_up: @@ -225,4 +226,4 @@ You can find more information about the program [here](../README.md#moneybag-ref **How did you hear about the Grants Program?** -We talked to Rohan at a few events about building on Polkadot and he recommended we apply! We’ve been in touch with Robin Ejsmond-Frey, Frank Bell, and Guatam from Parity who have done significant work with us in developing the specifications and design for the build. \ No newline at end of file +We talked to Rohan at a few events about building on Polkadot and he recommended we apply! We’ve been in touch with Robin Ejsmond-Frey, Frank Bell, and Guatam from Parity who have done significant work with us in developing the specifications and design for the build. From 9b2239c39b7b464aa2d071744fb630676a58b8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 10 Nov 2023 15:26:00 +0100 Subject: [PATCH 43/46] rm btc (#2101) --- .github/pull_request_template.md | 2 +- README.md | 4 ++-- applications/application-template-research.md | 6 +++--- applications/application-template.md | 6 +++--- applications/maintenance/maintenance-template.md | 4 ++-- docs/Process/how-to-apply.md | 2 +- docs/Support Docs/T&Cs.md | 6 ++---- docs/referral-program.md | 2 +- 8 files changed, 15 insertions(+), 17 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b8eacc22228..7e0cb4664e2 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -14,7 +14,7 @@ - [x] The [application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md) has been copied and aptly renamed (`project_name.md`). - [ ] I have read the [application guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/grant_guidelines_per_category.md). -- [ ] Payment details have been provided (bank details via email _or_ Polkadot (USDC & USDT) or BTC address in the application). +- [ ] Payment details have been provided (bank details via email _or_ Polkadot (USDC & USDT) address in the application). - [ ] The software delivered for this grant will be released under an open-source license specified in the application. - [ ] The initial PR contains only one commit (squash and force-push if needed). - [ ] The grant will only be announced once the first milestone [has been accepted](https://github.com/w3f/Grant-Milestone-Delivery#process) (see the [announcement guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/announcement-guidelines.md)). diff --git a/README.md b/README.md index 7a270927d7c..9cfd9df5eab 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ The W3F Grants Program offers different grant levels to help you best, depending ## :pencil: Process -> **:loudspeaker:** Payments can be made in USDT and USDC on the Polkadot [AssetHub](https://wiki.polkadot.network/docs/learn-assets), Bitcoin, and fiat (USD, EUR, CHF). Please indicate your preference in the application [as outlined in our application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md?plain=1#L7). If you want to apply in **private**, you can do so [:arrow_right: here](https://docs.google.com/forms/d/e/1FAIpQLSfMfjiRmDQDRk-4OhNASM6BAKii7rz_B1jWtbCPkUh6N7M2ww/viewform). Note that this is generally a slower process and imposes stricter requirements on applicants. +> **:loudspeaker:** Payments can be made in USDT and USDC on the Polkadot [AssetHub](https://wiki.polkadot.network/docs/learn-assets) and fiat (USD, EUR, CHF). Please indicate your preference in the application [as outlined in our application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md?plain=1#L7). If you want to apply in **private**, you can do so [:arrow_right: here](https://docs.google.com/forms/d/e/1FAIpQLSfMfjiRmDQDRk-4OhNASM6BAKii7rz_B1jWtbCPkUh6N7M2ww/viewform). Note that this is generally a slower process and imposes stricter requirements on applicants. ### 1. Application @@ -217,7 +217,7 @@ Please note that: We give away 500 USD to each referral of a successful grant application by _anyone having previously worked on a Web3 Foundation grant_ or _a [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors)_. Web3 Foundation and Parity employees do not qualify for the program, even if they previously worked on a grant. -In order to be eligible for the referral bonus, the application itself must contain the name of the [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors) or the GitHub account of the grantee as well as the payment address for the referral bonus (see the [application template](applications/application-template.md)). Payment is made in Bitcoin or USDT/USDC on Polkadot AssetHub after delivery and approval of the first milestone. +In order to be eligible for the referral bonus, the application itself must contain the name of the [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors) or the GitHub account of the grantee as well as the payment address for the referral bonus (see the [application template](applications/application-template.md)). Payment is made in USDT/USDC on Polkadot AssetHub after delivery and approval of the first milestone. ## :bulb: Help diff --git a/applications/application-template-research.md b/applications/application-template-research.md index 21591ec65c0..0b240e41ab1 100644 --- a/applications/application-template-research.md +++ b/applications/application-template-research.md @@ -5,7 +5,7 @@ > See the [Grants Program Process](https://github.com/w3f/Grants-Program/#pencil-process) on how to submit a proposal. - **Team Name:** Legal name of your team (e.g. JsonCorp) -- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot ( for USDC & USDT) or Bitcoin payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) +- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot (for USDC & USDT) payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 1, 2 or 3 > :exclamation: *The combination of your GitHub account submitting the application and the payment address above will be your unique identifier during the program. Please keep them safe.* @@ -121,7 +121,7 @@ Below we provide an **example roadmap**. In the descriptions, it should be clear - **Total Estimated Duration:** Duration of the whole project (e.g. 2 months) - **Full-Time Equivalent (FTE):** Average number of full-time employees working on the project throughout its duration (see [Wikipedia](https://en.wikipedia.org/wiki/Full-time_equivalent), e.g. 2 FTE) -- **Total Costs:** Requested amount in USD for the whole project (e.g. 12,000 USD). Note that the acceptance criteria and additional benefits vary depending on the [level](../README.md#level_slider-levels) of funding requested. This and the costs for each milestone need to be provided in USD; if the grant is paid out in Bitcoin, the amount will be calculated according to the exchange rate at the time of payment. +- **Total Costs:** Requested amount in USD for the whole project (e.g. 12,000 USD). Note that the acceptance criteria and additional benefits vary depending on the [level](../README.md#level_slider-levels) of funding requested. ### Milestone 1 Example — Literature Review and Data Collection @@ -164,7 +164,7 @@ Please include here You can find more information about the program [here](../README.md#moneybag-referral-program). - **Referrer:** Name of the Polkadot Ambassador or GitHub account of the Web3 Foundation grantee -- **Payment Address:** BTC, Ethereum (USDC/DAI) or Polkadot/Kusama (USDT) payment address. Please also specify the currency. (e.g. 0x8920... (DAI)) +- **Payment Address:** Polkadot/Kusama (USDT) payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) ## Additional Information :heavy_plus_sign: diff --git a/applications/application-template.md b/applications/application-template.md index 807793e767d..2c06687c5c1 100644 --- a/applications/application-template.md +++ b/applications/application-template.md @@ -5,7 +5,7 @@ > See the [Grants Program Process](https://github.com/w3f/Grants-Program/#pencil-process) on how to submit a proposal. - **Team Name:** Legal name of your team (e.g. JsonCorp) -- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot (for USDC & USDT) or Bitcoin payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) +- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot (for USDC & USDT) payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 1, 2 or 3 > :exclamation: *The combination of your GitHub account submitting the application and the payment address above will be your unique identifier during the program. Please keep them safe.* @@ -117,7 +117,7 @@ Below we provide an **example roadmap**. In the descriptions, it should be clear - **Total Estimated Duration:** Duration of the whole project (e.g. 2 months) - **Full-Time Equivalent (FTE):** Average number of full-time employees working on the project throughout its duration (see [Wikipedia](https://en.wikipedia.org/wiki/Full-time_equivalent), e.g. 2 FTE) -- **Total Costs:** Requested amount in USD for the whole project (e.g. 12,000 USD). Note that the acceptance criteria and additional benefits vary depending on the [level](../README.md#level_slider-levels) of funding requested. This and the costs for each milestone need to be provided in USD; if the grant is paid out in Bitcoin, the amount will be calculated according to the exchange rate at the time of payment. +- **Total Costs:** Requested amount in USD for the whole project (e.g. 12,000 USD). Note that the acceptance criteria and additional benefits vary depending on the [level](../README.md#level_slider-levels) of funding requested. ### Milestone 1 Example — Basic functionality @@ -163,7 +163,7 @@ Please include here You can find more information about the program [here](../README.md#moneybag-referral-program). - **Referrer:** Name of the Polkadot Ambassador or GitHub account of the Web3 Foundation grantee -- **Payment Address:** BTC, Ethereum (USDC/DAI) or Polkadot/Kusama (USDT) payment address. Please also specify the currency. (e.g. 0x8920... (DAI)) +- **Payment Address:** Polkadot/Kusama (USDT/USDC) payment address. Please also specify the currency. (e.g. 0x8920... (USDT)) ## Additional Information :heavy_plus_sign: diff --git a/applications/maintenance/maintenance-template.md b/applications/maintenance/maintenance-template.md index aeb5ffddb07..205a139cd7d 100644 --- a/applications/maintenance/maintenance-template.md +++ b/applications/maintenance/maintenance-template.md @@ -5,7 +5,7 @@ > See the [Maintenance Grants Process](https://github.com/w3f/Grants-Program#hammer_and_wrench-maintenance-grants) on how to submit a proposal. - **Team Name:** Legal name of your team (e.g. JsonCorp) -- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot (for USDC & USDT) or Bitcoin payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) +- **Payment Address:** In the case of fiat payment, please share your bank account privately with grants@web3.foundation via your contact email (see below) and enter the date when you shared the information with us (e.g. Fiat 24.12.1971, 11:59) here. Otherwise, provide the Polkadot (for USDC & USDT) payment address. Please also specify the currency. (e.g. 0x8920... (USDC)) - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 1, 2 or 3 > ⚠️ *The combination of your GitHub account submitting the application and the payment address above will be your unique identifier during the program. Please keep them safe.* @@ -112,7 +112,7 @@ Our responsibilities: - **Sprint/Period Duration:** Duration of the sprint/period (e.g. 4 weeks) - **Total Duration:** Duration of the entire maintenance contract (e.g. 1 year) - **Full-Time Equivalent (FTE):** Average number of full-time employees working on the project throughout its duration (see [Wikipedia](https://en.wikipedia.org/wiki/Full-time_equivalent), e.g. 2 FTE) -- **Max budget per sprint/period:** Requested max budget in USD per sprint/period (e.g. 7,000 USD). Cost for each period need to be provided in USD; if the grant is paid out in Bitcoin, the amount will be calculated according to the exchange rate at the time of payment. +- **Max budget per sprint/period:** Requested max budget in USD per sprint/period (e.g. 7,000 USD). - **Hourly rate:** Amount of budget per hour, since it’s unlikely that the maintenance of the project requires the exact same workload each sprint. > ⚠️ *Note that you will need to provide a comprehensive report of the work done at the end of each month, including the list of issues/bugs/pull requests worked on, time spent on each of these, & finally, the associated cost. The time allocation & price will likely vary from month to month, depending on the nature of the project you're contributing to. The report should be in the form of a Milestone Delivery, again like the typical procedure. W3F will make the payments only after the successful merge of each individual report.* diff --git a/docs/Process/how-to-apply.md b/docs/Process/how-to-apply.md index f6e95e10e96..092475c2f4e 100644 --- a/docs/Process/how-to-apply.md +++ b/docs/Process/how-to-apply.md @@ -9,7 +9,7 @@ If you want to apply in **private**, you can do so [:arrow_right: here](https:// ::: :::info -Payments can be made in USDT and USDC on the Polkadot [AssetHub](https://wiki.polkadot.network/docs/learn-assets), Bitcoin and fiat (USD, EUR, CHF). Please indicate your preference in the application [as outlined in our application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md?plain=1#L7). +Payments can be made in USDT and USDC on the Polkadot [AssetHub](https://wiki.polkadot.network/docs/learn-assets) and fiat (USD, EUR, CHF). Please indicate your preference in the application [as outlined in our application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md?plain=1#L7). ::: diff --git a/docs/Support Docs/T&Cs.md b/docs/Support Docs/T&Cs.md index 8ba6919da9b..d768aa07bda 100644 --- a/docs/Support Docs/T&Cs.md +++ b/docs/Support Docs/T&Cs.md @@ -23,8 +23,6 @@ The terms defined in this section whenever used in these Terms and Conditions sh "Affiliate" has the meaning with respect to any person, any other person directly or indirectly controlling, controlled by or under common control with such person; -"BTC" means the blockchain tokens native to the Bitcoin Network; - "Change of control" means any change in Your ownership or control or of a legal entity directly or indirectly owning or controlling You, whether by merger, consolidation, reorganization, take-over, change in the ownership of the share capital or otherwise; "Development Work" means any and all development activities related to the Software and undertaken by You. For the avoidance of doubt, any development activities undertaken before the Effective Date in relation to the Software are deemed to constitute Development Work and to form part of the deliverables to be provided by You and be subject to the terms of these Terms and Conditions; @@ -75,7 +73,7 @@ To apply for the Web 3.0 Foundation Grants Program, your application shall fulfi - it shall be a research or software-based project, which contributes to the advancement of the Polkadot ecosystem; - the Software shall be released under the Apache license version 2.0.; -- You must accept payment in USDT or USDC/DAI on Polkadot AssetHub, fiat or BTC; +- You must accept payment in USDT or USDC on Polkadot AssetHub or fiat; - You will need to submit the application and deliver the milestones according to the process specified below; The grants process consists of five parts, each of them described in more detail below: @@ -123,7 +121,7 @@ As soon as one evaluator approves the pull request, the delivery is officially a **(v) Payment process:** -The Operations Team specified in the [Grants-Program GitHub repository](https://github.com/w3f/Grants-Program), gets notified once the above-specified delivery was accepted. As soon as any feedback is provided by the evaluators, this feedback first needs to be resolved. After this, the Operations Team makes the payment to the bank account, Bitcoin or Polkadot AssetHub (for USDT and USDC) address specified in the initial application. +The Operations Team specified in the [Grants-Program GitHub repository](https://github.com/w3f/Grants-Program), gets notified once the above-specified delivery was accepted. As soon as any feedback is provided by the evaluators, this feedback first needs to be resolved. After this, the Operations Team makes the payment to the bank account or Polkadot AssetHub (for USDT and USDC) address specified in the initial application. ## 5. Scope of these Terms and Conditions diff --git a/docs/referral-program.md b/docs/referral-program.md index 5bce2450643..d4fcdf3b8eb 100644 --- a/docs/referral-program.md +++ b/docs/referral-program.md @@ -5,4 +5,4 @@ title: 💰 Referral Program We give away 500 USD to each referral of a successful grant application by _anyone having previously worked on a Web3 Foundation grant_ or _a [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors)_. Web3 Foundation and Parity employees do not qualify for the program, even if they previously worked on a grant. -In order to be eligible for the referral bonus, the application itself must contain the name of the [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors) or the GitHub account of the grantee as well as the payment address for the referral bonus (see the [application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md)). Payment is made in Bitcoin or USDT/USDC on Polkadot AssetHub. +In order to be eligible for the referral bonus, the application itself must contain the name of the [Polkadot Ambassador](https://wiki.polkadot.network/docs/ambassadors) or the GitHub account of the grantee as well as the payment address for the referral bonus (see the [application template](https://github.com/w3f/Grants-Program/blob/master/applications/application-template.md)). Payment is made in USDT/USDC on Polkadot AssetHub. From 876e551b0d03a2ec5234438dc9ad3a65b46d3a26 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Mon, 13 Nov 2023 09:21:33 +0100 Subject: [PATCH 44/46] Update privacy_policy.md Update policy --- docs/Support Docs/privacy_policy.md | 44 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/Support Docs/privacy_policy.md b/docs/Support Docs/privacy_policy.md index 7af689aaa64..79fd344cf34 100644 --- a/docs/Support Docs/privacy_policy.md +++ b/docs/Support Docs/privacy_policy.md @@ -1,21 +1,21 @@ Privacy Policy =========================== -Updated December 2022 +Updated November 2023 ## I. Data controller 1. The operator of the Web 3.0 Foundation website available under [https://grants.web3.foundation/](https://grants.web3.foundation/) (hereinafter referred to as the "**Website**") and offeror of blockchain-related services (such as currently e.g. the Polkadot Network, the Kusama Network and the Thousand Validators programme (hereinafter jointly and individually referred to as the "**Services**") and, thus, the Data Controller is the Web 3.0 Technologies Foundation, a company registered in the commercial register of the Canton of Zug, Switzerland (registration number CH-322.596.347), with the registered address Baarerstrasse 14, 6300 Zug, Switzerland (hereinafter referred to as "**Controller**", "**we**", "**us**"). -2. We nurture and steward technologies and applications in the fields of decentralized web software protocols, particularly those, which utilize modern cryptographic methods to safeguard decentralization. Data protection is important to us and Controller adheres to the applicable data protection laws and regulations. This includes both the Swiss Federal Act on Data Protection ("**FADP**") and privacy requirements where applicable to individuals in the European Union and the member states of EFTA under the General Data Protection Regulation (hereinafter "**GDPR**") and/or other applicable national laws. +2. We nurture and steward technologies and applications in the fields of decentralized web software protocols, particularly those which utilize modern cryptographic methods to safeguard decentralization. Data protection is important to us, and the Controller adheres to the applicable data protection laws and regulations. This includes both the Swiss Federal Act on Data Protection ("**FADP**") and privacy requirements where applicable to individuals in the European Union and the member states of EFTA under the General Data Protection Regulation (hereinafter "**GDPR**") and/or other applicable national laws. 3. This Privacy Policy explains in particular how, for which purposes and to which extent your Personal Data is collected and processed by us through the Website or any type of Service we provide to you (whenever we are referring to you, hereinafter referred to as "**User**" or "**you**"). It also describes how your collected Personal Data can be verified, corrected or deleted. Our Services enable the collection of your Personal Data necessary for the establishment and maintenance of our blockchain-offerings. 4. As outlined in Sections II and X.A below, if you engage with us and use any of our blockchain-offerings, we may collect, by itself or through third parties, your data including, but not limited to: name, e-mail address, usage data and any information captured automatically through cookies. Complete details on each type of Personal Data collected are provided in the dedicated sections of this Privacy Policy or by specific explanation displayed to you online prior to the data collection. -5. This Website contains links to other third party websites. If you follow a link to any of those third party websites, please note that they have their own privacy policies and that we do not accept any responsibility or liability for their policies or their processing of your personal information. -6. For questions or requests related to data processing by us (such as request for information, deletion, revocation of consent, objection to data processing), you may revert by mail to the address above or write us an e-mail at [legal@web3.foundation](mailto:legal@web3.foundation) +5. This Website contains links to other third-party websites. If you follow a link to any of those third-party websites, please note that they have their own privacy policies and that we do not accept any responsibility or liability for their policies or their processing of your personal information. +6. For questions or requests related to data processing by us (such as request for information, deletion, revocation of consent, or objection to data processing), you may revert by mail to the address above or write us an e-mail at [legal@web3.foundation](mailto:legal@web3.foundation) ## II. Types of Data collected -1. Controller respects the privacy of the User and will not collect and process any other data (such as name, address, phone number, e-mail address, IP address, device type etc.) unless they are +1. The Controller respects the privacy of the User and will not collect and process any other data (such as name, address, phone number, e-mail address, IP address, device type, etc.) unless they are * provided voluntarily by the User; * gathered as a result of specific verifications performed by third parties included in Section X.C below based on the Personal Data provided by the User; @@ -26,12 +26,12 @@ Updated December 2022 ### A. Use of Personal Data -1. Data transmitted by the User to Controller may be used as follows: +1. Data transmitted by the User to the Controller may be used as follows: * to create a user account; * to respond to your inquiries and your correspondence; - * for marketing analysis purposes, in particular to better understand the needs of Users and improve the Services of Controller, and to provide Users with relevant information relating to any of our networks operated; - * to ensure our Website functions correctly, in particular to ensure that content from our Website is presented in the most effective manner for you and for your computer; + * for marketing analysis purposes, in particular, to better understand the needs of Users and improve the Services of Controller, and to provide Users with relevant information relating to any of our networks operated; + * to ensure our Website functions correctly, in particular, to ensure that content from our Website is presented in the most effective manner for you and for your computer; * to maintain or improve our services offered through the Website. 2. Please consult Section XI below to get further information on additional use of your data collected on any of our network offerings. @@ -39,20 +39,20 @@ Updated December 2022 1. The Controller may process Personal Data of Users if one of the following applies: - 1. Users have given their consent for one or more specific purposes. Note: Under some legislations, the Controller may be allowed to process Personal Data until the User objects to such processing ("opt-out"), without having to rely on consent or any other of the following legal bases. This, however, does not apply, whenever the processing of Personal Data is subject to European data protection law (GDPR); + 1. Users have given their consent for one or more specific purposes. Note: Under some legislations, the Controller may be allowed to process Personal Data until the User objects to such processing ("opt-out") without having to rely on consent or any other of the following legal bases. This, however, does not apply, whenever the processing of Personal Data is subject to European data protection law (GDPR); 2. provision of Data is necessary for the performance of an agreement with the User and/or for any pre-contractual obligations thereof; 3. processing is necessary for the establishment, exercise or defence of legal claims or proceedings; 4. processing is necessary for compliance with a legal and regulatory obligation to which the Controller is subject; 5. processing is related to a task that is carried out in the public interest or in the exercise of official authority vested in the Controller; 6. processing is necessary for the purposes of the legitimate interests pursued by the Controller or by a third party. -2. In any case, the Controller will gladly help to clarify the specific legal basis that applies to the processing, and in particular whether the provision of Personal Data is a statutory or a contractual requirement, or a requirement necessary to enter into a contract. +2. In any case, the Controller will gladly help to clarify the specific legal basis that applies to the processing, and in particular whether the provision of Personal Data is a statutory or a contractual requirement or a requirement necessary to enter into a contract. 3. Within and to the extent under the scope of application of the GDPR, the data processing described in this clause III. is justified in order to provide our contractually agreed services to you pursuant to Art. 6 para. 1 sentence 1 letter b GDPR and to comply with legal obligations to which we are subject pursuant to Art. 6 para. 1 letter c GDPR. ### C. Methods of processing, access to data and disclosure to third parties -1. The data processing is carried out using computers and/or IT enabled tools, following organizational procedures and modes strictly related to the purposes indicated. -2. Access to Personal Data is limited to those employees and/or third parties assigned with processing tasks who therefore need to know about this data. These employees and/or third parties are subject to confidentiality undertakings and/or data processing agreements and must comply with applicable data protection laws. -3. Controller does not sell, transfer or market your Personal Data to third parties (who may use them for their own purposes). However, we may disclose your Personal Data to trusted third parties and/or certain types of persons in charge, involved with the operation of this Website (administration, sales, marketing, legal, system administration) or external parties (such as third party technical service providers, mail carriers, hosting providers, IT companies, communications agencies, our auditors, third parties involved in hosting or organizing events or seminars) appointed, if necessary, as Data Processors by the Controller. +1. The data processing is carried out using computers and/or IT-enabled tools, following organizational procedures and modes strictly related to the purposes indicated. +2. Access to Personal Data is limited to those employees and/or third parties assigned with processing tasks who therefore, need to know about this data. These employees and/or third parties are subject to confidentiality undertakings and/or data processing agreements and must comply with applicable data protection laws. +3. Controller does not sell, transfer or market your Personal Data to third parties (who may use them for their own purposes). However, we may disclose your Personal Data to trusted third parties and/or certain types of persons in charge involved with the operation of this Website (administration, sales, marketing, legal, system administration) or external parties (such as third party technical service providers, mail carriers, hosting providers, IT companies, communications agencies, our auditors, third parties involved in hosting or organizing events or seminars) appointed, if necessary, as Data Processors by the Controller. 4. Please consult Section XI below for lists of all third party processors currently assigned with processing activities on our behalf on any of our networks operated. 5. Your Personal Data will not be disclosed to third parties for other purposes than the ones mentioned above or the following additional reasons: @@ -64,23 +64,23 @@ Updated December 2022 ### D. Place of processing and export of data 1. The data is processed at the Controller's operating offices and in any other places where the parties involved in the processing are located. Depending on the User's location, data transfers may involve transferring the User's data to a country other than their own. -2. Therefore, we reserve the right to transfer, store, use and process your data, including any personal information, to/by recipients in countries outside of the European Economic Area ("**EEA**") including the United States and possibly other countries. You should note that laws vary from jurisdiction to jurisdiction, and so laws and regulations relating to privacy and data disclosure, applicable to the places where your information is transferred to or stored, used or processed in, may not provide the same level of protection as in your place of residency. We take the legally required safeguards and contractual measures to ensure that any recipients of your Personal Data abroad undertake to comply with the level of data protection and security prescribed by your applicable local data protection legislation. +2. Therefore, we reserve the right to transfer, store, use and process your data, including any personal information, to/by recipients in countries outside of the European Economic Area ("**EEA**") including the United States and possibly other countries. You should note that laws vary from jurisdiction to jurisdiction, and so laws and regulations relating to privacy and data disclosure applicable to the places where your information is transferred to or stored, used or processed in, may not provide the same level of protection as in your place of residency. We take the legally required safeguards and contractual measures to ensure that any recipients of your Personal Data abroad undertake to comply with the level of data protection and security prescribed by your applicable local data protection legislation. ## IV. Retention of data -1. The Controller will retain Personal Data for as long as it is required to deliver the Services described in Sections III.A above and X.B below, and/or, upon termination, as long as required by law or regulations (e.g. mandatory retention periods), whichever is longer. +1. The Controller will retain Personal Data for as long as it is required to deliver the Services described in Sections III. A above and X.B below, and/or, upon termination, as long as required by law or regulations (e.g. mandatory retention periods), whichever is longer. Therefore, 1. Personal Data collected for purposes related to the performance of a contract between the Controller and the User shall be retained until such contract has been fully performed; 2. Personal Data collected for the purposes of the Controller's legitimate interests shall be retained as long as needed to fulfil such purposes. 2. The Controller may be allowed to retain Personal Data for a longer period whenever the User has given consent to such processing, as long as such consent is not withdrawn. -3. Once the retention period expires, Personal Data shall be deleted. Therefore, the right to access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after expiration of the retention period. +3. Once the retention period expires, Personal Data shall be deleted. Therefore, the right to access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after the expiration of the retention period. ## V. Security measures 1. We take adequate technical and organizational precautions and security measures to prevent accidental or intentional manipulation, unauthorized access, disclosure, unauthorized destruction, partial or complete loss, misuse or alteration of your Personal Data. Accordingly, we store all the personal information you provide on secure (password- and firewall-protected) servers. Our security measures are continuously improved in line with technical developments. You are responsible for keeping the account information for accessing any of our networks operated confidential. -2. The User is aware and acknowledges that no technical and organizational measures can fully eliminate security risks connected with transmission of information over the Internet. Once Controller has received the transmitted information, it shall adequately secure it in its systems. +2. The User is aware and acknowledges that no technical and organizational measures can fully eliminate security risks connected with the transmission of information over the Internet. Once the Controller has received the transmitted information, it shall adequately secure it in its systems. ## VI. The rights of Users @@ -90,7 +90,7 @@ Updated December 2022 * Withdraw their consent at any time. Users have the right to withdraw consent where they have previously given their consent to the processing of their Personal Data. Please note that even after you have chosen to withdraw your consent, we may be able to continue to process your Personal Data to the extent required or permitted by law. * Object to processing of their data. Users have the right to object to the processing of their data if the processing is carried out on a legal basis other than consent (e.g. for a public interest, in the exercise of an official authority vested in the Controller or for the purpose of legitimate interests pursued by the Controller). Users may object to such processing by providing a ground related to their particular situation to justify the objection. In particular, under and to the extent of a scope of application of the GDPR, in those cases where we base processing on our legitimate interests, you have the right to object to the processing. Users must know that, however, should their Personal Data be processed for direct marketing purposes, they can object to that processing at any time without providing any justification. - * Access their data. Users have the right to learn if the Controller is processing data, obtain disclosure regrading certain aspects of the processing and obtain a copy of the data undergoing processing. + * Access their data. Users have the right to learn if the Controller is processing data, obtain disclosure regarding certain aspects of the processing and obtain a copy of the data undergoing processing. * Verify and seek rectification. Users have the right to verify the accuracy of their data and ask for it to be updated or corrected. Please note that you must advise us of any changes to your personal information so that we can ensure that your personal information is accurate and up to date. * Restrict the processing of their data. Users have the right, under certain circumstances, to restrict the processing of their data if the accuracy of the data is disputed. In this case, the Controller will not process their data for any purpose other than storing it. * Restrict the use of Personal Data whilst complaints are resolved. @@ -99,7 +99,7 @@ Updated December 2022 * Receive their data and have it transferred to another controller. Users have the right to receive their data in a structured, commonly used and machine readable format and, if technically feasible, to have it transmitted to another controller without any hindrance. This provision is applicable provided that the data is processed by automated means and that the processing is based on the User's consent, on a contract which the User is part of or on pre-contractual obligations thereof. * Lodge a complaint. Users have the right to bring a claim before their competent data protection authority (depending on your country of residence and the applicable data protection laws – note that in certain countries you may only notify a data protection authority which may then decide to initiate legal steps based on its own discretion). 2. Any requests to exercise User rights can be directed to the Controller through the contact details provided in this document. -3. Where possible, Controller will fulfil such a request of the User within the statutory applicable timeframe, unless a delay or a retention of the relevant data is permitted by law (e.g. a lack of convincing identity proof by an information requestor), is required for another valid purpose, for example to enable the fulfilment of contractual obligations, or is covered by a valid limitation or exemption under relevant privacy or data protection regulations. +3. Where possible, the Controller will fulfil such a request of the User within the statutory applicable timeframe, unless a delay or a retention of the relevant data is permitted by law (e.g. a lack of convincing identity proof by an information requestor), is required for another valid purpose, for example, to enable the fulfilment of contractual obligations, or is covered by a valid limitation or exemption under relevant privacy or data protection regulations. 4. Any requests will be free of charge, provided we do not incur unexpected and inadequate costs for providing you with details of your Personal Data. ## VII. Cookies @@ -107,7 +107,7 @@ Updated December 2022 1. When the User visits the Website, information can be automatically stored on his or her computer. This is done in the form of so-called "cookies" or a similar file, which help Controller in various ways, for example, to get to know the preferences of visitors and Users of the Website and to improve the Website. Both permanent cookies and functional, temporary session cookies may be used: permanent cookies remain on your computer after you close your session and until you delete them, while session cookies expire when you close your browser. 2. Any use of Cookies – or of other tracking tools – by this Website or by the Controller of third-party services used by this Website serves the purpose of providing the Service required by the User, in addition to any other purposes described in the present document and in the Cookie Notice, if available. Please consult Section XI below to get information on any Cookie Notices available on any of our networks operated. 3. You may refuse the use of any cookies by selecting the appropriate settings on your browser. Most browsers allow you to delete cookies, prevent their installation or generate a warning before a cookie is installed. The User can obtain further information on this subject from the relevant browser instructions. Note, however, that this may affect your experience of our Website. To find out more about cookies, including how to manage, reject and delete cookies, visit [www.allaboutcookies.org](https://www.google.com/url?q=http://www.allaboutcookies.org&sa=D&ust=1593180898892000). -4. Controller will use automatically stored information exclusively for statistical analysis and in particular will not associate any Personal Data with the User unless necessary. This Notice does not limit our use or disclosure to third parties of Non-Personal Information, and we reserve the right to use and disclose such Non-Personal Information to our partners, advertisers, and other third parties at our discretion. +4. Controller will use automatically stored information exclusively for statistical analysis and in particular, will not associate any Personal Data with the User unless necessary. This Notice does not limit our use or disclosure to third parties of Non-Personal Information, and we reserve the right to use and disclose such Non-Personal Information to our partners, advertisers, and other third parties at our discretion. 5. Within and to the extent under the scope of application of the GDPR, the data processed by cookies for the aforementioned purposes is justified in order to protect our legitimate interest and those of third parties pursuant to Art. 6 para. 1 sentence 1 letter f GDPR. 6. *Simple Analytics*. Even if we don't need to disclose it, since we aim to be as much transparent as possible with our users, we inform you that to get information about the behaviour of our user, we use Simple Analytics (). This analytics software gives us insight about our user only in general, but not about individuals, as it does not track visitors and does not store any personal identifiable information. If you would like to, please go to their website to find out what Simple Analytics collects (and most importantly what they don’t). @@ -142,7 +142,7 @@ Updated December 2022 The natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of Personal Data, including the security measures concerning the operation and use of this Website. The Data Controller, unless otherwise specified, is the owner of this Website. 7. **Website** - The Website of Controller available under [https://w3f.github.io/Grants-Program/](https://w3f.github.io/Grants-Program/). + The Website of the Controller is available under [https://w3f.github.io/Grants-Program/](https://w3f.github.io/Grants-Program/). 8. **Service** The Services (and blockchain offerings) provided by Controller. @@ -151,7 +151,7 @@ Updated December 2022 Unless otherwise specified, all references made within this document to the European Union include all current member states to the European Union and the European Economic Area. 10. **Cookies** - Small sets of data stored in the User's device. + Small sets of data are stored in the User's device. 11. **Legal information** This privacy statement has been prepared based on provisions of multiple legislations, including Art. 13/14 of Regulation (EU) 2016/679 (General Data Protection Regulation). From acbaa8ae8784c343a85f2ce0b950a1fa82e26214 Mon Sep 17 00:00:00 2001 From: Rostislav Litovkin <77352013+RostislavLitovkin@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:19:00 +0100 Subject: [PATCH 45/46] Amendment to Plutonication (#2105) * Create Plutonication.md * Update Plutonication.md * Update Plutonication.md * Update Plutonication.md * End to end testing moved to milestone 3 --- applications/Plutonication.md | 49 ++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/applications/Plutonication.md b/applications/Plutonication.md index 75c744d1de2..6023a0cbad6 100644 --- a/applications/Plutonication.md +++ b/applications/Plutonication.md @@ -310,7 +310,7 @@ Below we provide an **example roadmap**. In the descriptions, it should be clear | -----: | ----------- | ------------- | | **0a.** | License | MIT | | **0b.** | Documentation | We will provide both **in code documentation for individual methods**. We will also provide a tutorial on how to run the Plutonication Server locally and in cloud. | -| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | +| **0c.** | Testing and Testing Guide | ~~All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet)~~ Unit tests for all of the functions | | **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone and for running the server in production. | | 1. | PlutonicationServerFlask | A Python server with Flask and Flask-SocketIO used for establishing a stable websocket connection between the dApp and Wallet. Use of server is crucial for reliable establishing of connection. | | 1a. | create_room | dApp creates room | @@ -321,56 +321,57 @@ Below we provide an **example roadmap**. In the descriptions, it should be clear | 1f. | raw_signature | wallet provides a raw message signature | | 2. | database requirements | none | -### Milestone 2 Plutonication C# version +### Milestone 2 Plutonication Typescript version -- **Estimated duration:** 1 month +- **Estimated Duration:** 1 month - **FTE:** 0.5 - **Costs:** 7500 USD -> :exclamation: **The default deliverables 0a-0d below are mandatory for all milestones**, and deliverable 0e at least for the last one. - | Number | Deliverable | Specification | | -----: | ----------- | ------------- | | **0a.** | License | MIT | -| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a c# dApp. | -| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in c# (with Plutonication and Substrate.NetApi) and a sample Wallet (PlutoWallet) | +| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a javascript/typescript dApp. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | | **0d.** | Docker | We will provide a Dockerfile for a sample dApp that can be used to test all the functionality delivered with this milestone. | -| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with Substrate.NetApi | +| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with polkadot.js api | | 1a. | Initialize(AccessCredentials ac) -> void | Method used for initializing the PlutonicationDAppClient | | 1b. | ReceiveAddress() -> Address | Handles the receiving of SS58 encoded address | | 1c. | SendPayloadAsync(Payload payload) -> void | Method used for requesting an extrinsic payload sign | -| 1d. | SendRawAsync(bytes rawMessage) -> void | Method used for requesting a raw message sign | +| 1d. | SendRawAsync(Bytes rawMessage) -> void | Method used for requesting a raw message sign | | 2. | PlutonicationWalletClient | This would be a series of methods tailored for use with wallets. | -| 2a. | SendAddress() -> Address | Sends the SS58 encoded address of the account in the wallet | -| 2b. | SendSignedPayloadAsync(Payload payload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | +| 2a. | SendAddress(Address address) -> void | Sends the SS58 encoded address of the account in the wallet | +| 2b. | SendSignedPayloadAsync(Payload signedPayload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | | 2c. | SendSignedRawAsync(bytes signedRaw) -> void | Method used for sending a signed raw message back to the dApp. | -| 3. | NuGet package | We will provide a NuGet package, which is commonly used it c# development. It is comparable to NPM packages in Javascript world. | -| 4. | Sample dApp | We will make a sample C# console dApp (with Plutonication and Substrate.NetApi) published to a public github repo. | +| 3. | QR code pop-up | We will provide a function that would embed an HTML qr code popup into a dApp. The QR code is used for establishing a connection. | +| 4. | NPM package | We will provide an NPM package, which is commonly used it javascript/typescript development. | +| 5. | Sample dApp | We will make a sample typescript console dApp (with Plutonication and Polkadot.js api) published to a public github repo. | -### Milestone 3 Plutonication Typescript version +### Milestone 3 Plutonication C# version -- **Estimated Duration:** 1 month +- **Estimated duration:** 1 month - **FTE:** 0.5 - **Costs:** 7500 USD +> :exclamation: **The default deliverables 0a-0d below are mandatory for all milestones**, and deliverable 0e at least for the last one. + | Number | Deliverable | Specification | | -----: | ----------- | ------------- | | **0a.** | License | MIT | -| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a javascript/typescript dApp. | -| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | +| **0b.** | Documentation | We will provide both **in code documentation for individual methods** and a **tutorial** explaining how to integrate Plutonication into a c# dApp. | +| **0c.** | Testing and Testing Guide | All of the functions will be end-to-end tested with a sample dApp written in c# (with Plutonication and Substrate.NetApi) and a sample Wallet (PlutoWallet) | | **0d.** | Docker | We will provide a Dockerfile for a sample dApp that can be used to test all the functionality delivered with this milestone. | -| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with polkadot.js api | +| 1. | PlutonicationDAppClient | This would be a series of methods tailored for use with dApps. We will make sure that it is compatible with Substrate.NetApi | | 1a. | Initialize(AccessCredentials ac) -> void | Method used for initializing the PlutonicationDAppClient | | 1b. | ReceiveAddress() -> Address | Handles the receiving of SS58 encoded address | | 1c. | SendPayloadAsync(Payload payload) -> void | Method used for requesting an extrinsic payload sign | -| 1d. | SendRawAsync(Bytes rawMessage) -> void | Method used for requesting a raw message sign | +| 1d. | SendRawAsync(bytes rawMessage) -> void | Method used for requesting a raw message sign | | 2. | PlutonicationWalletClient | This would be a series of methods tailored for use with wallets. | -| 2a. | SendAddress(Address address) -> void | Sends the SS58 encoded address of the account in the wallet | -| 2b. | SendSignedPayloadAsync(Payload signedPayload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | +| 2a. | SendAddress() -> Address | Sends the SS58 encoded address of the account in the wallet | +| 2b. | SendSignedPayloadAsync(Payload payload) -> void | Method used for sending a signed extrinsic payload back to the dApp. The signed extrinsic payload will then be added to the extrinsic and submitted to chain. | | 2c. | SendSignedRawAsync(bytes signedRaw) -> void | Method used for sending a signed raw message back to the dApp. | -| 3. | QR code pop-up | We will provide a function that would embed an HTML qr code popup into a dApp. The QR code is used for establishing a connection. | -| 4. | NPM package | We will provide an NPM package, which is commonly used it javascript/typescript development. | -| 5. | Sample dApp | We will make a sample typescript console dApp (with Plutonication and Polkadot.js api) published to a public github repo. | +| 3. | NuGet package | We will provide a NuGet package, which is commonly used it c# development. It is comparable to NPM packages in Javascript world. | +| 4. | Sample dApp | We will make a sample C# console dApp (with Plutonication and Substrate.NetApi) published to a public github repo. | +| 5. | Testing moved from milestone 1 | All of the functions will be end-to-end tested with a sample dApp written in typescript (with Plutonication and Polkadot.js api) and a sample Wallet (PlutoWallet) | ### Milestone 4 Plutonication extension From 3c57355049d17f5b4abfae4624487d6d91f2d35c Mon Sep 17 00:00:00 2001 From: Keegan | W3F <35080151+keeganquigley@users.noreply.github.com> Date: Tue, 14 Nov 2023 06:35:44 -0600 Subject: [PATCH 46/46] Update index.md (#2107) --- applications/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/index.md b/applications/index.md index e895b3ac125..8a4564d61ff 100644 --- a/applications/index.md +++ b/applications/index.md @@ -97,7 +97,7 @@ Besides, **there is a clear difference between an application being accepted and | [Moonsong Labs](https://moonsonglabs.com/) | [StorageHub](./StorageHub.md) | [GitHub](https://github.com/Moonsong-Labs) | ☐ | ☐ | ☐ | | [Jonathan Brown](https://acuity.social/) | [Hybrid Explorer Phase 2](hybrid2.md) | [GitHub](https://github.com/hybrid-explorer) | ☐ | ☒ | ☐ | | [Coong Crafts](https://coongcrafts.io/) | [DelightfulDOT](delightfuldot.md) | [GitHub](https://github.com/CoongCrafts) | ☐ | ☐ | ☐ | -| [Lastic](https://www.lastic.xyz/) | [Lastic](Lastic.md) | [GitHub](https://github.com/LasticXYZ) | ☐ | ☐ | ☐ | +| [Lastic](https://www.lastic.xyz/) | [Lastic](Lastic.md) | [GitHub](https://github.com/LasticXYZ) | ☐ | ☒ | ☒ | [🔝](#top)