Closed PauluzzNL closed 6 years ago
Our first milestone is:
Extend Tribler with the feature to generate a QR code from a key pair ( pybip38 ) This QR code can be picked up by a mobile phone using a version of the TrustChain Android app . The Android app can transfer credits to a second phone without using wifi. ( bluetooth/NFC/QR-codes/audio)
Our first week objective:
Have local builds of Tribler and Android and get acquainted with their code base.
Meeting - Friday - 24 Nov We heard that there are problems with the available Android app. We hope to get a POC QR exchange between PC and Android working.
Tasks:
QR generation examples
Meeting with Pouwelse - Tuesday - 28 Nov
We discussed the progress so far, and came to the conclusion that we should start communicating with the other group and TA that is working on the Android App.
Progress on key export in Tribler, code can be found in PR #3267 :
The individual buttons export the three different key pairs present in the session state of Tribler.
The goal will be changed to wallet management, and no transactions
Tribler uses libsodium to generate dual key format keys. The problem is that the crypto libraries in Android (bouncycastle) does not support these dual format keys.
Possible TODO:
We already compiled libsodium for Android.
To use it, you should add the following code to your build.gradle
:
sodium {
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jniLibs/armeabi-v7a/libsodium.so")
}
}
Note that it's only compiled for armv7 so it cannot be loaded on Intel-based devices. Also, you probably have to write some glue code (bindings) using JNI (or SWIG) to invoke methods in the libsodium.so
file.
UPDATE: https://github.com/joshjdevl/libsodium-jni seems exactly what you want here 👍
Meeting - Dec 5
We changed our Goal. We will transfer money from a PC to an Android
TODO
Sprint goal: empty a PC wallet to a fresh Android Trustchain wallet with protection against man-in-the-middle attacks. Assume PC shows it's public IPv4:port and is connectable.
Options
We are focusing on option 1. ( We are using the chain as a tool and are not ensuring the security/consistency of a specific usecase. ) The tickets are :
[ ] Spin up a second Tribler core
[ ] Tribler: generate QR code with Key+Chain
[ ] Android: Chain + Key compatibility
[ ] Android: Read and save Key + Chain
Current Progress:
Solved roadblocks:
Progress for upcoming weeks:
Status:
Dec 19 Done :
TODO : Integration test Tribler -> Android
Progress:
QR code to scan with
{optionally fancy} GUI and android-to-android transfer
future sprint: use the QR code as a transport wallet
We are now tracking progress on https://github.com/orgs/blockchain-storage/projects/1
After importing the current QR code the block is currently directly inserted into the chain and the private key is overridden. Currently the 'chain' becomes 'corrupted' because of this, because the genesis block is missing (for now). So the history of previous blocks is now incorrect, as they were from a different keypair.
The better approach and first next goal is to actually transfer the transaction from the 'temporary block/identity' to the already existing wallet on the phone.
For transactions that have associated coin data, an Activity has been created displaying the transaction data.
Current concept:
New Approach:
Remarks and progress :
Final documentation is contribution to: http://trustchain-android.readthedocs.io/
Short overview of the block structure used for the throwaway transfer identity.
Schematic overview of offline transaction with throw-away identity
We do not send all information of the zeroth block of the C node, because it will make the QR to big too display on a mobile phone.
Data sent:
Beta version of the documentation: https://drive.google.com/open?id=1bQvnE0p48Zd2m9tBiCfNTQtZnYXVR4yS
This will be uploaded to the read the docs of the android app and put into the issue
To be done/improved
The current PR's are #3358 https://github.com/wkmeijer/CS4160-trustchain-android/pull/54
wish list :
Final grading doc; PR to read-the-docs which should not exceed 5 pages including introduction with proper references, problem statement, high level description of the system, and reason for certain critical choices made in the design.
QR code to test the android functionality.
Ideas for the pictures for the Stanford talk:
Screenshot of new partial emptying support on Tribler, new confirmation screens and changed wording
Presentation image:
Stauts
Discovered problem during last sprint:
Prettier usage gif
Here is our process report which also includes the technical information. We'll have one final pull request with documentation changes to the android master.
Quick comments used for final grading:
Project H: Build your own Storagecoin
You will make your own storagecoin within this project. Filecoin is the largest ICO in the history of cybercurrency, see our analysis. A total of $257 million is given to a project without any running code. The big idea of your project and Filecoin is to turn any storage device into a cash generation machine. Key target is expanding an existing system with mobility of mined storage coins. Your code will allow send credits to another Android wallet. First task is to understand the Trustchain fabric by TUDelft, our 12 years of ledger prototyping and Android implementation. See project A for starting point with coding. Second task is to enable Android-to-Android transfer of coins. Finally, implement private key importing within your Android code and exporting using QR codes from the Tribler credit mining system.
@devbridie @PauluzzNL @mitchellolsthoorn @roelofsol @DavidGSB