Coder Social home page Coder Social logo

counterwallet's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

counterwallet's Issues

Add backend stats API

Add an API listener (listens on localhost by default, on a different port) that supplies a stats-type API.

Initially I'm thinking that we will have a single API call here, that returns a dict containing a count of the number of invocations to each API call since system startup, and since all time.

To do this, gather API usage stats and peroidically write them to a new table in mongo (do it intelligently, in that we write to a local data structure, and push the counter updates to mongo every few minutes in a single query). then add a stats API (on separate port) for requesting these stats.

Also, make a new relic agent that reports them up to newrelic possibly even (use the code at https://github.com/MeetMe/newrelic-plugin-agent for inspiration)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

'could not contact counterpartyd` when picking order assets

failoverAPI: Call failed (failed over across all servers). Method: get_asset_info; Last error: JSON-RPC Error...'could not contact counterpartyd

when I switch the 'Buy
asset' on the Buy & Sell page (to, say, XCP) when some text has already
been entered in the Other Asset box.

FireFox: CreateNewWallet

Environment
Firefox : 27

Steps to reproduce

  1. Navigate to:
    https://testnet.counterwallet.co/#
    in Firefox
  2. Click on "Create Wallet" button
  3. Nothing happens.

This works fine in chrome. Issue only occurs in firefox. I tested issue on two different machiens, just to make sure there is no popup blocker

Add support for Trezor-based addresses [$15]

Once Trezor is available, add the ability to import an address stored on a Trezor hardware wallet.

Can use this library: https://github.com/trezor/trezor.js
Do signing with this: https://github.com/trezor/webwallet/blob/c12d1d6b32022b25aad64912927a62af394616bc/app/scripts/services/TrezorAccount.js#L137
(their lib takes in a bitcoinjslib tx object, but we could modify it for bitcore)

also, I think we need to add a daemon to run trezord server side (will need to enhance build system, much like we do for the armory daemon)

This will give people the ability to have very secure storage addresses, backed by a hardware wallet device (i.e. the privkey will be stored on the trezor and not generated from the entered seed/password on login).

--- Did you help close this issue? Go claim the **[$15 bounty](https://www.bountysource.com/issues/4062817-add-support-for-trezor-based-addresses?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github)** on [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github).

FireFox: CreateNewWallet

Please, delete if duplicate.

Firefox : 27

  1. Navigate to:
    https://testnet.counterwallet.co/#
    in Firefox
  2. Click on "Create Wallet" button
  3. Nothing happens.

This works fine in chrome. Issue only occurs in firefox. I tested issue on two different machines, just to make sure there is no popup blocker


Console output
GET https://themes.googleusercontent.com/static/fonts/opensans/v8/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff [HTTP/1.1 304 Not Modified 27ms]
GET https://testnet.counterwallet.co/fonts/fontawesome-webfont.woff [HTTP/1.1 304 Not Modified 93ms]
Use of getPreventDefault() is deprecated. Use defaultPrevented instead. jquery.min.js:5
SyntaxError: missing ) after condition knockout.js:2745
ReferenceError: ko is not defined knockout-bootstrap.js:24
TypeError: ko is undefined knockout.x-editable.js:10
ReferenceError: ko is not defined knockout.validation.js:43
ReferenceError: ko is not defined counterwallet.js:195
"MultiAPI Backends: ["https://cw01.counterwallet.co"]" counterwallet.js:24
ReferenceError: ko is not defined util.knockout.js:2
ReferenceError: ko is not defined logon.js:270
ReferenceError: ko is not defined logon.js:6
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 98ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 95ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 100ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 92ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 91ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 97ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 161ms]
POST https://api.rollbar.com/api/1/item/ [HTTP/1.1 200 OK 165ms]

precision issues in counterwallet/counterwalletd

Both counterwallet and counterwalletd convert from Decimal to float in several areas, between operations (and for storage). This is Not Good as precision is lost.

counterwalletd, specifically, does math in decimal, and then converts to float for storage in mongodb (as native Decimal storage is not supported, see https://jira.mongodb.org/browse/SERVER-1393). Instead, it should convert to string, and save, and then deserialize back into a Decimal on load. Another alternative is multiplying by 100M and serializing as an integer (pros of this is that is allows rapid sorting by the value in a DB query/filter).

This change will affect a lot, as even "normalization"/"denormalization" both in counterwallet and counterwalletd end up returning a float, after doing fixed point math and quantization.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/4062813-precision-issues-in-counterwallet-counterwalletd?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github).

Dividend enhancements

From rotalumis:

Add option to specify total amount to distribute, instead of dividend per share.

While the dividend payment is waiting to be processed, there is no indication (cloud upload arrow) that there is a pending subtraction of funds from the relevant asset.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

more accurate feedback on non-comitted user actions?

From rotalumis:

the wallet should take into account pending sends when calculating how much funds an address will have after when you're making another send. This is also very important for input data validation purposes.

Here, I managed to place three send orders for 500 DENARIUS each out of an address that only has 800. http://i.imgur.com/aDDI6YG.jpg

In the end, I didn't manage to create new tokens, hehe, but it still shows another send pending: http://i.imgur.com/IxkoxHa.jpg In any case, it's a confusing situation.

when one or more sends are pending, showing the expected final balance on the address in brackets (maybe with a note that explains that) would be helpful.

Jah: let's discuss this some. it's not 100% straightforward as actions can take effect "out of order" (or not at all), depending on when/how the miners package the confirmed txns in the blocks. counterparty processes txns in the order they are in the blocks, which may not match the order the user actually performed them in. So showing a pending balance change from a display perspective is one thing, that's fine, but we don't want to "lie" to the user by saying something is done when it isn't, and there is no security issue here counterpartyd will invalidate any "double sends" of counterparty assets. I'm interested on hearing your thought on this item, as to how it may be more user friendly, without becoming to complex or burdensome.

Weird prices on mainnet orderbook

Look at the BTC/XCP View Prices page and sort by price. The following orders are showing up with a strange price. The first looks expired on blockscan and the other two seem to have zero BTC.

.mp3 files not pathed right/not in build

A number of these in the logs:

2014/04/09 02:37:04 [error] 1605#0: *2481 open() "/home/xcp/counterwallet/build/sound/messagebox.mp3" failed (2: No such file or directory), client: 76.18.186.54, server: _, request: "GET /sound/messagebox.mp3 HTTP/1.1", host: "counterwallet.co", referrer: "https://counterwallet.co/"

implement grunt-based build system

the build system should build/minify/uglify etc everything into a build dir, then purge the CDN (if enabled). also write out all files checksums and log that

the start of the build system code already exists in the counterwallet repo

going to try for this for counterwallet 1.0 mainnet, but it may need to be pushed a bit

buy/sell unit price calculations are not 100% precise

the way unit price overriding in buysell.js is handled today needs to be refactored (i.e. it is done as a bolt-on, which modifies the customsellamount instead of affecting unit price directly, to avoid excess complexity and b/c it was added after customsellamount was in). Essentially, the reactive workflow in this file needs to be rethought to some extent.

The consequence of this is that precision is lost in some cases, at least around the calculated unit price vs. the entered one.

example to reproduce: start a trade to buy 1 BTC for XCP and then enter 12345678 digit by digit and watch as the unit price changes. After the first couple it gets increasingly out of whack. (Not sure why you need to calculate the unit price in this case.)
Here's a screenshot of half way through the above process: http://i.imgur.com/GRSbTec.jpg

support watch-only addresses

Add ability to add a "watch only" address. Can see balance changes, but not perform actions with the address.

BTC dex issues

these fixes apply to orders where one of the assets in the pair is BTC:

  • on buysell page, clicking an open order in the list gives a javascript exception: Uncaught TypeError: Cannot call method 'toFloat' of undefined.
  • on the buysell page: the Open orders list seems to be filtered (not all results are listing)...compared to what lists on the View Prices page (e.g. say you want to Buy XCP and sell BTC, and the list you get is not complete)
  • on the buysell page, make clicking on an order autoset the fee to match as appropriate (right now it matches everything BUT the fee)....the fee matching may be done on a percentage basis, maybe?? (i.e. calculate the % fee that the clicked order is providing or requiring, and set the fee required/provided in the interface to be that same %)
  • Turn off automatic BTCpays which are for less than the current
    (multisig) dust amount.

Add an Orders page

Will allow picking 2 assets (as well as optionally a min BTC fee), and will show the price chart, order book, your open orders, and trade history. This is similar to what the Buy/Sell interface does today, but is good if you just want to view a price history, and not buy or sell something (whereas today you have to "pretend" you want to buy or sell something just to view a dex price history for an asset pair).

minified build is broken on firefox

TypeError: r is not a function

...&&(h=k.aoColumns[b].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+...

(not much info to go off of)... this is off of the newest build, when going to the logon page in Firefox (and probably other browsers as well). loads fine on chrome, and works fine in firefox if going to the source version at /src (using the newest nginx config I posted to counterpartyd_build)

Chat bug with new username

With a new wallet, I click on Show Chat. I choose a
username A, and a get the pop-up shown in screenshot.1.jpg. Then I
type in a new username (B), and it goes through, but I see an empty
chatroom with the username set to A (screenshot.2.jpg).

This is on Firefox, and it happens every time a create a new wallet.

implement persistent caching system

implement redis-based caching of returned API results that is intelligent (ie. caches and keeps hot in the cache as long as the underlying data doesn't change. underlying data is tracked based on an identifier that identifies it as well as it's dependencies (i.e. an order match would depend on the state of two orders). when that underlying data, or any dependency changes, the cached result for anything that "depends" or is comprised of it is invalidated).

going to try for this for counterwallet 1.0 mainnet, but it may need to be pushed a bit

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

site layout has issues on mobile

when logged into the site from a mobile or tablet, the side bar has display issues (at least under chrome). this is most likely due to css customizations to smartadmin that were made to counterwallet (see overrides.css).

Also, the reactive design elements need some work and testing. For instance, verifying the appropriate use of the bootstrap grid classes (i.e. the use of 'col-md-x' vs 'col-lg-x' (etc)), testing and tuning responsive design on grid displays, and so on.

The end goal is a solid experience on table and mobile devices to the maximum extent possible, given the screen real estate constraints and processing limitations.

Blank View Prices on Firefox (not Chrome)

This is the JS error:
Error: Syntax error, unrecognized expression: #wid-id-openOrders-asset[object Object] ...[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHI...

sweep fails silently if Private key entered is base56 format

if you click Import Funds, and then input a valid PK that is in base56 format (instead of bitcoin-qt raw format), the operation fails silently (i.e. the assets box doesn't appear, and the sweep button doesn't work).

With this, add a validator to the PK field in this dialog to detect base56 format and tell the user to enter it in the other format instead

Fee filters only apply to order book?

The filters for 'Min BTC % Fee Provided' and 'Max BTC % Fee Required', only apply to the first table 'Order Book', but not for the following two tables of 'Open Orders'.

remove priming from interface

it's no longer necessary because we can chain unspent transactions (we looked into this, the reliability isn't 100%, but it's "good enough", given that worst case if the transaction won't go through)... priming is pretty wide spread in the interface:

  • the priming panel itself (and the display for it on each address bar can go away)
  • the auto priming logic can be removed
  • maybe some other hidden places

then it will need to be tested (e.g. have an address with only 1 available output, then do a bunch of transactions in a single block and see if they all successfully go through)

Add WatchOnly addresses

Enhancement Request:
Add the ability to add public keys to the wallet and view/monitor balances.
A bonus would be to be notified if the balance changes.

implement selenium-based automated test suite

Automated selenium-based test suite that uses:

At a minimum, we want to test the site on newerish versions of firefox, chrome, IE (9+), on desktop and mobile platforms.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1495021-implement-selenium-based-automated-test-suite?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F542579&utm_medium=issues&utm_source=github).

make modal windows draggable, if possible

so that when a modal dialog pops up, the user can drag it around the screen.... and also improving modal dialogs to potentially avoid the "dog-piling situation" where multiple dialogs are created and layered one on top of another (something to at least discuss)

Draggable bootstrap dialogs (this is possible as we have jquery UI included as well already):
http://stackoverflow.com/questions/15881245/draggable-js-bootstrap-modal-performance-issues
http://stackoverflow.com/questions/12591597/twitter-bootstrap-modal-form-how-to-drag-and-drop

will also have to see how this works on mobile (i.e. it doesn't break the modal windows...it's fine if people can't drag the dialogs on mobile)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Add internationalization support

via: http://rest-samples.ahus1.de/client/rec_i18next.html
(will add requireJS and i18next as dependencies)

Already done: Allow language selection in wallet options and save the selected language into the wallet's PREFERENCES

data strings should use i18next's sprintf-type support (and actually, all of that clumsy "You have " + amount + " coins remaining" type logic should go away 100% and be replaced with sprintf-type statements, for improved clarify and to allow for this internationalization):

  • basic sprintf example here: http://i18next.com/pages/sample.html
  • possibly simpler usage: i18next/i18next-node#84
  • Note that these use straight up sprintf...we will need to merge this kind of functionality in with the knockout example code given in the first link in this ticket and come up with something slick

Other things:

entry of amounts with commas not allowed on forms

For example, on the sending form, I have to type "10000", instead of "10,000". Not that big of a deal, but it would be nice to allow commas to be entered. The validation logic would simply need to ignore them as part of numbers validation/production

Qrcode error

Uncaught ReferenceError: qrcode is not defined

Add Click-To-Match Functionality to Open Orders list

The open orders list is a great start when you're looking at an asset. A further refinement that would be great would let people match orders by clicking it in the list. This should populate the price/amount info of the users order-to-be-created automagically.

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.