BRC-175: 1Sat Fungible Basket Profile - #237
GenericCPU wants to merge 6 commits into
Conversation
Shared-origin fungible tips (1 tip = 1 unit), basket 1sat-ft, mint-batch binding, open/locked supply; imports BRC-150 provenance format. Co-authored-by: Cursor <cursoragent@cursor.com>
Replace tip-count v1 with amt + split/change conservation; locked supply is optional on the origin. Co-authored-by: Cursor <cursoragent@cursor.com>
0166 was provisional; 0175 is free on upstream. Same basket profile content. Co-authored-by: Cursor <cursoragent@cursor.com>
Readers and writers use 1sat-ft only. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Is this stuff using the BRC98/99 semantics like BTMS does, at the wallet layer? Or is this operating above that and just reserving the basket name for the application layer? |
Spell out that bare 1-sat tip moves are shared with collectables, so chain scan must not auto-file them into basket 1sat, and FT lineage must not paint as NFT. Documents old-client misfile / burn risk. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Wallet layer. 1sat-ft is a BRC-98/99 basket via BRC-100 createAction/listOutputs, same filing primitive BTMS uses, not an overlay token protocol. The 175 rules (origin, amt, 1-sat tips) sit on top of that basket. We’re reserving the name so wallets don’t file these into 1sat. |
|
I’m stuck on amt after a split — want to make sure I’m reading it right. Genesis tip amt=1000. Spend it, two 1-sat outputs, remittance says 400 and 600.
|
raspi-user
left a comment
There was a problem hiding this comment.
I reviewed BRC-175. I like the goal of giving wallets a shared 1sat-ft basket for fungible 1Sat-style holdings, but I do not think this is merge-ready yet.
The main blocker is that amt is not independently bound to the new carrier outputs. BRC-150/BRC-159 can prove continuity of a physical sat, but this proposal explicitly allows splitting one fungible tip into multiple newly funded 1-sat carrier outputs. Those extra carrier sats are not ordinal descendants of the origin sat. So unless the full transfer state is committed somewhere verifiable, a receiver cannot independently know whether their output has 400, 600, or whether the sender has claimed 1000 to multiple recipients.
I think the spec needs a deterministic transfer commitment model before merge: either an on-chain manifest, a signed action-level remittance, or another canonical structure that binds all input tips, all output tips, their amt values, and the conservation equation. Each recipient must be able to verify their own received tip without trusting the sender's private per-output metadata.
There are also secondary issues to tighten:
-
Open-supply semantics need to be made coherent. The draft says unlocked/open supply has no cap, but also says
mint.extendis not binding and new tips still need genesis, mint-batch, BRC-150, or a proven parent hop. That makes post-genesis issuance unclear or impossible. -
Mint-batch
amtvalues need independent verification. If siblingamtvalues live only in remittance and are not committed on-chain, a receiver cannot verify the batch total againstmaxwithout trusting supplied metadata. -
BRC-150 extension to
1sat-ftshould be explicit. BRC-150 currently defines provenance for basket1sat; this PR says1sat-ftwallets must accept it unchanged. That probably needs either a BRC-150 erratum in the same PR or precise compatibility language. -
amt/maxinteger canonicalization is missing. Please define JSON type, no-leading-zero rules, maximum supported size, parser failure behaviour, and whether0, negative values, decimals, exponent notation, or oversized values are invalid. -
The origin content type should be normative. BRC-147 now references
application/1sat-ft+json, but BRC-175 does not clearly require that content type for the origin envelope. -
Conformance vectors should cover the failure cases. This proposal needs machine-readable examples for genesis, locked mint, split, merge, invalid double-claim, missing sibling remittance, parent-hop failure, open-mint rejection, and old-client misfile cases.
Overall: promising direction, but the current draft's fungibility depends too heavily on uncommitted remittance data. The transfer/conservation proof needs to be as deterministic as the basket naming before this becomes a BRC.
Summary
Adds BRC-175: fungible 1Sat tokens as 1-sat tips sharing one origin, each with face-value
amt(balance = Σamt).1sat-ft(separate from NFT1sat)amt; imports BRC-150 provenancesupply+maxon origin); omit when uncappedamt⇒ 1 (legacy)1saton “spent a 1-sat parent” alone; FT lineage (application/1sat-ft+json) MUST NOT paint as NFT. Documents old-client misfile / burn risk. Cross-note added on BRC-147 Compatibility / Security.Number: 175 (was briefly drafted as 166; 175 is free on upstream).
Implemented in HandCash wallet for hold/send/receive; mint via BRC-100 / Mint Studio.
Test plan
1sat-ftis acceptable