Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,537 changes: 1,698 additions & 839 deletions Cargo.lock

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ ahash = "0.8.12"
bincode = "1.3.3"
faster-hex = "0.9.0"
futures = "0.3.31"
kaspa-addresses = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-bip32 = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-consensus-client = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-consensus-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-hashes = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-notify = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-rpc-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-txscript = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f", features = ["wasm32-sdk"]}
kaspa-utils = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-wallet-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-wallet-keys = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-wrpc-client = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "e97070f" }
kaspa-addresses = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-bip32 = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-consensus-client = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-consensus-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-hashes = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-notify = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-rpc-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-txscript = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07", features = ["wasm32-sdk"]}
kaspa-utils = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-wallet-core = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-wallet-keys = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
kaspa-wrpc-client = { git = "https://github.com/kaspanet/rusty-kaspa.git", rev = "90dbf07" }
paste = "1.0"
pyo3 = { version = "0.27.1", features = ['multiple-pymethods'] }
pyo3-async-runtimes = { version = "0.27.0", features = ['tokio-runtime'] }
Expand All @@ -43,7 +43,7 @@ secp256k1 = { version = "0.29.0", features = [
serde = { version = "1.0.228", features = ["derive"] }
serde-pyobject = "0.8.0"
serde_json = "1.0.149"
thiserror = "2.0.17"
thiserror = "2.0.18"
workflow-core = "0.18.0"
workflow-log = "0.18.0"
workflow-rpc = "0.18.0"
Expand Down
7 changes: 6 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,13 @@ search:
- Examples under `examples/wallet/` demonstrating wallet usage
- Pytest options `--network-id` and `--rpc-url` for targeting integration tests at a specific network / node.
- TypedDicts for `RpcClient` subscription event payloads — `BlockAddedEvent`, `VirtualChainChangedEvent`, `FinalityConflictEvent`, `FinalityConflictResolvedEvent`, `UtxosChangedEvent`, `SinkBlueScoreChangedEvent`, `VirtualDaaScoreChangedEvent`, `PruningPointUtxoSetOverrideEvent`, `NewBlockTemplateEvent`, `ConnectEvent`, `DisconnectEvent` — and their notification body TypedDicts (`RpcBlockAddedNotification`, etc.) for typing event-listener callbacks.
- `RpcClient.get_block_reward_info(request)` — new RPC returning a block's reward info (header, block color, confirmation count, merging chain block hash, reward amount).
- `ScriptBuilder` covenant/engine flags: optional `covenants_enabled` and `sigop_script_units` arguments on `ScriptBuilder(...)` and `ScriptBuilder.from_script(...)`, plus read-only `covenants_enabled` / `sigop_script_units` properties (mirrors the WASM SDK's `ScriptBuilderOptions`).
- `Transaction.storage_mass` property and a `storageMass` key in the `Transaction` dict output (alongside the existing `mass`), mirroring the WASM SDK.

### Changed
- Bumped the pinned `rusty-kaspa` dependency from `d290179` to `90dbf07` (Toccata hardfork). The transaction mass field is now tracked internally as `storage_mass`; the Python-facing `mass` property, constructor argument, and dict key are retained as aliases.
- The network minimum relay fee was raised upstream to 100 sompi/gram (Toccata). Fees produced by the wallet and `Generator` reflect the new floor; explicit `fee_rate` values must meet it.
- `py_error_map!` macro extended to register wallet exception variants into the `kaspa.exceptions` submodule.
- Integration tests now default to `mainnet` (overridable via `--network-id` / `--rpc-url`).
- `build-dev` script builds with `--strip` for smaller artifacts.
Expand Down Expand Up @@ -59,7 +64,7 @@ search:
- Added to `GeneratorSummary`: `to_dict()` method, properties `network_id`, `mass`, and `stages`.

### Changed
- Bumped rusty-kaspa dependency version to commit e97070f.
- Bumped rusty-kaspa dependency version to commit d290179.
- Moved Kaspa Python SDK out of Rusty-Kaspa (as a workspace member crate) to its own dedicated repository. The internals of this project have changed significantly as a result. However, all APIs exposed to Python remain unchanged.
- All Python-exposed structs and enums are prefixed with `Py` (e.g. `PyAddress`) internally. The corresponding Python class name has not changed (prefix is dropped in Python).
- All Python-exposed functions are prefixed with `py_` (e.g. `py_sign_message`) internally. The corresponding Python function name has not changed (prefix is dropped in Python).
Expand Down
2 changes: 1 addition & 1 deletion docs/learn/rpc/calls.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ flow and `allowOrphan` semantics.
fee = await client.get_fee_estimate()
# {
# "estimate": {
# "priorityBucket": {"feerate": 1.0, "estimatedSeconds": 1.0},
# "priorityBucket": {"feerate": 100.0, "estimatedSeconds": 1.0},
# "normalBuckets": [...],
# "lowBuckets": [...],
# }
Expand Down
5 changes: 5 additions & 0 deletions docs/learn/transactions/mass-and-fees.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ network's current rate, or `None` if the transaction's mass exceeds
[`maximum_standard_transaction_mass()`](../../reference/Functions/maximum_standard_transaction_mass.md). Split the inputs across
multiple transactions in that case.

Since the Toccata hardfork, the network minimum relay fee is **100 sompi per gram
of mass**. `calculate_transaction_fee` and the fee-estimate buckets are floored at
this rate, and any explicit `fee_rate` you supply must meet it or the node rejects
the transaction.

## Querying the fee rate

The network exposes a fee estimator over RPC — see
Expand Down
2 changes: 1 addition & 1 deletion docs/learn/wallet-sdk/tx-generator.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ gen = Generator(
priority_entries=priority, # UTXOs to consume first
sig_op_count=1, # signature ops per input
minimum_signatures=1, # for multisig mass estimation
fee_rate=2.0, # explicit sompi/gram override
fee_rate=120.0, # explicit sompi/gram override (>= network minimum)
)
```

Expand Down
Loading
Loading