Run this checklist each time a new version of qubic/core is released.
The C++ source is linked as a git submodule at deps/qubic-core.
cd deps/qubic-core
git fetch origin
git checkout <new-release-tag-or-commit>
cd ../..C++ source: deps/qubic-core/src/public_settings.h → VERSION_A, VERSION_B, VERSION_C
C# target: src/Qubic.Core/QubicConstants.cs → QubicCoreVersion
C# target: src/Qubic.Core/Qubic.Core.csproj → <Version>
Update the version string and the doc comment at the top of QubicConstants.cs.
The NuGet package version in Qubic.Core.csproj mirrors the core version (e.g., core 1.278.0 → package 1.278.0).
For C#-only bugfixes between core releases, use a 4th segment (e.g., 1.278.0.1).
C++ source: deps/qubic-core/src/network_messages/common_def.h
C# target: src/Qubic.Core/QubicConstants.cs
Check these values:
NUMBER_OF_COMPUTORS→NumberOfComputorsQUORUM→QuorumNUMBER_OF_EXCHANGED_PEERS→NumberOfExchangedPeersSPECTRUM_DEPTH→SpectrumDepthSPECTRUM_CAPACITY→SpectrumCapacityASSETS_DEPTH→AssetsDepthASSETS_CAPACITY→AssetsCapacityNUMBER_OF_TRANSACTIONS_PER_TICK→MaxTransactionsPerTickMAX_NUMBER_OF_CONTRACTS→MaxNumberOfContractsMAX_INPUT_SIZE→MaxInputSizeSIGNATURE_SIZE→SignatureSizeISSUANCE_RATE→IssuanceRateMAX_AMOUNT→MaxAmountMAX_SUPPLY→MaxSupply
Also check deps/qubic-core/src/public_settings.h for any new constants.
C++ source: deps/qubic-core/src/network_messages/network_message_type.h → enum NetworkMessageType
C# target: src/Qubic.Core/NetworkMessageTypes.cs
Add any new message types, verify existing values haven't changed.
C++ source: deps/qubic-core/src/contract_core/contract_def.h → contractDescriptions[] array
C# target: src/Qubic.Core/QubicContracts.cs
For each contract entry verify index, name, and construction epoch.
C++ source: deps/qubic-core/src/contracts/Qx.h → REGISTER_USER_PROCEDURES macro
C# target: src/Qubic.Core/QxProcedures.cs
Each REGISTER_USER_PROCEDURE(Name, ID) maps to public const ushort Name = ID;
C++ source: deps/qubic-core/src/contracts/QUtil.h → REGISTER_USER_PROCEDURES macro
C# target: src/Qubic.Core/QutilProcedures.cs
dotnet run --project tools/Qubic.ContractGenThis parses all C++ contract headers in deps/qubic-core/src/contracts/ and regenerates
typed C# classes in src/Qubic.Core/Contracts/Generated/. Verify the output compiles
and check for new warnings about unresolved types or array sizes.
If network structs changed, verify derived size constants in QubicConstants.cs:
EntityRecordSize(64) —deps/qubic-core/src/network_messages/entity.hTransactionHeaderSize(80) — transaction structTickSize(344) — tick structAssetRecordSize(48) — asset structsPacketHeaderSize(8) —RequestResponseHeader
Also check if Qubic.Serialization readers/writers need updates.
dotnet build
dotnet testIf Qubic.Crypto changed:
- Bump version in
src/Qubic.Crypto/Qubic.Crypto.csproj dotnet pack src/Qubic.Crypto -c Release→ publish to NuGet- Update
PackageReferenceversion insrc/Qubic.Core/Qubic.Core.csproj
Then for Qubic.Core:
- Set version in
src/Qubic.Core/Qubic.Core.csprojto match core (e.g.,1.279.0) dotnet pack src/Qubic.Core -c Release→ publish to NuGet
| C++ Source (deps/qubic-core/) | C# Target (src/Qubic.Core/) |
|---|---|
src/public_settings.h |
QubicConstants.cs |
src/network_messages/common_def.h |
QubicConstants.cs |
src/network_messages/network_message_type.h |
NetworkMessageTypes.cs |
src/contract_core/contract_def.h |
QubicContracts.cs |
src/contracts/Qx.h |
QxProcedures.cs (obsolete) |
src/contracts/QUtil.h |
QutilProcedures.cs (obsolete) |
src/contracts/*.h |
Contracts/Generated/*.g.cs (via ContractGen) |