ACT (Swarm-Act header) is currently accepted on POST /soc/{owner}/{id} and POST /chunks, but in both cases it is either semantically broken, end-to-end non-functional, or misaligned with the purpose of those endpoints.
POST /soc/{owner}/{id} — remove ACT
- Data is never encrypted. The SOC chunk is stored in plaintext before ACT runs. ACT then wraps only the reference, not the payload.
- Reference protection is meaningless. A SOC address is deterministically derived from
owner + id and publicly computable — encrypting a reference to it provides no protection.
- Logical inconsistency.
putter.Done is called on the original SOC address, but an ACT-encrypted address (a different address space) is returned to the caller.
- No decryption path exists.
GET /soc/{owner}/{id} has no ACT decryption middleware at all. There is no way to resolve an ACT-wrapped SOC reference back to its canonical endpoint, making any upload with Swarm-Act on this endpoint completely unusable end-to-end.
The owner-based signing model of SOC already provides a natural identity/access primitive; ACT is incompatible with it and should be removed from this endpoint.
POST /chunks — remove ACT
- Data is never encrypted. Raw chunks are content-addressed plaintext. ACT wraps only the content-hash reference, not the data — unlike the BZZ pipeline where the payload is actually encrypted before chunking.
- Wrong abstraction layer. The chunk endpoint exists for atomic, low-level chunk operations — used by tooling that manages chunk-level storage directly. It does not expose file-level semantics like the BZZ or bytes endpoints do. ACT is a file-access-control feature and does not belong at this layer.
Proposal:
- Remove
Swarm-Act / Swarm-Act-History-Address header support from POST /soc/{owner}/{id} and POST /chunks.
- ACT should remain only on upload paths where the pipeline performs actual payload encryption: BZZ, bytes, and file/collection endpoints.
ACT (
Swarm-Actheader) is currently accepted onPOST /soc/{owner}/{id}andPOST /chunks, but in both cases it is either semantically broken, end-to-end non-functional, or misaligned with the purpose of those endpoints.POST /soc/{owner}/{id}— remove ACTowner + idand publicly computable — encrypting a reference to it provides no protection.putter.Doneis called on the original SOC address, but an ACT-encrypted address (a different address space) is returned to the caller.GET /soc/{owner}/{id}has no ACT decryption middleware at all. There is no way to resolve an ACT-wrapped SOC reference back to its canonical endpoint, making any upload withSwarm-Acton this endpoint completely unusable end-to-end.The owner-based signing model of SOC already provides a natural identity/access primitive; ACT is incompatible with it and should be removed from this endpoint.
POST /chunks— remove ACTProposal:
Swarm-Act/Swarm-Act-History-Addressheader support fromPOST /soc/{owner}/{id}andPOST /chunks.