docs(faq): real numbers in the cost Q&A#30
Conversation
Answer 'isn't hitting the enclave every time expensive?' with the measured ~20 tokens/op, the frequency×value framing, and the cost levers; link to the README Cost section. Co-authored-by: algsoch <algsoch@gmail.com>
PR Summary by Qododocs(faq): quantify enclave op costs and explain release-once-reuse
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo
1. Plaintext caching risk
|
| ### Is there a cost? Isn't hitting an enclave every time expensive? | ||
| Fair question. Every *use* of a key is a metered Terminal 3 enclave op — unlike reading a plaintext env var (free but leakable). But it's small: measured live, **~20 tokens per operation** (a `use`/release or a proxy forward). The self-serve `signup` grant (~20,000 tokens) is **~1,000 uses**, free, on testnet. `blindfold credit` shows your balance; `blindfold doctor` flags an out-of-credit tenant explicitly. | ||
|
|
||
| Whether that's "expensive" is **frequency × value**: for the high-value keys Blindfold is built for (deploy tokens, payment/admin creds, keys you hand to autonomous agents), ~20 tokens per use is a rounding error next to a breach. For a low-value key hit thousands of times a second, use **release-once-reuse** — `release()` hands the plaintext to your process, so you cache it for a burst and pay **one op for N calls** instead of N ops. Also: **seal selectively** (only what would hurt if leaked) and use the **proxy where the guarantee is worth it**. See the [Cost section in the README](README.md#cost) for the full breakdown. |
There was a problem hiding this comment.
1. Plaintext caching risk 🐞 Bug ⛨ Security
FAQ.md recommends caching plaintext returned by release() (“release-once-reuse”) to reduce per-call enclave ops, but it omits the explicit security trade-off that the secret now resides in-process for that cache window. Readers may over-cache and unintentionally weaken the “agent never had the key” posture.
Agent Prompt
### Issue description
The FAQ’s “release-once-reuse” guidance encourages caching plaintext returned by `release()` but doesn’t explicitly warn that this increases plaintext residency in the application process, which is a deliberate security trade-off.
### Issue Context
The project already documents this trade-off elsewhere (README cost section + `release()` source-level security note), but the new FAQ text currently reads as purely a cost optimization.
### Fix Focus Areas
- FAQ.md[217-220]
### Suggested change
Add a short parenthetical immediately after the “release-once-reuse” sentence, e.g.:
- note that caching keeps the secret in your process memory for that window,
- recommend keeping the cache scope/lifetime minimal,
- remind not to log/persist the plaintext,
- optionally link to README Cost section for the trade-off wording.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| ### Is there a cost? | ||
| T3 runs on credits (testnet credits are free to request). Writes (seal, publish, grant) and contract executes consume credits; reads are cheap. `blindfold doctor` flags an out-of-credit tenant (403) explicitly. | ||
| ### Is there a cost? Isn't hitting an enclave every time expensive? | ||
| Fair question. Every *use* of a key is a metered Terminal 3 enclave op — unlike reading a plaintext env var (free but leakable). But it's small: measured live, **~20 tokens per operation** (a `use`/release or a proxy forward). The self-serve `signup` grant (~20,000 tokens) is **~1,000 uses**, free, on testnet. `blindfold credit` shows your balance; `blindfold doctor` flags an out-of-credit tenant explicitly. |
There was a problem hiding this comment.
2. Tokens/credits ambiguity 🐞 Bug ⚙ Maintainability
FAQ.md describes cost in “tokens” but also uses “out-of-credit” wording, while other docs and the CLI use both “tokens” and “credits” without clearly stating they’re the same balance/unit. This inconsistency can confuse users about what blindfold credit reports and what resource they need to top up.
Agent Prompt
### Issue description
Terminology around metered units fluctuates between “tokens” and “credits” in user-facing docs and CLI output. The updated FAQ leans on “tokens” while still saying “out-of-credit,” which can read like two separate things.
### Issue Context
- README uses both terms in different sections.
- The CLI `blindfold credit` output shows “tokens” while the UI/title/top-up text says “credit/credits.”
### Fix Focus Areas
- FAQ.md[217-218]
### Suggested change
Add a one-liner in the FAQ clarifying equivalence, e.g. “Terminal 3 calls these metered units tokens (aka credits); `blindfold credit` shows this balance.”
Optionally, standardize on one term across docs in a follow-up PR.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Upgrades the existing 'Is there a cost?' FAQ entry to answer 'isn't hitting an enclave every time expensive?' honestly: measured ~20 tokens/op, ~1,000 free uses on testnet, frequency×value framing, and release-once-reuse. Links to the README Cost section.
Co-authored-by: algsoch algsoch@gmail.com
Summary by cubic
Updates the “Is there a cost?” FAQ with real numbers and clear guidance, directly answering “Isn’t hitting an enclave every time expensive?”.
Specifies ~20 tokens per operation, the ~20k-token
signupgrant (~1,000 free testnet uses), the frequency × value framing, when to userelease()for reuse (one op for N calls), how to check balance withblindfold creditandblindfold doctor, and links to the README Cost section.Written for commit 588a758. Summary will update on new commits.