StarkNet wallet <-> dApp bridge

Overview

get-starknet
StarkNet wallet <-> dApp bridge

npm

Alpha version

Goals

  • Allow dApps to seamlessly connect to any wallet on StarkNet
  • Allow wallets to seamlessly connect to any dApp, and get discovered by users which need a new wallet
  • An open source wallet/dApp API controlled by the community
  • An open source StarkNet wallet discovery list moderated by the community

Installation

# using npm
npm install get-starknet

# using yarn
yarn add get-starknet

Usage for dApp developers

If you were using getStarknet() before, simply replace the import line as below.

-import { getStarknet } from "@argent/get-starknet"
+import { getStarknet } from "get-starknet"
  • Optional - customize the CSS of get-starknet to match your look&feel
  • Optional - integrate with new API functions (e.g.: modify wallet list using custom sort/include/exclude, etc.)

Deatils

Flow

  • Once a dApp wants to connect to a wallet, it calls getStarknet() (or optionally use the new connect API to control the order, included/excluded, etc.)

  • In the first call to getStarknet() the package will look for all injected extensions in the window which were added using a key starting with starknet-*, i.e. starknet-walletname

  • There are three cases

    • No objects found: meaning there is no installed wallet extension. In this case, a popup is shown (possibly customizable by the dApp) with a few ordering options of the known wallets with install links -
      • dApp controlled order
      • Community controlled order
      • Random
      • Also allowed including/excluding wallets from the list
    • A single object is found: this object is returned as the Starknet window object. dApp will use the returned (installed) wallet for this session
    • Multiple objects are found: In this case a popup is shown to the user (again, possibly customizable) with a random order of the available wallet objects. Users can select the wallet they want to use, possibly selecting the default wallet for this dApp.
      • If there is one or more pre-authorized wallets, show them first in the list ordered by last selected (from connect-to-wallet popup, saved in localStorage by the lib)
      • Multiple objects are found AND a default wallet was selected for this dApp (based on localstorage): the default wallet is selected

Wallet Developers

  • Create a wallet complying to the required APIs (based on the starknet.js APIs + 3 new fields: name, icon and id, for the "choose a wallet" popup (e.g. installed wallets list))
  • The wallet's page-script object should be added to window using a key starting with starknet, i.e. starknet-walletname
  • Optional - for the wallet to be included in the discovery list - the wallet developer will issue a pull request to get-starknet, comprising of the following:
    • Name and icon
    • Formalized links object with links to to download page over chrome, firefox and other extension stores

Package maintainers

  • Implement the code
  • Provide CSS classes for easy customization of popups (wallet discovery and wallet selection)
  • Accept pull requests for new wallets into the discovery popup, after some validation of the wallet functionality (in the future we can enable wallet list management on-chain with a governance mechanism for adding new wallets using the StarkNet token / governance mechanism).
Comments
  • [Enhancement]: Multi chain support

    [Enhancement]: Multi chain support

    opened by avimak 11
  • Web app Svelte - navigator.userAgent deprecated ?

    Web app Svelte - navigator.userAgent deprecated ?

    Hello! I don't know if it's ok to open an issue for this, but I wanted to comment on it if applicable, apparently if you have a svelte app using get-starknet, only one of the two wallets can be used because userAgent is deprecated by Chrome. From what I could see it is being used in the Modal.svelte: image

    This is the warning I see in the browser: image

    And the problem (i think) is that it is not detected to have Braavos installed, I am investigating to find some alternative way or to solve the problem. image

    Dependencies (tried different versions of both starknet and get-starknet 2.0.0 doesn't work either): image

    opened by sdgalvan 6
  • refactor: future-proof `getInstalledWallets`

    refactor: future-proof `getInstalledWallets`

    Future starknet wallets should be automatically handled using this method, independent of the way they're set on the window object.

    A question remains: what if multiple wallets don't define an id? Currently only one of them would be keyed as "undefined" in this wallets object, overwriting the others. Since the key set on window is already unique for each wallet, why not use that as identifier?

    released 
    opened by delaaxe 3
  • Soft connect & Hard disconnect

    Soft connect & Hard disconnect

    Following discussions on Discord, I think the simplest way to express what I want to use is with a PR.

    This does two changes:

    • Allow a "soft-auto connect" if passing the onlyAutoconnect attribute. This allows me to non-blockingly connect users if there is a good path for it, or wait until later if not.
    • Allow a "hard-disconnect" behaviour, where disconnecting will no longer auto-connect.

    I use both of these functionality in the upcoming briq release, code available here: https://github.com/briqNFT/briq-builder/blob/multiwallet/src/chain/Wallet.ts#L33

    opened by wraitii 3
  • heavy logs in browser console

    heavy logs in browser console

    Hey guys!

    I am using get-starknet module for wallet connection but I found crazy logs in the browser console. import { getStarknet, connect, IStarknetWindowObject } from "get-starknet"

    It seems you're logging all messages. Is it mandatory or could you address it?

    image

    opened by mstrong-tech 2
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.33.0 to 5.36.2

    chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.33.0 to 5.36.2

    Bumps @typescript-eslint/eslint-plugin from 5.33.0 to 5.36.2.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.36.2

    5.36.2 (2022-09-05)

    Bug Fixes

    • eslint-plugin: [no-extra-parens] handle generic ts array type. (#5550) (0d6a190)
    • scope-manager: correct handling for class static blocks (#5580) (35bb8dd)
    • typescript-estree: don't double add decorators to a parameter property's parameter (#5582) (863694c)

    v5.36.1

    5.36.1 (2022-08-30)

    Bug Fixes

    • typescript-estree: fix decorator regression for pre TS4.8 (#5574) (a603015)

    v5.36.0

    5.36.0 (2022-08-30)

    This release includes full support for TS 4.8

    Bug Fixes

    Features

    v5.35.1

    5.35.1 (2022-08-24)

    Features

    • eslint-plugin: [explicit-member-accessibility] suggest adding explicit accessibility specifiers (#5492) (0edb94a)
    • eslint-plugin: [prefer-optional-chain] support suggesting !foo || !foo.bar as a valid match for the rule (#5266) (aca935c)
    • types: add unbound property in parser options (#5419) (e08a9dd)

    Bug Fixes

    • eslint-plugin: correct rule schemas to pass ajv validation (#5531) (dbf8b56)
    • ast-spec: NewExpression argument can be SpreadElement now (#5422) (3ced62f)
    • eslint-plugin: [no-useless-constructor] handle parameter decorator (#5450) (864dbcf)
    • scope-manager: visit static blocks (#5489) (78745c2)

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.36.2 (2022-09-05)

    Bug Fixes

    • eslint-plugin: [no-extra-parens] handle generic ts array type. (#5550) (0d6a190)
    • scope-manager: correct handling for class static blocks (#5580) (35bb8dd)

    5.36.1 (2022-08-30)

    Note: Version bump only for package @​typescript-eslint/eslint-plugin

    5.36.0 (2022-08-30)

    Bug Fixes

    Features

    5.35.1 (2022-08-24)

    Bug Fixes

    • eslint-plugin: correct rule schemas to pass ajv validation (#5531) (dbf8b56)

    5.35.0 (2022-08-24)

    ... (truncated)

    Commits
    • a87f269 chore: publish v5.36.2
    • 0d6a190 fix(eslint-plugin): [no-extra-parens] handle generic ts array type. (#5550)
    • 6634e86 docs(eslint-plugin): fix no-throw-literal options type (#5591)
    • 35bb8dd fix(scope-manager): correct handling for class static blocks (#5580)
    • 27b24e3 chore: publish v5.36.1
    • 4b37b9a chore: publish v5.36.0
    • 7a8afe2 fix(eslint-plugin): revert #5266 (#5564)
    • 81450ed feat: support TypeScript 4.8 (#5551)
    • 39829c0 docs: Fix links to getting started in README.md (#5546)
    • 4483a4b chore(utils): use Extract generic for ast-utils' predicates' helper fun...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • chore(deps-dev): bump @typescript-eslint/parser from 5.33.0 to 5.36.2

    chore(deps-dev): bump @typescript-eslint/parser from 5.33.0 to 5.36.2

    Bumps @typescript-eslint/parser from 5.33.0 to 5.36.2.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.36.2

    5.36.2 (2022-09-05)

    Bug Fixes

    • eslint-plugin: [no-extra-parens] handle generic ts array type. (#5550) (0d6a190)
    • scope-manager: correct handling for class static blocks (#5580) (35bb8dd)
    • typescript-estree: don't double add decorators to a parameter property's parameter (#5582) (863694c)

    v5.36.1

    5.36.1 (2022-08-30)

    Bug Fixes

    • typescript-estree: fix decorator regression for pre TS4.8 (#5574) (a603015)

    v5.36.0

    5.36.0 (2022-08-30)

    This release includes full support for TS 4.8

    Bug Fixes

    Features

    v5.35.1

    5.35.1 (2022-08-24)

    Features

    • eslint-plugin: [explicit-member-accessibility] suggest adding explicit accessibility specifiers (#5492) (0edb94a)
    • eslint-plugin: [prefer-optional-chain] support suggesting !foo || !foo.bar as a valid match for the rule (#5266) (aca935c)
    • types: add unbound property in parser options (#5419) (e08a9dd)

    Bug Fixes

    • eslint-plugin: correct rule schemas to pass ajv validation (#5531) (dbf8b56)
    • ast-spec: NewExpression argument can be SpreadElement now (#5422) (3ced62f)
    • eslint-plugin: [no-useless-constructor] handle parameter decorator (#5450) (864dbcf)
    • scope-manager: visit static blocks (#5489) (78745c2)

    ... (truncated)

    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.36.2 (2022-09-05)

    Note: Version bump only for package @​typescript-eslint/parser

    5.36.1 (2022-08-30)

    Note: Version bump only for package @​typescript-eslint/parser

    5.36.0 (2022-08-30)

    Note: Version bump only for package @​typescript-eslint/parser

    5.35.1 (2022-08-24)

    Note: Version bump only for package @​typescript-eslint/parser

    5.35.0 (2022-08-24)

    Note: Version bump only for package @​typescript-eslint/parser

    5.34.0 (2022-08-22)

    Note: Version bump only for package @​typescript-eslint/parser

    5.33.1 (2022-08-15)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • feat: v2

    feat: v2

    This PR introduces get-starknet v2

    Aim of v2 was to seperate core and ui logic, so other libs can reuse the only the core if they want to.

    It also introduces the ability to choose between starknet.js versions 3 and 4, defaulting to v4.

    Wallets can support the new starknet.js version picking by supporting

    wallet.enable({ starknetVersion?: "v3" | "v4" })
    

    While refactoring to a monorepo vite and vitest were introduced, which accelerate building and testing by a lot as you can see below:

    | Old method | Duration | New method | Duration | Improvement | |---|---|---|---|---| | yarn install | 8.11s | pnpm install | 1.60s | 5x | | yarn build | 4.30s. | pnpm build | 2.2s | 2x | | no tests | | pnpm test | 548ms | ∞ |

    opened by janek26 2
  • Get specific wallet by id

    Get specific wallet by id

    In starknet-react we want to give control over wallet selection to our users. One use case is that developers want to show some browser wallets even if they're not installed. It would be helpful to have a getWallet(id: string) method that returns the wallet object if it's installed, or null/undefined if not.

    released 
    opened by fracek 2
  • chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.22.0 to 5.25.0

    chore(deps-dev): bump @typescript-eslint/eslint-plugin from 5.22.0 to 5.25.0

    Bumps @typescript-eslint/eslint-plugin from 5.22.0 to 5.25.0.

    Release notes

    Sourced from @​typescript-eslint/eslint-plugin's releases.

    v5.25.0

    5.25.0 (2022-05-17)

    Bug Fixes

    • eslint-plugin: [typedef] stop enforcing rule for assignment expressions (#4958) (04a216c)
    • eslint-plugin: strict config should not extend recommended (#5005) (05d71c2)
    • website: correct Presets link to be Configs (#5004) (e18e91c)

    Features

    • eslint-plugin: [no-empty-function] new allow option overrideMethods (#4923) (13c05ae)
    • eslint-plugin: deprecate no-duplicate-imports in favour of import/no-duplicates (#4973) (1d2e41a)
    • update to TypeScript 4.7-rc (#4829) (6fe783c)

    v5.24.0

    5.24.0 (2022-05-16)

    Bug Fixes

    • eslint-plugin: [array-type] in fixer add missing parens for constructor types #4756 (#4971) (0377070)
    • website: missing colon before tip notes in configs.md (#4982) (f3a1aba)

    Features

    • eslint-plugin: Add BigInt object type to default ban-types list (#4970) (1867728)
    • eslint-plugin: add new 'strict' config (#4706) (4a500b2)

    v5.23.0

    5.23.0 (2022-05-09)

    Bug Fixes

    • ast-spec: correct AwaitExpression.argument type (#4880) (3ec5f53)
    • eslint-plugin: [no-restricted-imports] allow type import as long as there's one matching pattern (#4898) (0419d28)
    • eslint-plugin: [no-unnecessary-type-constraint] change to suggestion fix, fix multiple trailing comma failures (#4901) (4507ac8)

    Features

    Changelog

    Sourced from @​typescript-eslint/eslint-plugin's changelog.

    5.25.0 (2022-05-17)

    Bug Fixes

    • eslint-plugin: [typedef] stop enforcing rule for assignment expressions (#4958) (04a216c)
    • eslint-plugin: strict config should not extend recommended (#5005) (05d71c2)
    • website: correct Presets link to be Configs (#5004) (e18e91c)

    Features

    • eslint-plugin: [no-empty-function] new allow option overrideMethods (#4923) (13c05ae)
    • eslint-plugin: deprecate no-duplicate-imports in favour of import/no-duplicates (#4973) (1d2e41a)
    • update to TypeScript 4.7-rc (#4829) (6fe783c)

    5.24.0 (2022-05-16)

    Bug Fixes

    • eslint-plugin: [array-type] in fixer add missing parens for constructor types #4756 (#4971) (0377070)

    Features

    • eslint-plugin: Add BigInt object type to default ban-types list (#4970) (1867728)
    • eslint-plugin: add new 'strict' config (#4706) (4a500b2)

    5.23.0 (2022-05-09)

    Bug Fixes

    • eslint-plugin: [no-restricted-imports] allow type import as long as there's one matching pattern (#4898) (0419d28)
    • eslint-plugin: [no-unnecessary-type-constraint] change to suggestion fix, fix multiple trailing comma failures (#4901) (4507ac8)
    Commits
    • 59e9d88 chore: publish v5.25.0
    • 05d71c2 fix(eslint-plugin): strict config should not extend recommended (#5005)
    • e18e91c fix(website): correct Presets link to be Configs (#5004)
    • e91a4a1 docs(eslint-plugin): fix typo in prefer-readonly-parameter-types (#4997)
    • 6fe783c feat: update to TypeScript 4.7-rc (#4829)
    • 1d2e41a feat(eslint-plugin): deprecate no-duplicate-imports in favour of `import/no...
    • 13c05ae feat(eslint-plugin): [no-empty-function] new allow option overrideMethods (#4...
    • 04a216c fix(eslint-plugin): [typedef] stop enforcing rule for assignment expressions ...
    • 2f57f3f chore: publish v5.24.0
    • 4a500b2 feat(eslint-plugin): add new 'strict' config (#4706)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies released 
    opened by dependabot[bot] 2
  • feat: change default behaviour

    feat: change default behaviour

    this PR aims to change the default behaviour of the package:

    In case the package gets called the first time ever in a dapp and only one wallet is installed instead of showing a list with one wallet installed + discovery, replace by picking the one installed wallet by default. This is the default behaviour in @argent/get-starknet currently and doesnt force the user to do one additional step on every initial dapp usage.

    opened by janek26 2
  • v2.0.0 fail to install with npm

    v2.0.0 fail to install with npm

    Hello, I tried to install the last release, and whatever I do I get the following error. 1.5.0 works fine.

    npm ERR! code ETARGET npm ERR! notarget No matching version found for get-starknet-core@^2.0.0. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist.

    npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2022-12-08T15_06_46_813Z-debug-0.log

    opened by KamyarTaher 1
  • v2 - silent-connect (

    v2 - silent-connect ("neverAsk") regression

    v2 introduces a regression in the silent-connect (now "neverAsk") flow.

        // silently attempt to connect with a pre-authorized wallet
        useEffect(() => {
            // match the dapp with a wallet instance
            connect({ modalMode: "neverAsk" }).then(wallet => {
                // connect the dapp with the chosen wallet instance
                wallet?.enable().then(() => {
                    const isConnected = !!wallet?.isConnected;
                    setIsConnected(isConnected);
                });
            });
        }, []);
    

    the code above works 100% of the time using v1.5, and it fails on v2.

    I suspect a race because adding a timeout with delay=0 helps, i.e. -

        // silently attempt to connect with a pre-authorized wallet
        useEffect(() => {
            setTimeout(() => {
                // match the dapp with a wallet instance
                connect({ modalMode: "neverAsk" }).then(wallet => {
                    // connect the dapp with the chosen wallet instance
                    wallet?.enable().then(() => {
                        const isConnected = !!wallet?.isConnected;
                        setIsConnected(isConnected);
                    });
                });
            }, 0); // <-- no real delay, just skip a cycle
        }, []);
    

    to reproduce, simply use the first version (without a timeout), choose a wallet, approve the connection (aka "pre-authorize"), then refresh the page. do it with a visible browser-inspect-application tab displayed, you'll see the id being removed (ptobably because getAvailableWallets returns empty array).

    one more thing - if you adding a timeout, the code works, but you'll see multiple storage ids, meaning there are more races in there.

    bug 
    opened by avimak 3
  • Disconnect doesn't seem to work

    Disconnect doesn't seem to work

    Disconnecting after connecting doesn't work,

    import {connect, disconnect} from "get-starknet";
    
    // Doesn't work
    disconnect();
    
    // Neither does this
    disconnect( {clearDefaultWallet: true} );
    
    // Nor this
    disconnect( {clearLastWallet: true, clearDefaultWallet: true} );
    

    On the next session (in another tab or revisiting later), checking user login status still returns the wallet.

    connect( {showList: false} ).then( wallet => {
    	wallet
    		?.enable( {showModal: false} )
    		.then( () => _onConnectedStatusChange( wallet ) );
    } );
    
    opened by shramee 1
Releases(v1.5.0)
Owner
null
StarkNet support extension for VSCode. Visualize StarkNet contracts: view storage variables, external and view functions, and events.

StarkNet Explorer extension This VSCode extension quickly shows relevant aspects of StarkNet contracts: Storage variables of the current contract, and

Crytic 6 Nov 4, 2022
Modern, Flexible Starknet Dapp Template

cairopal • Modern, Flexible Starknet Dapp Template. Developing Clone the repository git clone [email protected]:a5f9t4/cairopal.git cd cairopal Install D

andreas 38 Sep 28, 2022
Elven Tools Dapp - Elrond blockckchain frontend dapp demo. Primarily for NFT minting, but it can be used for other purposes.

Elven Tools Dapp Docs: elven.tools/docs/landing-page.html Demo: dapp-demo.elven.tools Sneak peek: youtu.be/ATSxD3mD4dc The Dapp is built using Nextjs

Elven Tools 24 Jan 1, 2023
Cardano DApp Wallet Connector

Cardano DApp Wallet Connector This project was bootstrapped with Create React App. React JS demo In the project directory, you can run: npm start run

null 105 Dec 18, 2022
Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain.

Nami Wallet Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain. It's an open-source project and built by Berry Po

Berry 335 Dec 29, 2022
A simple CLI Tools to Empty Crypto Wallet & Send to your other Wallet Address

A simple CLI tools to empty crypto wallet & send to your other wallet, Build with Nodejs using Ethers API Run Locally Clone the project git clone ht

Raihan Ramadhani 11 Dec 29, 2022
BRIDGE is a collaborative project for fx(hash), conceived by Camille Roux.

BRIDGE collaborative project for fxhash BRIDGE is an experimental project for fxhash. Any artist can contribute. The main rule: draw the tiles at the

Camille Roux 11 Jul 22, 2022
A bridge between different EVM based Chains.

Blockchain Bridge between different Ethereum based chains. This project uses DApps and smart contracts to Bridge assets between blockchains and it is

Yadav! ✔ 4 Jun 2, 2022
A postMessage bridge to connect to dapps loaded into an iframe.

cardano-dapp-connector-bridge A postMessage bridge to connect to dApps loaded into an iframe. Motivation In April 2022, browser extensions are the onl

Tastenkunst GmbH 15 Oct 11, 2022
Verbosely Documented, Minimal Starknet Contract Examples.

cairo-by-example • Verbosely Documented, Minimal Starknet Contract Examples. Cairo By Example deployed to https://cairo-by-example.xyz Developing Clon

andreas 63 Dec 6, 2022
A set of librairies in Cairo for use on StarkNet

Sekai StarkNet Libraries A series of libraries to help using Cairo on StarkNet. Examples for use in other Cairo contracts are provided in examples. Co

Sekai 38 Nov 14, 2022
This is a development platform to quickly generate, develop & deploy smart contract based applications on StarkNet.

generator-starknet This is a development platform to quickly generate, develop, & deploy smart contract based apps on StarkNet. Installation First, in

Only Dust 34 Nov 18, 2022
Adapter application for consuming web3 messages from ie. wallets, and passing them on to starknet

?? StarknNet web3 account Development setup Clone deps with submodules git clone --recurse-submodules [email protected]:software-mansion-labs/starknet-we

Software Mansion – Labs 20 Nov 21, 2022
scaffold-stark is a forkable StarkNet dev stack focused on fast product iterations, inspired by scaffold-eth.

?? scaffold-stark scaffold-stark is a forkable StarkNet dev stack focused on fast product iterations, inspired by scaffold-eth. Drop in your Cairo sma

parketh 25 Oct 7, 2022
This repo contains instructions on how to create your NFT in Solana(using Metaplex and Candy Machine) and mint it using your custom front-end Dapp

Solana-NFT minting Dapp Create your own NFT's on Solana, and mint them from your custom front-end Dapp. Tools used Metaplex -> Metaplex is the NFT sta

Udit Sankhadasariya 12 Nov 2, 2022
Minimal Typescript / NextJS dApp template bootstrapped with wagmi Ethereum react hooks library.

Welcome to the NextJS wagmi starter template ?? Looking to get up and running with a Typescript / NextJS dApp as quickly as possible? You're in the ri

Seth 78 Jan 4, 2023
A Bed and Breakfast dApp run on Ethereum. Includes a token + schedule system (Solidity) and full front-end (React + ethers.js) built with Hardhat.

Hotel ETH - Watch Demo Video Hotel ETH A (fictional) Bed-and-Breakfast run on Ethereum Come Book a Room on Kovan or Rinkeby Networks View the Demo » C

Ryan Lambert 20 Aug 20, 2022
Complete Open Source Front End Candy Machine V2 Minter dAPP Built For The Frog Nation NFT Solana Project. Built With React, Candy Machine V2, Typescript

Complete Open Source Front End Candy Machine V2 Minter dAPP Built For The Frog Nation NFT Solana Project. Built With React, Candy Machine V2, Typescript

null 17 Sep 24, 2022
A MERN Stack dapp the utilizes three solidity contracts

A MERN Stack dapp the utilizes three solidity contracts. It verifies user ownership of third party NFTs, generates an image incorporating a third party NFT image pulled from IPFS, mints a new NFT for users that includes an on-chain message and metadata to Opensea standards.

Max Girteit 5 Jun 30, 2022