Skip to content

Feat/v0.5.0plus - #217

Open
spacesops wants to merge 32 commits into
spacesprotocol:mainfrom
spacesops:feat/v0.5.0plus
Open

spacesops wants to merge 32 commits into
spacesprotocol:mainfrom
spacesops:feat/v0.5.0plus

Conversation

@spacesops

Copy link
Copy Markdown

Buffrr, I've been holding back these changes until things got released and stabilized.

Unfortunately it probably looks like a mess from your standpoint. Most are just enhancements and convenient changes to space-cli and underlying things as needed.

However, you pulled out message signing and I'm relying on that to validate a top-level name holder to my platform. This wasn't a big deal if the user was using the StartOS install since I use my variant in the package. But today I was adding operation and delegation features to Akron and had to use my versions of things to maintain the signing feature.

I could publish my own versions of the crates but stopped short figuring it would create more mess that necessary.

I also can't build my version of Akron for windows from my Mac without going through a lot of hoops.

Best to take a look and let's discuss if you have any objections to my mods. -Andrew

spacesops and others added 30 commits March 31, 2026 16:11
Implements the TX_CALLBACK_API: clients can register HTTP endpoints
and watch-lists of txids; when a watched tx appears in a block the
daemon POSTs a JSON notification asynchronously without blocking
block processing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Exposes Bitcoin Core estimatesmartfee via RPC and CLI,
converting BTC/kB to sat/vB for convenient fee estimation.

Made-with: Cursor
Brings in 16 upstream commits (v0.0.9 bump, bug fixes, lint fixes):
- Graceful handling of revoked-space data inconsistency in
  protocol/src/script.rs, client/src/store/spaces.rs, and
  client/src/client.rs (replaces .expect() panics)
- Wallet recovery now scans from genesis block height instead of
  current chain tip
- Rust lifetime lint fixes across wallet and protocol crates
- macOS GitHub Actions fix
- [workspace.package] version = "0.0.9" added to Cargo.toml

Conflict resolutions:
- veritas/: kept deletion (crate was removed in borsh refactor)
- Cargo.toml: adopted [workspace.package] block, kept branch members/deps
- Cargo.lock: kept branch version, dropped obsolete spaces_veritas entry
- client/src/bin/space-cli.rs: trivial whitespace conflict, kept HEAD
- client/src/client.rs: kept branch named-method API for Expired revoke
- client/src/store/spaces.rs: dropped upstream old open_db function
- protocol/src/script.rs: applied graceful fix to load_open_context,
  discarded upstreams eval/op_open restructure (branch uses different layout)

Made-with: Cursor
Made-with: Cursor

# Conflicts:
#	client/src/wallets.rs
- Add Subject::Handle(SName) with FromStr: multi-label names (e.g. sub@space)
  parse as handles; single-label SNames map to Label for backward compatibility.
- Reject handles in wallet/RPC paths that require a concrete space or num
  (setfallback, transfer, operate, delegate, etc.).
- Implement get_fallback for handles: scan merged spaces/nums block index for
  SIP-7 payloads with TXT key "handle" matching the canonical handle string;
  return the latest match by height and tx position when available.
- Add SqliteIndex list_*_blocks_merged, Chain helpers, and
  ChainStateCommand::FindFallbackByHandle.
- Update rpc schema docs for getfallback; add unit tests for parsing and scan.

Made-with: Cursor
Support * (multi-char) and ? (single-char) wildcards in getfallback
subjects. Space-name patterns (@*, @m?d) match SIP-7 TXT records with
key "space"; handle patterns (*@mad, *@*) match TXT records with key
"handle". Returns a JSON object keyed by matched name.

- Add Subject::HandlePattern variant for wildcard-containing inputs
- Unified merge_scan_txt_wildcard scans indexed blocks by TXT key
- Change get_fallback RPC return type to serde_json::Value
- Add ChainStateCommand::SearchFallbackByPattern
- Reject HandlePattern in wallet/transfer/operate/setfallback paths
- 17 unit tests for glob matching, scan, and key isolation

Made-with: Cursor
Bring in upstream release/CI and crate updates while preserving subspacesplus RPC and callback functionality, and resolve merge conflicts to keep local feature behavior intact.

Co-authored-by: Cursor <cursoragent@cursor.com>
Share setfallback payload flags across commands, extend CreateNum RPC/CLI
with optional data, and emit OP_RETURN payloads when binding new nums so
fallback records can be set atomically at creation time.

Co-authored-by: Cursor <cursoragent@cursor.com>
Integrate upstream num rebind/unbind support, checkpoint v2 DB changes,
and v0.2.1 release while preserving local features: createnum fallback
data, listnums, tx callbacks, getfallback, and signevent.

Co-authored-by: Cursor <cursoragent@cursor.com>
Brings in upstream's num buy/sell support and externally-signed transfer
PSBT funding, keeping the local createnum fallback-data, ListNums, and
handle/wildcard Subject work.

Conflict resolutions:
- wallet/src/lib.rs: took upstream's reworked Listing/verify_listing/buy
  and sell (local side had only formatting changes there); kept both the
  local subject_tests and upstream's transfer_tests modules.
- wallet/src/lib.rs: resolve_listing_subject now rejects Subject::Handle
  and Subject::HandlePattern, which upstream's match did not know about.
- client/src/rpc_schema.rs: union of both sides, re-adding the local
  listnumsbyspk and walletcreatenum methods (50 total).
- client/src/wallets.rs: import merge to pick up Psbt.

Also restores the RpcClient import in ptr_tests.rs and completes
CreateNumParams initializers, which were already broken before the merge.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ing.

Wallet send now supports dry_run so createnum and setfallback can show the SIP-7 payload and the raw transaction that would have been broadcast.

Co-authored-by: Cursor <cursoragent@cursor.com>
getnum now returns a records array when on-chain num data is valid SIP-7, so callers do not have to unpack the raw payload themselves.

Co-authored-by: Cursor <cursoragent@cursor.com>
… address.

Dump live nums chain-wide, optionally keep SIP-7 TXT matches (type=* or
type=nsite-gateway). createnum prints num1…, the 5120 script pubkey, and
taproot address, including --dry-run.

Co-authored-by: Cursor <cursoragent@cursor.com>
Stop prepending @ so num1… and #numeric subjects parse correctly and
the tweaked private key can be exported for wallet-owned nums.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep feat extras (getallnums/getallspaces, createnum dry-run, getprivtweak,
callbacks, estimatefee, signing) together with main trust ids, genesis wallet
recovery, and root-anchors cache rebuild. Regenerated Cargo.lock.

Co-authored-by: Cursor <cursoragent@cursor.com>
Brings in the committed_fallback option for buildchainproof so cert relays
can resolve a record right after a commitment moves its outpoint, instead of
erroring until the next commit interval.

Conflicts were confined to imports and the num-resolution loop in
build_chain_proof. Our copy of that loop differed from the merge base only in
line wrapping, so the upstream collect_proof_keys refactor was taken as-is.
Kept feat extras alongside the new upstream helpers: get_all_nums and
list_live_nums_with_script_pubkey sit next to live_snapshots_mut and
committed_snapshots.

Co-authored-by: Cursor <cursoragent@cursor.com>
Export both the Nostr nsec and the 32-byte private key so the same signing key can be used for a space or a num.

Co-authored-by: Cursor <cursoragent@cursor.com>
@buffrr

buffrr commented Oct 11, 2026

Copy link
Copy Markdown
Member

For the sign message, dont we already have "walletsignschnorr" and "verifyschnorr" RPCs ? it doesn't exist in space-cli yet only rpc side. Would that solve your problem?

If so, perhaps a small PR to space-cli to add that would be sufficient?

small diffs are quicker to review. Any other features that spaces doesn't have but exist in your version you would like to discuss?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants