Tribler / trustchain-superapp

Kotlin implementation of Trustchain and IPv8 with rich networking: multihoming of local Bluetooth+4G, decentral social networking, UDP hole punching, etc.
GNU General Public License v3.0
79 stars 63 forks source link

Trustchain: Native Android implementation #44

Closed synctext closed 3 years ago

synctext commented 7 years ago

Create a clean-slate Java implementation of Trustchain. Enables future support of a Android credit wallet. Plus future digital votingpass app future integration, Tribler/tribler#2918

Issues:

First results: screenshot_2017-09-19-13-57-00

klikooo commented 7 years ago

Base64 enoding of a private public keypair of the secp256k1 elliptic curve: screenshot_20170919-143105 Currenlty signs an 8 byte strings

klikooo commented 7 years ago

@qstokkink If I'm correct you mentioned yesterday that trustchain is using the Ed25519 elliptic curve?

qstokkink commented 7 years ago

@klikooo to be precise: it uses Curve25519 and not Ed25519.

synctext commented 7 years ago

Current progress, Database code getting functional, https://github.com/wkmeijer/CS4160-trustchain-android/tree/4_create_database

synctext commented 6 years ago

Project till 24 Nov, 100h/p, used 40%. Q2 code support on Tuesday morning (5h/week).

Current progress, Android-to-Android direct connect functional, only when connected to same wifi. Bluetooth pending. Can connect to others and crawl blocks and decode. Working Bouncycastle lib for curves of Trustchain. Nasty bug: public key storage gets altered. No networking part yet. screenshot_20171025-105222

wkmeijer commented 6 years ago

App can now correctly create a full block.

When phone A wants to connect to phone B, A first sends a crawlrequest to get info from the B. A also sends her last 5 blocks to B, so B has enough information to validate halfblocks send by A. Normally dispersy handles this, so the code in the app here is not very sophisticated.

In the screenshots notice the public keys of A and B, public key of A ends in F4E4D6, public key of B ends in 190886.

When both A and B have gotten to know each other, A creates a halfblock and sends it to B.

Half block created by A:

Half block created by A (continued):

B then validates the halfblock received from A by matching it against what he knows from A in its database. When everything is validated correctly, B creates the other half of the block and sends it to A. A receives the block and puts it in her database, thus completing the exchange.

A receives other half from B:

Other half of the block in database of A (notice that the link public key is the public key of A):

Next steps:

APK of latest version (trustchain-android-debug.apk.zip)

synctext commented 6 years ago

ToDo:

klikooo commented 6 years ago

http://trustchain-android.readthedocs.io/en/feature-1_read_the_docs/

klikooo commented 6 years ago

@synctext could you update the link of the documentation on brightspace to the following http://trustchain-android.readthedocs.io/

synctext commented 6 years ago

Please upload your Trustchain app as a private Beta on Google Play store release this or next week. Prepare please for a public release on 24 Jan at the latest on Google Play store.

This app will be mentioned at length in my upcoming talk at Stanford: https://cyber.stanford.edu/bpase18

Sandeep can help with a stable IPv4:port for bootstrapping. We now have a dedicated Pixel phone for that running Android 8.1 IPv4 : 130.161.211.254 Port 1873 Local 192.168.1.28 (changed) (running often-crashing original app by Jaap, as released on app store). Location Van Mourik Broekmanweg 6, 3rd floor, ... Please send .apk for bootstrapping with stability or drop by.

Open matters:

synctext commented 6 years ago

open Beta: https://play.google.com/apps/testing/nl.tudelft.cs4160.trustchain_android trustchain_android__signature_requests_and_mailbox

synctext commented 6 years ago

ToDo:

MattSkala commented 4 years ago

Last sprint:

As discussed, possible upcoming sprints:

synctext commented 4 years ago

Comments: IPv8 is cool according to @MattSkala. Next step is to expand IPv8 concepts/overlay/code with nearby Bluetooth devices. Great progress: Libtorrent magnet link downloading now works in the expanded app!

ichorid commented 4 years ago

This issue must be moved to the same repository where the Android app is. And the Android app by @MattSkala must be moved to Tribler organization. And @MattSkala must get limited rights for the corresponding repo at our organization.

MattSkala commented 4 years ago

@ichorid The Kotlin implementation already is part of Tribler organization:

Feel free to move or close this issue.

devos50 commented 3 years ago

This issue is indeed completed so I will close it 👍