/fcl-dev-wallet

A Flow wallet for development purposes. To be used with the Flow Emulator.

Primary LanguageGoApache License 2.0Apache-2.0


Logo

A Flow wallet for effortless development, to be used with the Flow Emulator and FCL.
FCL docs»

Report Bug · Getting Started



Introduction

The FCL dev wallet is a mock Flow wallet that simulates the protocols used by FCL to interact with the Flow blockchain on behalf of simulated user accounts.

IMPORTANT

Warning

This project implements an FCL compatible interface, but should not be used as a reference for building a production grade wallet.

This project should only be used in aid of local development against a locally run instance of the Flow blockchain like the Flow emulator, and should never be used in conjunction with Flow Mainnet, Testnet, Canarynet or any other instances of Flow.

Getting started

Before using the dev wallet, you'll need to start the Flow emulator.

Install the flow-cli

The Flow emulator is bundles with the Flow CLI. Instructions for installing the CLI can be found here: https://docs.onflow.org/flow-cli/install/

Create a flow.json file

Run this command to create flow.json file (typically in your project's root directory):

flow init

Start the emulator

Start the emulator and deploy the contracts by running the following command from the directory containing flow.json in your project:

flow emulator start
flow project deploy --network emulator

Start the dev wallet

PORT=8701 npm run dev

Note: The following variables should match the emulator-account defined in your project's flow.json file. For details about flow.json visit the flow-cli configuration reference.

Configuring your JavaScript application

The FCL dev wallet is designed to be used with @onflow/fcl version 1.0.0 or higher. The FCL package can be installed with: npm install @onflow/fcl or yarn add @onflow/fcl.

To use the dev wallet, configure FCL to point to the address of a locally running Flow emulator and the dev wallet endpoint.

import * as fcl from "@onflow/fcl"

fcl
  .config()
  // Point App at Emulator REST API
  .put("accessNode.api", "http://localhost:8888")
  // Point FCL at dev-wallet (default port)
  .put("discovery.wallet", "http://localhost:8701/fcl/authn")

Test harness

It's easy to use this FCL harness app as a barebones app to interact with the dev-wallet during development:

Navigate to http://localhost:8701/harness

🚀

Contributing

Releasing a new version of Dev Wallet is as simple as tagging and creating a release, a Github Action will then build a bundle of the Dev Wallet that can be used in other tools (such as CLI). If the update of the Dev Wallet is required in the CLI, a seperate update PR on the CLI should be created.