Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bloock/bloock-sdk-php
Bloock SDK for PHP
https://github.com/bloock/bloock-sdk-php
blockchain bloock ethereum sdk sdk-php
Last synced: 6 days ago
JSON representation
Bloock SDK for PHP
- Host: GitHub
- URL: https://github.com/bloock/bloock-sdk-php
- Owner: bloock
- License: mit
- Created: 2020-10-16T07:55:40.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-26T14:21:17.000Z (7 days ago)
- Last Synced: 2024-09-26T15:48:50.469Z (7 days ago)
- Topics: blockchain, bloock, ethereum, sdk, sdk-php
- Language: PHP
- Homepage: https://docs.bloock.com
- Size: 791 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bloock SDKs
[![Release](https://img.shields.io/github/release/bloock/bloock-sdk.svg)](https://github.com/bloock/bloock-sdk/releases)
![npm](https://img.shields.io/npm/v/@bloock/sdk)
![PyPI](https://img.shields.io/pypi/v/bloock)
![Maven](https://img.shields.io/maven-central/v/com.bloock.sdk/bloock-sdk?label=maven)
![Packagist](https://img.shields.io/packagist/v/bloock/sdk)
[![GoDoc](https://pkg.go.dev/badge/github.com/bloock/bloock-sdk-go/v2?status.svg)](https://pkg.go.dev/github.com/bloock/bloock-sdk-go/v2?tab=doc)**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 [[email protected]](mailto:[email protected]).
## Getting started
- For a guide about how to set up one of our SDKs, visit [Set up](https://docs.bloock.com/libraries-integrations/set-up).
- Check our full documentation at [docs.bloock.com](https://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](https://dcbadge.vercel.app/api/server/XwK3NSHp?compact=true)](https://discord.gg/XwK3NSHp)
## 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 | - | - | - | :soon: |## 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](#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](https://raw.githubusercontent.com/bloock/bloock-sdk/master/docs/architecture.jpg)
- 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](https://webassembly.org/).
To support this two cases, we chose Rust as a Core programming language because is able to compile to C and WebAssembly.
![Interoperability](https://raw.githubusercontent.com/bloock/bloock-sdk/master/docs/interoperability.jpg)
Finally, to give full support, we generate C builds for different OS and architectures. See [OS support](#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](https://developers.google.com/protocol-buffers) and a modified [GRPC](https://grpc.io/) 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](https://raw.githubusercontent.com/bloock/bloock-sdk/master/docs/transport.png)
## License
See [LICENSE](https://github.com/bloock/bloock-sdk/blob/master/LICENSE).
[//]: # "sources"
[`source go`]: https://github.com/bloock/bloock-sdk/tree/master/languages/go
[`source js`]: https://github.com/bloock/bloock-sdk/tree/master/languages/js
[`source python`]: https://github.com/bloock/bloock-sdk/tree/master/languages/python
[`source java`]: https://github.com/bloock/bloock-sdk/tree/master/languages/java
[`source php`]: https://github.com/bloock/bloock-sdk/tree/master/languages/php
[//]: # "links"
[`link go`]: https://github.com/bloock/bloock-sdk-go
[`link js`]: https://www.npmjs.com/package/@bloock/sdk
[`link python`]: https://pypi.org/project/bloock/
[`link java`]: https://search.maven.org/artifact/com.bloock.sdk/bloock-sdk
[`link php`]: https://packagist.org/packages/bloock/sdk