Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trustchain: Native Android implementation #44

Closed
synctext opened this issue Sep 19, 2017 · 17 comments
Closed

Trustchain: Native Android implementation #44

synctext opened this issue Sep 19, 2017 · 17 comments
Assignees

Comments

@synctext
Copy link
Member

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
Copy link

klikooo commented Sep 19, 2017

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

@klikooo
Copy link

klikooo commented Sep 20, 2017

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

@qstokkink
Copy link

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

@synctext
Copy link
Member Author

synctext commented Oct 9, 2017

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

@synctext
Copy link
Member Author

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
Copy link

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:

  • Documentation
  • Cleaning up code
  • Bluetooth support
  • Creating a more sophisticated blockchain explorer

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

@synctext
Copy link
Member Author

synctext commented Nov 7, 2017

ToDo:

  • Android-to-Android sign transactions with nearby devices (wifi or Bluetooth)
  • Blockchain browser slight polish: single-line public key and hashes (make clickable to expand)
  • photo and .pdf on Trustchain with attestation
  • please make the docs single looong page
  • setting up Dev environment in Android Studio V-x.y

@klikooo
Copy link

klikooo commented Nov 7, 2017

@klikooo
Copy link

klikooo commented Nov 14, 2017

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

@synctext
Copy link
Member Author

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
Copy link
Member Author

synctext commented Jan 16, 2018

@synctext
Copy link
Member Author

synctext commented Feb 19, 2018

ToDo:

  • process open PR
  • bug fix UDP-only 3G/4G puncture-message and overly aggressive 5 second time-out
  • last seen field, last successful incoming message from any peer
  • For credit points:
    • landelijk schakelpunt in Trustchain app
    • actual medicijn indicatie
    • or any other use-case from Zorg Instituut Nederlands (ZIN)

@MattSkala
Copy link
Collaborator

MattSkala commented Nov 28, 2019

Last sprint:

As discussed, possible upcoming sprints:

  • add libtorrent downloads via magnet link
  • share files offline
  • see a list of nearby offline friends
  • integrate somehow internet online friends and nearby offline friends?
  • full ipv8/trustchain compatibility?
  • self-compiling ipv8 java plugins??

@synctext
Copy link
Member Author

synctext commented Dec 6, 2019

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
Copy link

ichorid commented Jul 17, 2020

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
Copy link
Collaborator

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

Feel free to move or close this issue.

@ichorid ichorid transferred this issue from Tribler/tribler Jul 18, 2020
@devos50
Copy link
Contributor

devos50 commented Apr 9, 2021

This issue is indeed completed so I will close it 👍

@devos50 devos50 closed this as completed Apr 9, 2021
Cornul11 pushed a commit to kponichtera/trustchain-superapp that referenced this issue Feb 28, 2022
Add validation result for specific missing blocks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants