Skip to content

Commit

Permalink
v0.1.0-alpha.1
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-orlovsky committed Nov 28, 2020
1 parent 5a17598 commit 75dd88b
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 11 deletions.
5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
[package]
name = "bitcoin-pro"
description = "Professional bitcoin accounts & assets management"
version = "0.1.0"
version = "0.1.0-alpha.1"
authors = ["Dr Maxim Orlovsky <[email protected]>"]
edition = "2018"
license = "AGPL-3.0-only"
readme = "README.md"
exclude = ["test"]

[[bin]]
name = "bitcoin-pro"
Expand All @@ -23,7 +24,7 @@ gtk = { version = "~0.9.2", features = ["v3_24_9"] }
gdk = { version = "~0.13.2", features = ["v3_24"] }
gio = { version = "~0.9.1", features = ["v2_64"] }
glib = { version = "~0.10.3", features = ["v2_64"] }
glade = { git = "git://github.com/dr-orlovsky/rust-glade", branch = "master" }
glade = "~0.1.0-alpha.2"
lnpbp = { version = "~0.2.0-beta.2", features = ["lnp", "rgb", "tor", "url", "keygen", "elgamal"] }
lnpbp_derive = "~0.2.0-beta.2"
# rgb_node = { version = "~0.2.0-beta.3" }
Expand Down
52 changes: 51 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,53 @@
# Bitcoin Pro

Professional bitcoin accounts & assets management.
Professional bitcoin accounts & smart contract management by
[Pandora Cora AG](https://pandoracore.com), Switzerland & Dr. Maxim Orlovsky.

Application is founded on [LNP/BP Core Library](https://github.com/LNP-BP/rust-lnpbp)
and allows [RGB smart contracts](https://rgb-org.github.com) management.

The application **is not a bitcoin wallet**: it does not require access to
private keys or creates any signatures. All operations are saved & exported in
form of PSBTs (partially-signed bitcoin transactions) and for their completion
must be signed and published to bitcoin network outside of the application.

Bitcoin Pro is written exclusively in Rust language with GTK framework and
natively compiles/works on Linux, MacOS and (probably) Windows 10.

NB: This is an ultra-early alpha version; use it at your own risk!

## Features

* Extended public key management [Completed]
* Creation of arbitrary complex descriptors monitoring onchain transactions [WIP]
* Creation and management of RGB fungible assets (RGB-20 standard) [WIP]
- Secondary issuances
- Renominations
- Burn & replacement
* Creation and management of RGB collectibles/non-fungible token contracts
(RGB-21 standard) [Planned]

## Installation

Install rust language and run

```constole
$ cargo install bitcoin-pro
$ bitcoin-pro
```

## Main interface

![Main window](doc/ui/main_app.png)

## Extended public key management

![Extended public key management](doc/ui/xpub_dlg.png)

## Output descriptors

![Output descriptors](doc/ui/descriptors.png)

## RGB-20 assets

![Asset creation](doc/ui/asset_creation.png)
Binary file added doc/ui/asset_creation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/ui/descriptors.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/ui/main_app.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/ui/xpub_dlg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ fn main() {
gtk::Application::new(Some("com.pandoracore.BitcoinPro"), default!())
.expect("BitcoinPro failed to initialize GTK environment");

application.connect_activate(|app| {
application.connect_activate(|_| {
fn new_app(path: Option<PathBuf>) {
if let Ok(app_window) = view::AppWindow::new(path) {
let app_window = app_window.borrow();
Expand Down
2 changes: 1 addition & 1 deletion src/model/tracking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ impl Display for DerivationComponents {
.strip_prefix("m")
.unwrap_or(&self.derivation_path().to_string())
)?;
if let Some(ref ranges) = self.index_ranges {
if let Some(_) = self.index_ranges {
f.write_str(&self.index_ranges_string())
} else {
f.write_str("*")
Expand Down
12 changes: 6 additions & 6 deletions src/view/app_window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ impl AppWindow {
tb.connect_clicked(clone!(@weak me, @strong doc => move |_| {
let meb = me.borrow();
let pubkey_dlg = PubkeyDlg::load_glade().expect("Must load");
if let Some((keyname, model, iter)) = meb.pubkey_selection() {
if let Some((keyname, _, iter)) = meb.pubkey_selection() {
let tracking_account = doc
.borrow()
.tracking_account_by_key(&keyname)
Expand All @@ -124,7 +124,7 @@ impl AppWindow {
let tb: gtk::ToolButton = builder.get_object("pubkeyRemove")?;
tb.connect_clicked(clone!(@weak me, @strong doc => move |_| {
let me = me.borrow();
if let Some((keyname, model, iter)) = me.pubkey_selection() {
if let Some((keyname, _, iter)) = me.pubkey_selection() {
let tracking_account = doc
.borrow()
.tracking_account_by_key(&keyname)
Expand All @@ -151,9 +151,9 @@ impl AppWindow {
tb.connect_clicked(clone!(@weak me, @strong doc => move |_| {
let descriptor_dlg = DescriptorDlg::load_glade().expect("Must load");
descriptor_dlg.run(doc.clone(), clone!(@weak me, @strong doc =>
move |descriptor_params| {
let me = me.borrow();
move |_descriptor_params| {
/* TODO: Perform assst creation
let me = me.borrow();
me.pubkey_store.insert_with_values(
None,
None,
Expand All @@ -175,9 +175,9 @@ impl AppWindow {
tb.connect_clicked(clone!(@weak me, @strong doc => move |_| {
let issue_dlg = IssueDlg::load_glade().expect("Must load");
issue_dlg.run(clone!(@weak me, @strong doc =>
move |asset_genesis| {
let me = me.borrow();
move |_asset_genesis| {
/* TODO: Perform assst creation
let me = me.borrow();
me.pubkey_store.insert_with_values(
None,
None,
Expand Down

0 comments on commit 75dd88b

Please sign in to comment.