/client-sdks

General information and code applicable to all client SDKs

Apache License 2.0Apache-2.0

Diem Client SDKs

Diem Client SDKs is a collection of libraries and tools for creating applications integrated with Diem Payment Network. The goal of client SDK is to provide native language support for all aspects of integrations, communications, and protocols in the Diem ecosystem.

Diem Payment Network Integration Overview

This codebase keeps track of SDK feature specifications and status for Diem Client SDKs development.

Module Python Java Go Rust TypeScript C# C++
BCS Runtime ☀️ ☀️ ☀️ ☀️ joelmarcey ☀️ joelmarcey ☀️
Transaction Builder Generator ☀️ ☀️ ☀️ ☀️ joelmarcey ❄️ joelmarcey
JSON-RPC Client ❄️ ⛈️
Multisignature ❄️ #202 ❄️ #69 ☀️ ☀️ ❄️ ❄️ ❄️
Off-chain xli yanivmo martonmaya ❄️ #71 ❄️ #36 ❄️ ❄️ ❄️ ❄️
Faucet Client ☀️ ❄️ ❄️ ❄️
Packaging ☀️ ☀️ ☀️ ☁️ bmwill ❄️ ❄️ ❄️
Verifying Client 🧊 #201 🧊 #68 🧊 #38 ☁️ anomalroil 🧊 🧊 🧊
Mini Wallet ☁️ xli 🧊 #70 🧊 #37 🧊 🧊 🧊 🧊

JSON-RPC Client

Feature Python Java Go Rust TypeScript
JSON-RPC SPEC API ☀️ ☀️ ☀️ ☀️ ☀️
Retry stale response error ☀️ ☁️
Wait for transaction execution ☀️ ☀️ ☀️ ☀️ ☀️
Request strategy ☀️ ❄️ ❄️ ☀️ ❄️
JSON-RPC Batch API ❄️ ❄️ ❄️ ☀️ ❄️
Off-chain resource query APIs ☀️ ❄️ ❄️ ❄️ ❄️
Async IO API ❄️ ❄️ ❄️ ☀️ ❄️
User-Agent HTTP Header ☀️ ❄️ ❄️ ☀️ ❄️

Off-chain

Feature Python Java Go-lang Rust TypeScript
JWS ☀️ ❄️ ❄️ ❄️ ❄️
Offchain Client ☀️ ❄️ ❄️ ❄️ ❄️
Data Deserialization ☀️ ❄️ ❄️ ❄️ ❄️
Data Validations ☀️ ❄️ ❄️ ❄️ ❄️
Payment Command ☀️ ❄️ ❄️ ❄️ ❄️
Fund Pull Pre-Approval Command ☁️ yanivmo martonmaya ❄️ ❄️ ❄️ ❄️

Status Emoji

☀️ : complete; documentation and examples improvements are welcome.

⛅ : feature works as MVP, but not fully match the specification, need improvement.

⛈️ : broken or out of dated.

☁️ : MVP in development, feature incomplete.

❄️ : frozen, feature development is not started, no one is planning or working on it.

🧊 : specification or reference implementation is working in progress, feature is not ready for development yet.

Contribute

You may send a PR for adding new feature specifications or update SDKs' development status. For questions and discussions, please open an issue.

See CONTRIBUTING for more details.