Skip to content

emendir/Walytis_Beta

Repository files navigation

A flexible, lightweight, nonlinear blockchain, serving as a P2P distributed database. 4D61646520776974682073696E63657265206C6F766520666F72206D616E6B696E642E

Intro

Walytis is a database-blockchain, a type of blockchain that is essentially a fully distributed database-management system.

As a blockchain, it is uniquely lightweight (can run on a smartphone), has a non-linear chain of blocks (allowing simultaneous block creation), and has nothing to do with cryptocurrencies or tokenomics. There is no single universal instance of the Walytis blockchain. Instead, applications create new Walytis database-blockchains whenever they need one.

Examples of Applications

Walytis is designed to be used for systems that require peer-to-peer databases. Here are a few examples of applications that are developed based on Walytis:

  • Messenger: A database-blockchain can be used to record the existence of messages in a chatroom. Actual message content is stored off-chain for privacy. In this case the database-blockchain is used not for storage but to help the various devices of the member's chatroom coordinate their data synchronisation.

  • File Synchronisation: File changes are recorded in blocks, creating a complete unified history of file edits across users. Actual files are stored off-chain for storage-efficiency.

  • Serverless Git Collaboration: Ever notice that git already looks like a blockchain? Map git commits onto Walytis blocks and git repositories onto Walytis blockchains and you've got a shared git repo!

  • Identity Management: One data-base blockchain is used for every identity, publishing DID-documents as blocks, cryptographically authenticated

Walytis Technologies SDK

Walytis Technologies is a collection of tools based on Walytis built to enable developers to easily develop peer-to-peer distributed applications.

It includes blockchain overlays that extend Walytis' capabilities as a database, as well as essential communications systems such as identity and cryptographic key management.

Blockchain Overlays

The features of Walytis blockchains can be expanded by building modules on top of them that provide applications with interfaces to database-blockchains that have unique features and functionality not built into Walytis. Currently under development are tools for off-chain and encrypted data storage, authentication, access-control, identity-management and mutable data structures

These blockchain overlays are built in a modular way so that application developers can choose which extra features they need for their use case. These modules can be compounded to combine their features.

Documentation

To learn how Walytis works, read its documentation, which lives in a dedicated repository:

Some key entry points to the docs:

Getting Started

1. Install or Run from Source

Install Walytis to run on your system as a background service using Brenthy:

Ubuntu quick start:

# install prerequisites
sudo apt update && sudo apt install -y python3-virtualenv git

# download BrenthyAndWalytis
git clone https://github.com/emendir/BrenthyAndWalytis
cd BrenthyAndWalytis

# install the Walytis blockchain
Brenthy/blockchains/install_walytis_beta.sh

# set up python environment (you can skip this if you only want to install)
virtualenv .venv && source .venv/bin/activate
pip install -r Brenthy/requirements.txt
pip install walytis_beta_api    # install API library

# run Brenthy, it will offer to install itself
python3 .

Brenthy wil ask you whether you want to install or run it from source.

For details on how to run Brenthy & Walytis, see Running From Source

For details on how to install Brenthy & Walytis, see Installing Brenthy

2. Use Walytis

  1. Install the walytis_beta_api Python package:
pip install walytis_beta_api
  1. Start playing around in Python:
import walytis_beta_api as waly

# create a database
blockchain = waly.Blockchain.create("MyFirstBlockchain")

# add data to the database
block = blockchain.add_block(content="Hello there!".encode(), topics=["testing"])

invitation = blockchain.create_invitation()
print(invitation)

On another computer, join the newly created blockchain:

invitation = # paste invitation from above

import walytis_beta_api as waly

# join the database created on the first computer
blockchain = waly.Blockchain.join(invitation)

# read newest block from the database
block = blockchain.get_block(-1)
print(block.content)
print(block.creation_time)
print(block.topics)

Read the Tutorial to learn how to use Walytis, and start building cool stuff!

Project Status

Walytis is in the beta stage of development. This means it is fully functional and its programming API is stable, remaining fully backward compatible until it matures out of the beta stage.

Contributing

Analysis and Review

If you have any thoughts on Walytis or want to discuss the sensibility of its unique features, feel free to share them under GitHub discussions.

I would especially appreciate reviews and analyses of Walytis' blockchain-architecture security.

Software Development

Despite the documentation on Walytis' DevOps not being written yet, feel free to submit pull requests via GitHub if you think you know what you're doing.

Feature Requests and Bug Reports

If you don't have the time to learn how to contribute code directly, feel free to request features or report bugs via GitHub Issues.

Donations

To support me in my work on this and other projects, you can make donations with the following currencies:

Donations help me:

  • dedicate more time to developing and maintaining open-source projects
  • cover costs for IT resources

About the Developer

This project is developed by a human one-man team, publishing under the name Emendir.
I build open technologies trying to improve our world; learning, working and sharing under the principle:

Freely I have received, freely I give.

Feel welcome to join in with code contributions, discussions, ideas and more!

Open-Source in the Public Domain

I dedicate this project to the public domain. It is open source and free to use, share, modify, and build upon without restrictions or conditions.

I make no patent or trademark claims over this project.

Formally, you may use this project under either the:

Related Projects

Overarching project comprising the development of Walytis and a collection of tools based on it for real-world peer-to-peer communications.

  • Walytis: A flexible, lightweight, nonlinear database-blockchain, built on IPFS.
  • WalytisIdentities: P2P multi-controller cryptographic identity management, built on Walytis.
  • WalytisOffchain: Secure access-controlled database-blockchain, built on WalytisIdentities.
  • WalytisMutability: A Walytis blockchain overlay featuring block mutability.
  • Endra: A P2P encrypted messaging protocol with multiple devices per user, built on Walytis.
  • EndraApp: A P2P encrypted messenger supporting multiple devices per user, built on Walytis.

A P2P communication and content addressing protocol developed by Protocol Labs. This is the networking foundation which Walytis builds upon.

Alternative Technologies

  • OrbitDB: a distributed IPFS-based database written in go

About

A flexible, lightweight, nonlinear database-blockchain. Built to be built upon.

Resources

License

MIT-0, CC0-1.0 licenses found

Licenses found

MIT-0
LICENSE
CC0-1.0
LICENSE-CC0

Stars

Watchers

Forks

Packages

 
 
 

Contributors