A modular .NET 8.0 library for interacting with the Qubic network. Provides direct TCP node communication, HTTP RPC, and QubicBob JSON-RPC clients, along with core domain models, binary serialization, and pure C# cryptographic primitives.
| Package | Version | Description |
|---|---|---|
| Qubic.Crypto | Pure C# implementation of Qubic cryptographic primitives: K12 (KangarooTwelve) hashing, FourQ elliptic curve, SchnorrQ signatures, and ECDH key exchange. Zero external dependencies. | |
| Qubic.Core | Core domain models, identity handling, transaction building, and signing abstractions. | |
| Qubic.Serialization | Binary serialization for the Qubic network protocol (packet headers, readers, writers). | |
| Qubic.Network | Direct TCP client for communicating with Qubic network nodes. | |
| Qubic.Rpc | HTTP client for the official Qubic RPC API. | |
| Qubic.Bob | JSON-RPC client for the QubicBob API. |
dotnet add package Qubic.Core
dotnet add package Qubic.Network
dotnet add package Qubic.Rpc
dotnet add package Qubic.BobQubic.Crypto (no dependencies)
└── Qubic.Core
└── Qubic.Serialization
└── Qubic.Network
└── Qubic.Rpc
└── Qubic.Bob
using Qubic.Core.Entities;
// From a 60-character identity string
var identity = QubicIdentity.FromIdentity("BAAAAAAAA...");
// From a 55-character seed
var identity = QubicIdentity.FromSeed("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc");
// From a 32-byte public key
var identity = QubicIdentity.FromPublicKey(publicKeyBytes);using Qubic.Core;
using Qubic.Core.Entities;
var builder = new TransactionBuilder();
var tx = builder.CreateTransfer(
source: QubicIdentity.FromSeed(seed),
destination: QubicIdentity.FromIdentity("DEST..."),
amount: 1000,
tick: currentTick + 5
);
builder.Sign(tx, seed);using Qubic.Network;
using var client = new QubicNodeClient("164.90.178.16");
await client.ConnectAsync();
var tickInfo = await client.GetCurrentTickInfoAsync();
Console.WriteLine($"Tick: {tickInfo.Tick}, Epoch: {tickInfo.Epoch}");
var balance = await client.GetBalanceAsync(identity);
Console.WriteLine($"Balance: {balance.Amount}");
await client.BroadcastTransactionAsync(signedTx);using Qubic.Rpc;
using var rpc = new QubicRpcClient("https://rpc.qubic.org");
var tick = await rpc.GetLatestTickAsync();
var balance = await rpc.GetBalanceAsync(identity);
var txId = await rpc.BroadcastTransactionAsync(signedTx);using Qubic.Bob;
using var bob = new BobClient("http://localhost:40420");
var chainId = await bob.GetChainIdAsync();
var tickNumber = await bob.GetTickNumberAsync();
var balance = await bob.GetBalanceAsync(identity);
var transfers = await bob.GetTransfersAsync(identity, startTick: 1000, endTick: 2000);| App | Repository | Description |
|---|---|---|
| Qubic.Net Toolkit | Qubic.Net.Toolkit | Cross-platform desktop app for wallet management, transaction building, contract interaction, and network monitoring. |
| Qubic.Net Wallet | Qubic.Net.Wallet | Cross-platform desktop wallet with dashboard, asset management, staking, DEX trading, and multi-sig vaults. |
| Tool | Description |
|---|---|
| Qubic.ContractGen | Parses C++ smart contract headers from qubic-core and generates C# bindings with correct struct layouts, type mappings, and MSVC /Zp8 alignment. |
| Qubic.ScTester | Blazor Server web UI for browsing and testing all generated smart contract functions against live Qubic nodes via RPC, Bob, or direct TCP. |
# Generate C# contract bindings
dotnet run --project tools/Qubic.ContractGen
# Launch the SC Tester web UI
dotnet run --project tools/Qubic.ScTesterdotnet builddotnet testReal-node integration tests require the QUBIC_NODE_IP environment variable:
QUBIC_NODE_IP=164.90.178.16 dotnet test