parsec3/README.md

74 lines
2.6 KiB
Markdown
Raw Normal View History

2022-09-08 09:21:33 +03:00
# PARanodi SECuruty 3 protocol
2023-01-19 13:22:46 +03:00
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2023-01-19 13:22:46 +03:00
Current stable version is __0.4.1-SNAPSHOT__. The full-dpulex RPC over websock is ok, the security level is still disabled until the protocol part will be sabilized.
2022-09-08 09:21:33 +03:00
This is a connection-agnostic, full-duplex RPC type binary protocol, effective to work with binary data, such as encrypted data, keys, multimedia, etc. Its key points are:
- simple and practical transport RPC layer, which is a primary choice when, for exaple, `wss://` level by TSL is enough, e.g. when there is no sensitive data being transmitted (games, etc).
- can easily be used with UDP (it has not too big binary frames that do not depend on the reception order)
- asynchronous full-duplex multithreaded RPC: any number commands from both parties can be executed in parallel.
- coroutine-based, fast implementation.
- compile-time types/invokation checks
- out of the box fast coroutine based websocket client (JVM+JS) and setver (JVM:ktor) implementations are provided.
- Kotlin Multiplatform: works the same in JVM/JS (and android too)
The protocol is a result of reconsidering the pratcial usage of its predecessor, parsec2 protocol. This version is not a part of the Universa effort but an independent personal project of universa CTO.
## Status
Transport layer for wbesockets is being tested in commercial environment, while its public interface still is in aplpha stage and is not yet frozen.
Secure layer is not yet published, as R&D and desting are still under way.
You can try and use transport layer but be prepared to minor interface changes.
## Installation
```kotlin
repsitories {
// ...
2022-12-10 23:51:54 +03:00
maven("https://maven.universablockchain.com")
2022-09-08 09:21:33 +03:00
}
//...
dependencies {
2022-12-10 23:51:54 +03:00
api("net.sergeych:parsec3:0.3.3")
2022-09-08 09:21:33 +03:00
}
```
## Usage
2022-12-10 23:51:54 +03:00
Please see as an example the test [WsServerKtTest.kt](src%2FjvmTest%2Fkotlin%2Fnet%2Fsergeych%2Fparsec3%2FWsServerKtTest.kt)
2022-09-08 09:21:33 +03:00
## FAQ
2022-12-10 23:51:54 +03:00
Not yet
2022-09-08 09:21:33 +03:00
### Why not github?
Two reasons:
1. I don't want to depend on US crazy ideas like limit usage of its services to anybody who their governent won't like next week.
2. My ethic is against usage of open source in _paid services_ like gothub's copilot.
### Why not universa?
Again, two reasons:
1. This is my own project, I don't want to get under any trademark, codes and whatever limits.
2. Its security model is intended to be more universal than just universa to use more trust sources, so it is again not ethically adequate to develop it using universa resources.
## LICENSE
Will soon be published under MIT or similar.