Coder Social home page Coder Social logo

stratiscore's Introduction

Windows Mac OS Linux
Build Status Build Status Build Status

Stratis and Cirrus Core

This is the repository of the Stratis and Cirrus Core wallets. Both wallets are using Electron and Angular at the front-end and .NET Core with C# in the back-end.
Stratis Core is a full node staking wallet for the Stratis network. Cirrus Core is a wallet for the Cirrus sidechain network. Both wallets are using the same codebase.
To download and install the latest release, please have a look here.

Building and running the StratisBitcoinFullNode daemon

The StratisBitcoinFullNode daemon is the backend REST service, hosting a Stratis node upon which Stratis Core depends.
The StratisBitcoinFullNode daemon is hosted in another repository. All information on building and running the daemon can be found here.

Building and running the user interface

Install prerequisites

Download and install the latest version of Git here.
Download and install the latest Long Term Support (LTS) version of NodeJS here.

Getting Started

Clone the repository locally:

git clone https://www.github.com/stratisproject/StratisCore

Navigate to the StratisCore.UI folder in a terminal:

cd ./StratisCore/StratisCore.UI

Install dependencies with npm:

From within the StratisCore.UI directory run:

npm install

Run the UI in development mode

Terminal Window 1

Run the daemon

Terminal Window 2

Each of our supported networks have their own way of starting the user interface.
Use npm run mainnet to start the UI in StratisMain mode.
Use npm run testnet to start the UI in StratisTest mode.
Use npm run sidechain to start the UI in CirrusMain mode.
Use npm run sidechain:testnet to start the UI in CirrusTest mode.
All these commands will compile the Angular code and spawn the Electron process for the desired network.

Build the UI for production

Command Description
npm run build:prod Compiles the application for production. Output files can be found in the dist folder
npm run package:linux Builds the Stratis Core application for linux systems
npm run package:linuxarm Builds the Stratis Core application for linux-arm system (i.e., Raspberry Pi)
npm run package:windows Builds the Stratis Core application for Windows systems
npm run package:mac Builds the Stratis Core application for MacOS systems
npm run package:sidechain:linux Builds the Cirrus Core application for linux systems
npm run package:sidechain:linuxarm Builds the Cirrus Core application for linux-arm systems (i.e., Raspberry Pi)
npm run package:sidechain:windows Builds the Cirrus Core application for windows systems
npm run package:sidechain:mac Builds the Cirrus Core application for MacOS systems

When starting the application it will automatically run the network in Mainnet mode. If you want to start the application for testnet, please add the -testnet argument when starting the application.

The application is optimised. Only the files of /dist folder are included in the executable. Distributable packages can be found in the StratisCore.UI/app-builds/ folder

CI Build


Every time someone pushes to the master branch or create a pull request on it, a build is triggered and a new unstable application release is created.

If you want the ✨ latest ✨ (unstable 💣) version of the Core application, you can get it here:

https://github.com/stratisproject/StratisCore/releases/tag/Continuous-Delivery

stratiscore's People

Contributors

andrasfuchs avatar arcsin2000x avatar bep42 avatar bokobza avatar daegalus avatar dangershony avatar dangould avatar dennisamenace avatar dev0tion avatar fenix2222 avatar fshutdown avatar garethweaver avatar herbepau avatar ianadavies avatar mrtpain avatar neurosploit avatar nicolasdorier avatar nopara73 avatar rjmacarthy avatar rowandh avatar sondreb avatar stratisiain avatar tjadenfroyda 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

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

stratiscore's Issues

Adress book 

We need a way to store a bunch of addresses with notes.
This will be useful if payments are made to the same address or to store sidechains multisig addresses for example.

Search history

Add a way to search through the wallet for a particular transaction or address.

Wallet is loaded but "No wallet could be found" error is shown

Sometimes when I open the wallet, type the password and hit enter I'd get this error. After pressing "ok" I'd go to the main screen and everything is normal.

On this screenshot you can see wallet loaded in the background and an error message on the foreground.

err

Error while sending a transaction

This happened to me when I was sending a tx that combined a lot of inputs.
Let's say we have 8 peers and propagate the tx to them one by one and on 6th peer it disconnects. The wallet will show an error:
err

But the tx was propagated properly.
Because of this error user might get an Idea that tx was not sent which is wrong.

Wallet is not notified if the transaction cannot be fulfilled

When attempting to spend not matured/recently staked coins the transaction is not accepted to the memory pool and the wallet is not notified of this.

As a result the wallet shows that the transaction has been sent and is pending confirmation wheres in fact the transaction was never shared across the network.

Transaction can be sent before the fees are calculated

It became apparent when sending transactions with a wallet with many UTXOs that the Send button is enabled while the fees are being calculated.
This won't matter in majority of the cases as the processing time is sub second.

When creating a transaction which combines many UTXOs (in range of thousands) the sequence of events is as follows:

  • User enters amount
  • User enters address - at this point we start calculating fees
  • User enters password
  • In case the fees are not calculated at this point user will be free to send the transaction which might fail to be accepted to the MemoryPool if the account balance is too low to cover the fees

We should provide a visual clue to the user that the fees are being calculated and disable Send button until the fees are know.

Send transaction showing unconfirmed even when many confirmations

Sent transaction via the wallet UI on mainnet

checked the transaction on chainz and it has 30+ confirmations

Yet it still shows as Yellow in the icon and the "unconfirmed" when clicking through to view detail.

Even re-decrypting the wallet (via View-> Reload) and it still shows as unconfirmed

Make the UI feature-driven

Find a way for enable/disable features as well as choose some design elements according to the node that is running in the background.

Add Send to Sidechain modal

This is the functionality allowing the user to send strats to a sidechain.
It's non-sidechain specific, the only requirement is that a cross-chain transaction is constructed, taking in an OP_RETURN containing the user's address on the sidechain.

Most of the design elements can be taken from #72

Misleading amount shown on transaction detail

When viewing sent transaction details in Transaction History the amount shown is the total amount for the transaction (intended payment amount + fees).

As the fee is shown in a field below the amount I would expect to have the amount field show only the payment amount excluding fees.

Additionally we could show total transaction amount as yet another field.

Transactions not propagating

screenshot from 2017-12-19 05-35-25

I attempted to recombine the full wallet balance, the transaction still in "unconfirmed" status.

I tested this with @Daandamhuis, he sent me some testnet coins, which I received (2.9 and 0.9 TSTRATS) and confirmed (as seen in the screenshot), however when I attempted to send some back the tx didn't propagate, staying in unconfirmed status, and Daan reported nothing appeared in his wallet from my tx.

Various small UI improvements

Making this list for small points I got from feedback. Not worth separate issues.

  • Change word confirmation styling
  • Set retry attempts to 40 (two minutes)
  • Show current block height in hover
  • Add information balloon to passport/passphrase

multiple accounts shown combined in history but not in balance

Multiple Accounts not yet supported by the UI.... but there is an inconsistency.

UI only showing "account 0"

but with a wallet with "account 1" with transactions, the balance is shown for "account 0" but the history appears to show all transactions, including those that were made on "account 1"

If the UI is only going to support account 0 then perhaps the history of other accounts shouldn't be shown (until there is full support for accounts.

Message signing/verifying

Sometimes a user is asked to prove ownership of coins so they can be asked to sign a message with a bitcoin address.
For example, to prove to a vendor that the bitcoin they received are yours.

Dump Private Keys

Hello,

I would like to export my private keys, does there has a solution with the full node or other ?

Thank you

Show coldStaking tab when wallet starts in testnet

ColdStaking is only enabled on testnet for now, so the tab shouldn't show when the wallet is started on stratis mainnet.
However, when a user starts the wallet with the -testnet arg, then the tab should show.

A JavaScript error occurred in the main process

Hello,

I just build stratis core for linux (on archlinux) with the command npm run package:linux, i get a Stratis Core-v0.2.0-linux-x64.tar.gz file, that i have uncompressed, and when i launch ./stratis-core, i have this error:
capture d ecran du 2018-10-10 15-25-27

Thank you

Improve how we display error message

When we use a modal dialog box and the action went wrong, it displays another modal dialog over the first one. This is not useful and user friendly by the way.
I suggest to only display like other modal dialog with forms an error message in red under the field.

capture d ecran 2018-11-26 a 09 25 51

/cc @dev0tion @bokobza

API Wallet Sync Fails

Requesting sync through swagger fails:

   "hash": "977cffcd66dd8af1aaaf0e2ee6c4b9f1e2d054ab44f97e1740f7180e8ad0001f" \ 
 }' 'http://localhost:37221/api/Wallet/sync'
Request URL
http://localhost:37221/api/Wallet/sync
Response Body
no content
Response Code
500
Response Headers
{
  "date": "Tue, 19 Dec 2017 09:54:45 GMT",
  "content-length": "0",
  "server": "Kestrel",
  "content-type": null
}
Stratis: fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HLA6OFCJK5P3", Request id "0HLA6OFCJK5P3:00000006": An unhandled exception was thrown by the application.
System.NullReferenceException: Object reference not set to an instance of an object.
   at Stratis.Bitcoin.Features.Wallet.Controllers.WalletController.Sync(HashModel model) in /home/travis/build/stratisproject/FullNodeUI/StratisBitcoinFullNode/src/Stratis.Bitcoin.Features.Wallet/Controllers/WalletController.cs:line 831
   at lambda_method(Closure , Object , Object[] )
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeInnerFilterAsync>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextResourceFilter>d__22.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeFilterPipelineAsync>d__17.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.<Invoke>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.<ProcessRequestsAsync>d__2.MoveNext()

Modal dialog error displayed 2 times

Sometimes, when i play with the password to login to my wallet and intentionally put a wrong pass it displays the modal dialog two times in a row.

It appears that's not each time we try it.

Wallet restore error

When I try to restore the wallet it says that wallet under that name already exists when in fact there is no wallet.json file in the folder

err

If I try to restore wallet under a different name it says:

Cannot create this wallet as a wallet with the same private key already exists. If you want to restore your wallet from scratch, please remove the file testWallet, testWallet.wallet.json from 'C:\Users\user\AppData\Roaming\StratisNode\stratis\StratisTest' and try restoring the wallet again. Make sure you have your mnemonic and your password handy!

The thing is that after I press the "Restore" button for the first time it launches the restore process but at the same time it spawns the error (which is wrong). If I keep the app open long enough the wallet file eventually get created.

Pagination for History

History can contain many items and at the moment we're only returning the 200 latest ones with no way for the user to go beyond.
We need to allow for pagination of history items.

cannot expand pattern error when compiling for windows

I am getting an error when trying to compile for windows:
Command: npm run package:windows

Error: cannot expand pattern "${productName}-v${version}-setup-${os}-${env.arch}.${ext}": env arch is not defined

npm debug log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'package:windows' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prepackage:windows',
4 verbose run-script   'package:windows',
4 verbose run-script   'postpackage:windows' ]
5 info lifecycle [email protected]~prepackage:windows: [email protected]
6 silly lifecycle [email protected]~prepackage:windows: no script for prepackage:windows, continuing
7 info lifecycle [email protected]~package:windows: [email protected]
8 verbose lifecycle [email protected]~package:windows: unsafe-perm in lifecycle true
9 verbose lifecycle [email protected]~package:windows: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;C:\Users\42\Desktop\FullNodeUI-master\FullNode.UI\node_modules\.bin;C:\Users\42\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\42\AppData\Local\Programs\Python\Python36-32\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\dotnet\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files\nodejs\;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Users\42\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\42\AppData\Local\Programs\Python\Python36-32\;C:\Users\42\.dnx\bin;C:\Program Files\SDCC\bin;C:\Users\42\AppData\Local\Microsoft\WindowsApps;C:\Users\42\AppData\Roaming\npm;C:\Users\42\AppData\Local\Programs\Fiddler;C:\Users\42\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin
10 verbose lifecycle [email protected]~package:windows: CWD: C:\Users\42\Desktop\FullNodeUI-master\FullNode.UI
11 silly lifecycle [email protected]~package:windows: Args: [ '/d /s /c',
11 silly lifecycle   'npm run build:prod && npx electron-builder build --windows' ]
12 silly lifecycle [email protected]~package:windows: Returned: code: 1  signal: null
13 info lifecycle [email protected]~package:windows: Failed to exec package:windows script
14 verbose stack Error: [email protected] package:windows: `npm run build:prod && npx electron-builder build --windows`
14 verbose stack Exit status 1
14 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\lifecycle.js:255:16)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at EventEmitter.emit (events.js:191:7)
14 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\spawn.js:40:14)
14 verbose stack     at emitTwo (events.js:106:13)
14 verbose stack     at ChildProcess.emit (events.js:191:7)
14 verbose stack     at maybeClose (internal/child_process.js:891:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid [email protected]
16 verbose cwd C:\Users\42\Desktop\FullNodeUI-master\FullNode.UI
17 error Windows_NT 10.0.16299
18 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "package:windows"
19 error node v6.11.0
20 error npm  v3.10.10
21 error code ELIFECYCLE
22 error [email protected] package:windows: `npm run build:prod && npx electron-builder build --windows`
22 error Exit status 1
23 error Failed at the [email protected] package:windows script 'npm run build:prod && npx electron-builder build --windows'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the stratis-core package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error     npm run build:prod && npx electron-builder build --windows
23 error You can get information on how to open an issue for this project with:
23 error     npm bugs stratis-core
23 error Or if that isn't available, you can get their info via:
23 error     npm owner ls stratis-core
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]

Accessibility

Make the wallet accessible for the visually impaired.

Coin control

Need a way to allow users to choose what UTXOs to use in a transaction.

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.