Skip to main content

A library for interacting with Walytis, a flexible, lightweight, nonlinear database-blockchain. Built to be built upon.

Project description

Walytis

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.

Roadmap

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

Walytis Technologies

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.

IPFS

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

walytis_beta_api-2.4.18.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

walytis_beta_api-2.4.18-py3-none-any.whl (48.5 kB view details)

Uploaded Python 3

File details

Details for the file walytis_beta_api-2.4.18.tar.gz.

File metadata

  • Download URL: walytis_beta_api-2.4.18.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for walytis_beta_api-2.4.18.tar.gz
Algorithm Hash digest
SHA256 5e389d4b618f6aa8b13056d74b93d79b41298c9da8eab458d2573e1042482478
MD5 e837398a58f6259d6212d9e087bc26f9
BLAKE2b-256 b3d9cc34e8dd04d6e333169408fa21be53571360cbffdf2ae118ff32b439af48

See more details on using hashes here.

File details

Details for the file walytis_beta_api-2.4.18-py3-none-any.whl.

File metadata

File hashes

Hashes for walytis_beta_api-2.4.18-py3-none-any.whl
Algorithm Hash digest
SHA256 b224e0cd2dbf20b0ae064606da5be9f97708cf6104718029c972ed93f94d86f9
MD5 9c6a72027674201d6600964a100a1728
BLAKE2b-256 978fd0622a1b4ed672e4b6cf9f10cdf62417f0eb98884c674051fade07259367

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page