Skip to content

MilanSuk/SkyAlt

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 

Browse & build transparent apps

What open-source does to code, SkyAlt does to environments where code is running.

Website

https://www.skyalt.com/

Problem

One of the biggest internet problems is that servers are black boxes! You send data or commands in and you are out of control. Maybe you can get your data back, maybe your command is executed how it suppose to be.

Problems you may experience:

  • none or simple(.csv) data export from server
  • your data disappear(music playlist, etc.)
  • your data was tampered
  • new SaaS version was released and you wanna keep using the older one
  • SaaS stopped
  • company provides source code of the back-end(on GitHub, etc.), but the code running on the server is different?

Solution

SkyAlt is a new internet service for browsing and building transparent apps.

SkyAlt is based on the Client-Server model that provides great performance and efficiency but adds transparency for data and execution on the server-side.

Features:

  • Time-machine: access immutable data and code changes through time
    • cryptographically verifiable
    • fork programs or data in a specific time
    • migrate/sync between servers or self-host(no lock-in)
  • Light client(low bandwidth)
  • Check any transaction at any time
  • Provide proof that data was tampered

How does SkyAlt achieve transparency?

  1. Your server(self-hosted or cloud-based) saves all data into a relational database(aka connected tables).
  2. It's quickly recomputing merkle tree from the database after every change.
  3. Every merkle root is digitally signed by your server.
  4. Clients download that signed merkle roots.
  5. Clients ask(through time) for values in tables, which the server returns together with merkle proofs.

If there is any tampering, merkle proof doesn't lead to merkle root and you have the signiture of merkle root as proof.

Anyone can re-execute any "smart contract" in light client mode(no need to have the whole database) and check if changed values lead to same merkle root.

Current state

  • rapid research & development
  • Linux only
  • no GUI

Milestones

  • Database <-- done
  • Network <-- done
  • Smart contracts <-- work in progress
  • GUI for creating, hosting and browsing tables
  • E2E encryption
  • IDE for making transparent apps

Performance

Hardware:

  • Intel i7-3820(4/8 cores @3.6 GHz)
  • 16GB DDR3
  • OCZ Vertex3(~300MB/s read/write)
  • Ubuntu 20.04 LTS

Adds 4M cells(table with 4 columns<type=number> and 1M rows), then commit() into database.

  • Time: 4.5 sec
  • RAM: 99 MB
  • HDD: 138 MB = 119MB(values) + 19MB(merkle)

Changes two numbers and commit(). Repeat 10K times.

  • Time: 28 sec => 350 commits/sec
  • RAM: 132 MB
  • HDD: 160 MB = 134MB(values) + 26MB(merkle)

Opens database(oldest commit) and computes sum(1st column, 1M rows).

  • Time: 0.7 sec
  • RAM: 102 MB

Light client computes sum(1st column, 1M rows) for every of 10K commits.

  • Time: 268 sec => 37 commits/sec
  • RAM: 103 MB
  • Download: 1st 10MB then 2KB/commit

Compile

git clone https://github.com/milansuk/skyalt
cd skyalt/linux
sh build_r
mkdir ../bin/
mv skyalt_r ../bin/skyalt_linux64

If some libraries missing you can run sh install_libs from /linux folder

Run SkyAlt with ./skyalt_linux64 from /bin folder

Dependencies

  • SQLite3
  • SDL2
  • OpenSSL

Repository

  • /src - source code
    • /os - Bridging between SkyAlt and operation systems.
    • /db - Database
    • /net - Networking
  • /linux - compile, run, debug scripts for Linux OS

Alternatives

List of immutable and cryptographically verifiable databases. Important features are time-traveling and light client.

SkyAlt doesn't support SQL! The focus is on smart contracts and their light verification through time.

Interesting discussions(Immutable databases)

Author

Milan Suk

Email: milan@skyalt.com

Twitter: https://twitter.com/milansuk/

Feel free to follow me on Twitter or contact me with any idea, question or problem.

Contributing

Your feedback and code are welcome!

For bug reports or questions, please use GitHub's issues.

SkyAlt is licensed under Apache v2.0 license. This repository includes 100% of the code.