bloock/sdk

Bloock SDK for PHP


README

Release npm PyPI Maven Packagist GoDoc

BLOOCK guarantees data integrity and authenticity in a simple, scalable, and confidential manner on top of distributed ledger technologies. Through BLOOCK, enterprises can minimize the principal risks and difficulties faced when defining, developing and managing a blockchain project.

  • Easy to use
  • Highly scalable
  • Privacy by default
  • Technologically independent
  • Network interoperability
  • Predictable efficient cost

We want your feedback! Please feel free to open a GitHub issue for suggested improvements or feature requests. If you need support, contact support@bloock.com.

Getting started

  • For a guide about how to set up one of our SDKs, visit Set up.
  • Check our full documentation at docs.bloock.com.

Support

If you need help, you can join our Discord server where our engineering team will be happy to help you:

Join Discord

Language support

Language Requirements Source Link Support
Javascript Node: >=12.20.0
NPM: >=6.4.1
Source JS Link JS
Go 1.18+ Source Go Link Go
Python Python: >= 3.7
PIP
Source Python Link Python
Java Java: >= 8
Gradle or Maven
Source Java Link Java
PHP PHP: >= 7.4
ext-ffi
Source PHP Link PHP
Rust - - - 🔜

OS support

OS Arch Env type Support
Linux x86_64 gnu
Linux x86_64 musl
Linux arm64 gnu -
Linux arm64 musl -
Windows x86_32 mingw -
Windows x86_32 msvc -
Windows x86_64 mingw
Windows x86_64 msvc
MacOS x86_64 -
MacOS arm64 -

Concept

BLOOCK offers direct integrations with multiple programming languages (see Language support. In order to mantain a unified user experience and equivalent functionalities, we implement all functionalities in Rust (stable) and bridge each one to every language-specific SDK trough FFI.

Architecture

To achieve interoperability between different programming languages, we use an architecture that has the following elements:

Architecture

  • Bloock Libs: Contain specific utilities used accross different features. Such as: hashing algorithms, digital signature algorithms, encrytption algorigthms, HTTP communication, ...
  • Bloock Core: Contains all the bussiness logic for every feature.
  • Bloock Bridge: Implements the GRPC-like endpoints and connects them with the features implemented in the Core.
  • Language-specific libraries: Contains all the interfaces for the consumer and connects with the bridge using the different endpoints available.

Communication

The communication between different languages is done by using a language-specific interoperability layer and a generic transport layer.

Interoperability

Most languages have some type of ability to communicate with another language, this is called FFI (Foreign Function Interface) and usually is done by using C as a base language. One of the exceptions is Javascript because browsers don't support that functionality and it's only possible to do so by using WebAssembly.

To support this two cases, we chose Rust as a Core programming language because is able to compile to C and WebAssembly.

Interoperability

Finally, to give full support, we generate C builds for different OS and architectures. See OS support.

Transport

In order to minimize the effort dedicated to interact with the FFI layer which, specially in C, is time consuming we use Protocol Buffers and a modified GRPC protocol in such a way that we define in-memory endpoints that are called by the language-specific SDKs (client) and served by the Rust Bridge (server).

Transport

License

See LICENSE.