Jack Grigg
966b6a9df5
Include fee in target value
2019-02-13 10:16:56 +00:00
Jack Grigg
e3ecc6f7dc
Fix underflow in target height when selecting anchor
...
This won't occur in practice because Sapling activated at a height well
above ANCHOR_OFFSET, but good to fix anyway.
2019-02-13 10:10:23 +00:00
Jack Grigg
6842c293fe
Ensure we have sufficient balance before using transaction::Builder
...
The Builder does return an error if insufficient spend value is
provided, but we can give a more meaningful error here.
2019-02-12 20:55:43 +00:00
Jack Grigg
9b29276dba
Return a more useful error if send_to_address() is called with no blocks
2019-02-12 20:49:35 +00:00
Jack Grigg
8eeddb2de0
Test that send_to_address() fails with incorrect ExtendedSpendingKeys
2019-02-12 19:46:16 +00:00
Jack Grigg
933fb07f42
Wrap all exceptions and panics to relay them over JNI
2019-02-12 02:56:17 +00:00
Jack Grigg
25e79f042b
Use failure::Error in utils::exception instead of jni::errors::Error
2019-02-11 16:52:00 +00:00
Jack Grigg
42b2076dc1
Add exception utilities to the crate
2019-02-11 16:35:44 +00:00
Jack Grigg
37c0efad77
Utilities for conveying Rust exceptions and panics to Java
...
Source: affa85c026/exonum-java-binding/core/rust/src/utils/exception.rs
License: Apache-2.0
2019-02-11 16:33:11 +00:00
Jack Grigg
6d86b2cf16
Extract rust_vec_to_java() utility function
2019-02-11 16:20:11 +00:00
Jack Grigg
5dfadd4393
Extract java_string_to_rust() utility function
2019-02-11 15:44:49 +00:00
Jack Grigg
1163c557a8
Use spending_key helper instead of manually constructing account path
2019-02-11 15:36:34 +00:00
Jack Grigg
886017a4f5
Migrate to Rust 2018 edition
...
Requires a minimum of Rust 1.31.
2019-02-11 15:11:09 +00:00
Jack Grigg
c4231fb404
Fix bug in collect() return type
2019-02-11 15:03:27 +00:00
Jack Grigg
eca0bbc697
Explicitly panic instead of unwrapping when an invariant is broken
2019-02-11 14:28:19 +00:00
Jack Grigg
e3ccb73a99
Remove unnecessary unwraps
2019-02-11 14:28:18 +00:00
Jack Grigg
d1c3c55b0d
Test that scan_cached_blocks finds change notes
2019-02-11 14:28:17 +00:00
Jack Grigg
70f9ab54c6
Simple binary to calculate the latest Sapling commitment tree
...
The gRPC Rust bindings are committed instead of requiring protoc to build.
2019-02-11 14:27:43 +00:00
Jack Grigg
b78a611f7b
JNI APIs to fetch memo fields as UTF8
2019-02-08 21:06:25 +00:00
Jack Grigg
6ae75baf35
Test that scan_cached_blocks finds received notes
2019-02-08 21:06:24 +00:00
Jack Grigg
e8eda3db33
Test that init_accounts_table stores the correct address
2019-02-08 21:06:23 +00:00
Jack Grigg
5dea1dbc04
Test that initialisation APIs are one-shot
2019-02-08 21:06:22 +00:00
Jack Grigg
8d9124fab5
Pass paths into the SQL API using AsRef<Path> instead of &str
...
This enables both &str and &Path to be used, depending on how the API is
being called.
2019-02-08 21:06:21 +00:00
Jack Grigg
45adb0af4a
Store creation time and expiry height in transactions table
...
- Creation time can be used in the UI before a transaction gets mined.
- Expiry height enables the UI to indicate expired transactions.
2019-02-07 14:39:50 +00:00
Jack Grigg
c51a90f4de
Fix clippy lints
2019-02-07 13:02:50 +00:00
Jack Grigg
acd8c395f3
Tidy up imports
2019-02-07 12:58:33 +00:00
Jack Grigg
a9674a148b
Remove cfg(target_os="android") restriction
...
The crate lives inside the Android SDK, and will only ever target
Android devices, so it's fine to simplify here.
2019-02-07 12:56:04 +00:00
Jack Grigg
e99ed5bdeb
Extract SQL API into a separate module
2019-02-07 12:50:40 +00:00
Jack Grigg
62b4d43341
Remove seed argument from JniConverter.getAddress(), add account arg
2019-02-01 21:57:13 +00:00
Jack Grigg
b608b026ed
Remove seed argument from JniConverter.scanBlocks()
...
The API now scans cached CompactBlocks using the ExtendedFullViewingKeys
for the internally-tracked accounts.
2019-02-01 21:57:12 +00:00
Jack Grigg
d9232c885d
JniConverter.initAccountsTable()
2019-02-01 21:57:11 +00:00
Jack Grigg
c26249373d
JniConverter.initBlocksTable()
2019-02-01 21:57:10 +00:00
Jack Grigg
41bb9a1a4b
JniConverter.initDataDb()
2019-02-01 21:57:08 +00:00
Jack Grigg
aa391063d1
JniConverter.getBalance()
2019-02-01 21:57:07 +00:00
Jack Grigg
d98191d110
JniConverter.sendToAddress()
2019-02-01 21:57:06 +00:00
Jack Grigg
3966798f53
API for creating transactions
2019-02-01 21:57:05 +00:00
Jack Grigg
ab2b5903a0
Improvements to JniConverter.scanBlocks()
...
- Store Sapling tree with blocks
- Store witnesses with full notes
- Track note spends
- Track change notes
- Store index within block for each transaction
- This will make it easier to request entire blocks of transactions at
some point, and then filter out only the transactions we care about.
- Store block times while scanning blocks
- Return bool with error state from JniConverter.scanBlocks()
- Support cached blocks that are height-ascending but not sequential
- Blocks that do not contain Sapling data may be skipped.
- Return error from scan_cached_blocks() if heights are not ascending
2019-02-01 17:41:09 +00:00
Jack Grigg
3188cf8942
Remove now-unused ValueReceived protobuf
2019-01-31 16:09:37 +00:00
Jack Grigg
f622a3bcd8
Persist received notes in an SQLite database
2019-01-31 16:09:25 +00:00
Kevin Gorham
addcf60fc4
add error logging in Rust
...
This allows errors to bubble up to the android log file, rather than
having to sift through a tombstone file on the device.
2018-12-01 01:48:02 +00:00
Jack Grigg
83e00e1611
JniConverter.scanBlocks()
2018-12-01 01:47:41 +00:00
Jack Grigg
7bc3f2eede
Generate Rust protobuf representing received value
2018-12-01 01:46:35 +00:00
Jack Grigg
fc6c3c6b2b
Split address_from_seed to expose ExtendedFullViewingKey
2018-12-01 01:46:34 +00:00
Jack Grigg
6ab9c6610c
JniConverter.getAddress(seed)
2018-12-01 01:43:05 +00:00
Jack Grigg
193a1f3b22
cargo fmt
2018-11-21 13:51:37 +00:00
Kevin Gorham
19212b14c4
ignore unused variable
2018-11-21 02:04:06 -05:00
Kevin Gorham
32af4b9559
initial commit of sample project code
...
The next step is to clean this up and integrate it with the latest version of the android app
2018-11-20 12:59:08 -05:00