Coder Social home page Coder Social logo

floating / frame Goto Github PK

View Code? Open in Web Editor NEW
1.0K 26.0 138.0 189.4 MB

System-wide Web3 for macOS, Windows and Linux

Home Page: https://frame.sh

License: GNU General Public License v3.0

JavaScript 58.15% HTML 0.34% Stylus 14.74% TypeScript 26.73% Shell 0.04%
ethereum dapp web3 provider ledger trezor

frame's Introduction


Frame

F R A M E

System-wide Web3 for macOS, Windows and Linux 🎉



Frame is a web3 platform that creates a secure system-wide interface to your chains and accounts. Now any browser, command-line, or native application has the ability to access web3.

Features

  • First-class Hardware Signer Support
    • Use your GridPlus, Ledger and Trezor accounts with any dapp!
  • Extensive Software Signer Support
    • Use a mnemonic phrase, keystore.json or standalone private keys to create and backup accounts!
  • Permissions
    • You'll always have full control of which dapps have permission to access Frame and can monitor with full transparency what requests are being made to the network.
  • Omnichain Routing
    • With Frame's Omnichain routing dapps can seamlessly use multiple chains at the same time, enabling truly multichain experiences.
  • Transaction Decoding
    • By utilizing verified contract ABIs, transaction calldata can be decoded into concise and informative summaries, allowing you to sign transactions with confidence.
  • Set your own connections to Ethereum and IPFS
    • Never be locked into using a centralized gateway
  • Menu Bar Support
    • Frame stays out of the way and sits quietly in your menu bar until needed
  • Cross Platform
    • MacOS, Windows and Linux!

Talks

Installation

Downloads

Arch Linux

If you use an arch-based distro, you can use an AUR Helper like yay to install Frame by running yay -S frame-eth or for the development version: yay -S frame-eth-dev.

Run Source

On Ubuntu: Run sudo apt-get install build-essential libudev-dev.

# Clone
› git clone https://github.com/floating/frame

# Use node v18
› nvm install 18.12.1
› nvm use 18.12.1


# Install
› npm run setup

# Run
› npm run prod

Build

› npm run bundle # Create bundle
› npm run build # Build Frame for current platform

Usage

Connect to Frame natively

Frame exposes system-wide JSON-RPC endpoints ws://127.0.0.1:1248 and http://127.0.0.1:1248 that you can connect to from any app. We recommend using eth-provider to create a connection const provider = ethProvider('frame') as eth-provider will handle any connection edge cases across browsers and environments

Frame's injected provider

Frame also has a browser extension for injecting a Frame-connected EIP-1193 provider into web apps as window.ethereum. This can be used to inject a connection when an app does not provide the option to connect to Frame natively.

Related


WebsiteBlogTwitterChat

frame's People

Contributors

adamstallard avatar alex-miller-0 avatar alphinux avatar androolloyd avatar cantobanano avatar dependabot[bot] avatar douglance avatar floating avatar goosewobbler avatar gzeoneth avatar jamchello avatar john-light avatar jyap808 avatar ligi avatar makemake-kbo avatar mathieu-be avatar mholtzman avatar monkybrain avatar rabmarut avatar schmidsi avatar stoooops avatar tcoulter avatar to19 avatar topocount avatar zeroekkusu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

frame's Issues

Support Safari on macOS

I use Safari as my main browser for privacy and other reasons. Would be useful if I didn't have to switch browser to use frame.

Electron not responding

I just wanted to try the latest version of frame - but got this error:

electron_103

⋊> ~/g/3/frame on master ◦ npm run alpha                                                     14:32:03

> [email protected] alpha /home/ligi/git/3rd/frame
> npm run bundle && npm run launch


> [email protected] bundle /home/ligi/git/3rd/frame
> parcel build app/tray.html --public-url '.' --out-dir bundle --target electron

✨  Built in 427ms.

bundle/OpenSans-Bold.b990888e.ttf        219.19 KB     73ms
bundle/OpenSans-Light.2578cc0b.ttf       217.03 KB     73ms
bundle/FiraCode-Retina.a435fe44.ttf         216 KB     72ms
bundle/OpenSans-SemiBold.3b08feff.ttf    215.98 KB     73ms
bundle/OpenSans-Regular.d6b7c5f4.ttf     212.18 KB     73ms
bundle/app.9b5fc577.map                  134.54 KB     72ms
bundle/app.9b5fc577.js                    71.07 KB    125ms
bundle/app.f184f43e.css                   45.64 KB     47ms
bundle/app.f184f43e.js                      1.5 KB     50ms
bundle/tray.html                             255 B     38ms
bundle/app.f184f43e.map                      106 B      6ms

> [email protected] launch /home/ligi/git/3rd/frame
> cross-env NODE_ENV=production electron ./main

Chrome: v61.0.3163.100
Electron: v2.0.5
Node: v8.9.3
Trezor Error: { FetchError: request to https://localback.net:21324 failed, reason: connect ECONNREFUSED 127.0.0.1:21324
    at ClientRequest.<anonymous> (/home/ligi/git/3rd/frame/node_modules/node-fetch/index.js:133:11)
    at emitOne (events.js:116:13)
    at ClientRequest.emit (events.js:211:7)
    at TLSSocket.socketErrorListener (_http_client.js:387:9)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'FetchError',
  message: 'request to https://localback.net:21324 failed, reason: connect ECONNREFUSED 127.0.0.1:21324',
  type: 'system',
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED' }

Transaction withdrawal using Aragon Finance app shows signing error

I'm not sure if this is an Aragon issue or a Frame issue, but I'm creating the issue here because it only happens when I use the Frame 0.2-rc. When I sign my transaction, this error shows:

Your transaction wasn't signed and no tokens were sent. Error: “Transaction parameter 'name' is not a valid hex string”

Warn users when opening an external link

On the recent transactions section, for example, there is a "view details" button that will automatically open a link to an Etherscan web page. There is no indication that this opens a web page to a third party service.

Proposed solution
Show a pop-up window that says something like:

"This will open a link to an external web page: https://etherscan.com/....... Continue / Cancel"

With the option to copy the link by clicking a little "copy" icon next to it (in case the user prefers to open the link in a non-default browser, or cut out the txid but discard the rest of the link).

ETH sent via Rinkeby network now lost/locked?

I transferred 50 ETH to an account linked to the Rinkeby network on Frame. It shows up on Etherscan 0x9fdbaC601798C2bbe7896B1f56eCCEE131aa84E5 but as I went via rinkeby instead of mainnet, it does not show up in my Ledger Nano S or on in the Frame interface.

I did verify the number in my Ledger Nano S before sending but did not understand the issue with networks.

Is it possible to add the above account to the mainnet, if that will fix it.

screen shot 2019-03-07 at 10 08 53 pm

screen shot 2019-03-07 at 6 38 13 pm

Show more than three pages worth of accounts

On the accounts drop down, it appears that I can only scroll to page three, even though the accounts beyond that page are known to hold funds. I would like to be able to access these additional accounts using Frame.

no dock on nix/win

FYI, the following line is breaking testing on non-Mac machines

process.env.TRAY_ONLY ? app.dock.hide() : windows.create()

Was able to get it running on Mac though!

Support eth_signTransaction

When I try to sign a transaction, I get the following error:

Error: Returned error: Method eth_signTransaction not supported.

I assume that this error comes from ganache: The eth_signTransaction method gets forwarded to the underlying node because it is not marked as protectedMethods.

We use this kind of special setup where we separated the signTransaction from the actual send transaction to have more control over the different configurations (especially our in-memory signing).

eth_sign not implemented

It appears that eth_sign is not implemented forcing users to use personal_sign. Is there any particular reason for this? personal_sign doesn't actually have a JSON-RPC definition or a relevant EIP.

if (payload.method === 'eth_sign') return this.resError('No eth_sign, please use personal_sign', payload, res)

Found here

Other Web3 wallets actually do this incorrectly. Continuing to support these functions for some need of backwards compatible dApps also hurts the ecosystem, old dApps aren't broken (few), new dApps (many) must create work arounds when being spec compliant. See MetaMask/metamask-extension#2215

We created EIP712 to help get around this and show the user what they are signing, so I'm happy #136 exists.

Show password requirements

When I enter a seed, it asks for a password. I entered a password, it says too short. I entered another, it says too weak. Some guidance on the password requirements would be great!

For example:

Please enter a password that has at least one capital letter and one symbol

Alternatively: I actually wouldn't mind if the password requirements were removed altogether. The way I think of this is, if an attacker gets to the point where they are exfiltrating data or entering characters into a user's computer, the user is quite pwned already and it doesn't really matter how strong their password is...

Error running from source on linux

When I run from the master branch I get the following error

Error: Error: ENOENT, dev-app-update.yml not found in /home/jeremy/frame/node_modules/electron/dist/resources/default_app.asar
    at notFoundError (ELECTRON_ASAR.js:108:19)
    at fs.readFile (ELECTRON_ASAR.js:511:16)
    at go$readFile (/home/jeremy/frame/node_modules/graceful-fs/graceful-fs.js:85:14)
    at readFile (/home/jeremy/frame/node_modules/graceful-fs/graceful-fs.js:82:12)
    at readFile (/home/jeremy/frame/node_modules/universalify/index.js:5:67)
From previous event:
    at /home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:427:27
    at Generator.next (<anonymous>)
From previous event:
    at AppImageUpdater.loadUpdateConfig (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:423:33)
    at Lazy.AppUpdater.configOnDisk (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:138:43)
    at Lazy.get value [as value] (/home/jeremy/frame/node_modules/lazy-val/src/main.ts:18:23)
    at /home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:339:46
    at Generator.next (<anonymous>)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
From previous event:
    at AppImageUpdater.getUpdateInfo (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:335:32)
    at /home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:349:35
    at Generator.next (<anonymous>)
From previous event:
    at AppImageUpdater.doCheckForUpdates (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:348:34)
    at /home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:287:25
    at Generator.next (<anonymous>)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
From previous event:
    at AppImageUpdater._checkForUpdates (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:282:33)
    at AppImageUpdater.checkForUpdates (/home/jeremy/frame/node_modules/electron-updater/src/AppUpdater.ts:221:35)
    at Timeout.setTimeout (/home/jeremy/frame/main/index.js:113:17)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)

I do not get this error when running from an appimage. I have tried installing the dependencies for electron, but still get the same error. Are the downloads using an older commit?

npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`

just wanted to try the latest version of frame in dev mode to be able to add a hot key. Unfortunately npm install fails:

npm WARN optional Skipping failed optional dependency /sane/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN [email protected] requires a peer of acorn@^6.0.0 but none was installed.
npm ERR! Linux 4.15.0-45-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the usb package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs usb
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls usb
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ligi/git/3rd/frame/npm-debug.log

the deb from the website works fine - just when trying from source i get this error. But this was working before - had frame running in dev mode - unfortunately not sure when it broke.

Secondary network defaults to Infura after restarting

I set my secondary network to a custom node endpoint, but after closing and restarting Frame, it is defaulting to Infura instead. I do not ever want to use Infura and want Frame to use my specified custom node by default instead. Related but possibly deserving of its own issue, if Infura is accidentally selected I do not want Frame to ping Infura unless I explicitly "save" the setting to select Infura as my network provider.

Version: 0.1.0
OS: Linux Mint 18.3

Garbeled layout when in dev mode

In release mode things look nice - but when in dev mode I end up with layouts like this:

image

I think the problem is the developer tools that pop up in the beginning.

[Feature Request] Provide chain data without a connected signer

It doesn't make sense to keep a hardware key plugged in all the time. Frame should remember the address of previously seen signers, and continue to provide chain data without needing a hardware wallet plugged in all the time. This way, dapps would always work, and you'd only need the signer when a transaction needs to be signed!

Multiple address support for Ledger wallets

Would be really great to support multiple addresses (and derivation paths) for Ledgers. In MetaMask, you can switch out Ledger addresses one by one and it is infuriating. At the very least, we should be able to access other Ledger accounts in Frame.

Integration with Clef

I'm working on creating a standalone signer: https://github.com/holiman/go-ethereum/blob/signer_mhs/cmd/signer/README.md . This is one step in the work to remove account management from geth, and instead have a separate signer with it's own UI. The user can choose an external UI (e.g proof of concept UI https://github.com/holiman/qtsigner ).

The main idea is that you can then run the signer on a separate vm (e.g in qubes), or on a separate machine (e.g. usbarmory, a phone or a different computer on the same network).

I found this project, which looks interesting, and was wondering if it maybe can be used as an electron-based frontend for the signer?

The signer binary exposes an external api at two places (via IPC or HTTP), where dapps can make signing requests to.

The signer also communicates over stdin/stdout with the process that started it, presumably a user interface. You can contact me at [email protected] or via @holiman at gitter.

Error on build

Love where this is going! I got this error when following the download instructions:

✖ Rebuild Failed

An unhandled error occurred inside electron-rebuild
  CXX(target) Release/obj.target/secp256k1/src/addon.o
  CXX(target) Release/obj.target/secp256k1/src/privatekey.o
In file included from ../src/privatekey.cc:2:
In file included from ../../nan/nan.h:50:

Update prompt shows up after each restart

When I start Frame a blue box pops up asking if I want to update. I tell it "no". I close Frame a restart. The box is back. Perhaps the options could be changed to:

  • Yes
  • Not now, remind later
  • No, do not ask again

or something like that? I know it's good practice to stay up to date but sometimes there's a reason for staying on a lower version and having to click the popup on each restart is a bit annoying.

Derivation Paths different than Mycrypto and Metamask (Ledger)

The addresses produced by the derivation paths are different than the ones created with Mycrypto (m/44'/60'/0'/0 or m/44'/60'/0') and Metamask (m/44'/60'/0'/0?). At least I was expecting the first address to be the same. Tried with both rinkeby and mainnet.

Ledger is on 1.5.5, frame is one 0.1.0 from the website.

eth_sign does not work with checksummed addresses

When I run:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0xe4844A7E46049106De7408d9AF2A13bd2DD92E53", "0xdeadbeaf"],"id":1}' --url http://127.0.0.1:1248

I receive the following error:
Screenshot 2019-08-15 at 14 39 34

But it works with:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0xe4844a7e46049106de7408d9af2a13bd2dd92e53", "0xdeadbeaf"],"id":1}' --url http://127.0.0.1:1248

problem running npm run demo on linux

the project sounds super interesting - unfortunately I am getting the following error after runnint npm run demo on linux:

npm WARN [email protected] requires a peer of webpack@^4.0.0 but none was installed.
npm WARN [email protected] No repository field.
npm WARN [email protected] No license field.
/home/ligi/git/3rd/frame/node_modules/electron-rebuild/lib/src/rebuild.js:81
                depKeys.push(...Object.keys(rootPackageJson.dependencies || {}));
                             ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/ligi/git/3rd/frame/node_modules/electron-rebuild/lib/src/cli.js:17:19)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)

npm ERR! Linux 4.10.0-42-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "demo"
npm ERR! node v4.7.2
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! [email protected] demo: `npm install && electron-rebuild && npm run dev`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] demo script 'npm install && electron-rebuild && npm run dev'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the Frame package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm install && electron-rebuild && npm run dev
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs Frame
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls Frame
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ligi/git/3rd/frame/npm-debug.log

unfortunately the file "/home/ligi/git/3rd/frame/npm-debug.log" does not exist

xdai support

I believe this may already be possible using a custom endpoint, but it would be useful to have specific support so that the native asset/currency is correctly labeled as dai rather than eth.

Fix tests

I checked out branch 0.2 and ran:

npm install
npm test

First of all, linting failed which I fixed in #182. But the tests also fail (see log pasted further down). I'm not sure if it is directly connected to the NODE_MODULE_VERSION mismatch. We should probably add some code quality measurements:

  • Pre-commit or pre-push hooks that run lint & tests locally
  • Some CI-service that runs tests on every pull-request
$ npm test

> [email protected] test /Users/schmidsi/Development/frame
> standard && jest

 FAIL  test/index.test.js
  ● Test suite failed to run

    The module '/Users/schmidsi/Development/frame/node_modules/scrypt/build/Release/scrypt.node'
    was compiled against a different Node.js version using
    NODE_MODULE_VERSION 69. This version of Node.js requires
    NODE_MODULE_VERSION 64. Please try re-compiling or re-installing
    the module (for instance, using `npm rebuild` or `npm install`).

      at Runtime._loadModule (node_modules/jest-runtime/build/index.js:572:29)
      at Object.<anonymous> (node_modules/scrypt/index.js:3:20)

 FAIL  test/clients/ipfs.test.js
  ● Test suite failed to run

    Cannot find module '../../main/services/ipfs' from 'ipfs.test.js'

      12 | 
      13 | // Frame
    > 14 | const ipfs = require('../../main/services/ipfs')
         |              ^
      15 | const store = require('../../main/store')
      16 | 
      17 | // Local

      at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:230:17)
      at Object.require (test/clients/ipfs.test.js:14:14)

 FAIL  test/clients/geth.test.js
  ● Test suite failed to run

    Cannot find module '../../main/services/geth' from 'geth.test.js'

      12 | 
      13 | // Frame
    > 14 | const geth = require('../../main/services/geth')
         |              ^
      15 | const store = require('../../main/store')
      16 | 
      17 | // Local

      at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:230:17)
      at Object.require (test/clients/geth.test.js:14:14)

 FAIL  test/signers/ring.test.js (14.937s)
  ● Console

    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:07.347 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:07.374 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.114 › Private key added to signer undefined
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.116 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.117 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.128 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.129 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.129 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.130 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.997 › Private key added to signer undefined
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.998 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:08.999 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.156 › Private key added to signer 6339353736343339326631303361303437393639653130663561373235663730
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.157 › Signer erased from disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.158 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.159 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.175 › Private key removed from signer 3338343638326533323639663134643135613136613964323363396331386235
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.175 › Signer erased from disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.176 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.176 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.187 › Private key removed from signer 3932336434623166316337316130396537646464643436396531363938663261
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.187 › Signer erased from disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.188 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.189 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.603 › Private key added to signer undefined
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.605 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.605 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.614 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.615 › Signer unlocked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:09.697 › Hot signer verify address matched
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:14.695 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:14.696 › Signer locked
    console.warn node_modules/electron-log/lib/transports/console.js:72
      17:35:14.696 › Unable to verify address, signer locked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:19.673 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:19.673 › Signer locked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:19.786 › Signer closed

  ● Ring signer › Verify address

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: 

      153 |   })
      154 | 
    > 155 |   test('Verify address', (done) => {
          |   ^
      156 |     signer.verifyAddress(0, signer.addresses[0], (err, result) => {
      157 |       expect(err).toBe(null)
      158 |       expect(result).toBe(true)

      at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Suite.test (test/signers/ring.test.js:155:3)
      at Object.describe (test/signers/ring.test.js:17:1)

  ● Ring signer › Verify wrong address

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: 

      161 |   })
      162 | 
    > 163 |   test('Verify wrong address', (done) => {
          |   ^
      164 |     signer.verifyAddress(0, '0xabcdef', (err, result) => {
      165 |       expect(err).toBe(null)
      166 |       expect(result).toBe(false)

      at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Suite.test (test/signers/ring.test.js:163:3)
      at Object.describe (test/signers/ring.test.js:17:1)

 FAIL  test/signers/seed.test.js (36.415s)
  ● Console

    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:07.523 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:30.888 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:30.889 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:30.897 › Signer saved to disk
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:30.898 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:30.899 › Signer closed
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:31.108 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:31.109 › Signer unlocked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:31.256 › Hot signer verify address matched
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:36.257 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:36.257 › Signer locked
    console.warn node_modules/electron-log/lib/transports/console.js:72
      17:35:36.258 › Unable to verify address, signer locked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:41.224 › Signer updated
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:41.224 › Signer locked
    console.info node_modules/electron-log/lib/transports/console.js:72
      17:35:41.267 › Signer closed

  ● Seed signer › Verify address

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: 

      84 |   })
      85 | 
    > 86 |   test('Verify address', (done) => {
         |   ^
      87 |     signer.verifyAddress(0, signer.addresses[0], (err, result) => {
      88 |       expect(err).toBe(null)
      89 |       expect(result).toBe(true)

      at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Suite.test (test/signers/seed.test.js:86:3)
      at Object.describe (test/signers/seed.test.js:11:1)

  ● Seed signer › Verify wrong address

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: 

      92 |   })
      93 | 
    > 94 |   test('Verify wrong address', (done) => {
         |   ^
      95 |     signer.verifyAddress(0, '0xabcdef', (err, result) => {
      96 |       expect(err).toBe(null)
      97 |       expect(result).toBe(false)

      at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Suite.test (test/signers/seed.test.js:94:3)
      at Object.describe (test/signers/seed.test.js:11:1)

Test Suites: 5 failed, 5 total
Tests:       4 failed, 27 passed, 31 total
Snapshots:   0 total
Time:        38.983s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

Provide solution for 'Ledger Contract Data = No' error

If the Ledger setting Contract Data is set to its default value No, you can't sign smart contract transactions (i.e. not use the device with dApps). At the moment, all the user sees is the error "Ledger Contract Data = No". It would be great if Frame provided the solution, perhaps a modal saying something like "Please go to Settings -> Contract Data and set the value to YES to allow signing of contract data". That would improve the UX a lot!

Hidden window captures clicks

OS: Linux (arch)
WM: i3

When I hide the Frame window, it looks like it goes away, but I can't click anything underneath where the window was.
For example, with a browser open, the right side of the browser does not receive clicks until I exit Frame, but the left side of the browser works fine.

Not experienced with electron, but may be related to this, and fixable by using this, or making the window's alwaysOnTop parameter false instead of true as it is now.

Cannot read property 'hide' of undefined

I just updated to ubuntu 18.04 (also in the hope that the node version there is sufficient for running frame - context #3 ) - good news I seem to come a step further here - but I get the following error when running npm demo run

selection_002

Error when executing transaction using aragon provider

19:23:40.930 › addRequest { handlerId: '0b5eddc8-f689-484d-941d-9c6562504659',
  type: 'transaction',
  data:
   { gas: '0xad33',
     to: '0x089379Eb19916742Cbb474752c2704bF16bEc54F',
     data:
      '0xf14fcbc8e3ce08c8c5a2a5b7556a7ea9142f404da24e368f3c7294619fd0154ffe78ca60',
     from: '0x2c78b4204643b38a6484d2503a31014a9adeab87',
     gasPrice: '0x3b9aca00',
     chainId: '0x4' },
  payload:
   { jsonrpc: '2.0',
     id: 12898,
     method: 'eth_sendTransaction',
     params: [ [Object] ] },
  account: '0x2c78b4204643b38a6484d2503a31014a9adeab87' }
19:23:40.931 › Error: No ABI specified in artifact for 0x2c78b4204643b38a6484d2503a31014a9adeab87
    at createDirectTransaction (/home/jeremy/frame/node_modules/@aragon/wrapper/dist/utils/transactions.js:10:326)
    at Aragon.calculateTransactionPath (/home/jeremy/frame/node_modules/@aragon/wrapper/dist/index.js:461:335)
    at process._tickCallback (internal/process/next_tick.js:68:7)

This happened on the most recent build of the 0.2 branch when using the ens manager. The agent at 0x2c78b4204643b38a6484d2503a31014a9adeab87 is using the 4.0.0 version of the agent, and the dao is on the 0.7 build.

Support Flatpak/Snap for Linux

Flatpak seems to be the new standard for packaging Linux apps across distributions, with Snap competing for that too. It'd be great to have Frame packaged as a Flatpak or Snap app so we can install it no matter which distro we use.

Frame crashes when invalid JSON-RPC request is sent

It seems like Frame crashes if an invalid JSON-RPC request is sent. Interestingly, it does not happen with all wierd requests.

Reproduction

Command line

Run Frame and then run the following command in the terminal:

curl -X POST --url http://127.0.0.1:1248 --data '{"jsonrpc":"2.0","method":"asdf","id":1}'

Frame will crash with the following error:

Screenshot 2019-08-13 at 17 27 40

But on the command-line this error is shown, i.e replied from the Frame server before the crash:

{"id":1,"jsonrpc":"2.0","error":{"code":-32601,"message":"The method asdf does not exist/is not available"}}

Interestingly, it does not happen with the following command:

curl -X POST --url http://127.0.0.1:1248 --data '{"jsonrpc":"2.0","method":"asdf"}'

note the missing "id" param in the end

Real-world

Another way to reproduce the error is by going on https://dicether.com/ and trying to register. In order to make this happen, the Frame browser plugin needs to be installed.

Screenshot 2019-08-13 at 17 33 55

Here again it clearly states that the method "eth_signTypedData_v3" does not exists, similar to the command-line reproduction.

Status

I will have a look into this issue by myself working on #183 and #136. But maybe someone has some inputs to this or the urgency is higher to release a patch on 0.1.2.

brave browser extention

frame is not opening withing brave browser. I activated it maually and gabe all permissions but still it doesn't work

Cache last used account

At the moment if you change the account you are using to another derivation, then restart Frame, it goes back to the first derived account from the seed. It would be a great UX improvement if Frame remembered the account you were using when it was closed and automatically set it as the account when it gets launched again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.