# SPF Documentation > Complete documentation for Sunscreen SPF (Sunscreen Processing Framework) testnet - Fully Homomorphic Encryption on blockchain This file contains links to documentation sections following the llmstxt.org standard. ## Table of Contents - [Access control](https://spf-docs.sunscreen.tech/docs/acl): Access control ensures only the appropriate parties have access to encrypted data. SPF manages access control during the lifecycle of a ciphertext ... - [Access control](https://spf-docs.sunscreen.tech/docs/acl3): Access control ensures that only the appropriate parties can decrypt ciphertext data (i.e. can access the underlying plaintext data). - [What is the Sunscreen SPF?](https://spf-docs.sunscreen.tech/docs/arch): Sunscreen's Secure Processing Framework (SPF) is a comprehensive end-to-end platform that enables writing, deploying, and using FHE programs on-cha... - [Benchmarks](https://spf-docs.sunscreen.tech/docs/benchmarks): Please see our dedicated [repo](https://github.com/Sunscreen-tech/spf-benchmark) for benchmarks and how to run them! - [Compiling FHE programs](https://spf-docs.sunscreen.tech/docs/build): Say we had the following FHE program: - [Decryption](https://spf-docs.sunscreen.tech/docs/cipher): After an FHE program executes on encrypted inputs, the plaintext result can be retrieved through threshold decryption. - [Decryption](https://spf-docs.sunscreen.tech/docs/decrypt3): After an FHE program executes on encrypted inputs, the plaintext result can be retrieved through threshold decryption. This section covers requesti... - [Downloading programs and ciphertexts](https://spf-docs.sunscreen.tech/docs/download): To maintain local copies of FHE programs and encrypted inputs, both programs and ciphertexts can be downloaded using the TypeScript client library. - [Compile the voting program with clang, targeting the parasol CPU](https://spf-docs.sunscreen.tech/docs/example/compile-program): We want to run a voting system for an issue near and dear to our hearts: whether to adopt a dog as our office pet. We could poll everyone in the of... - [Setup Clang](https://spf-docs.sunscreen.tech/docs/example/setup-clang): For the FHE programs, we will need the version of `clang` that supports the Parasol processor. Information can be found for [installing clang](inst... - [Upload the compiled voting program to SPF. The command outputs](https://spf-docs.sunscreen.tech/docs/example/uploading): To use the compiled program on-chain, the binary must be stored by the SPF service. The SPF client provides an upload utility that stores the progr... - [Web2 Multi Wallet](https://spf-docs.sunscreen.tech/docs/example/web2-multi-wallet) - [End-to-end private voting on the web](https://spf-docs.sunscreen.tech/docs/example2): This section walks through building and deploying an encrypted voting application using SPF. This example demonstrates the web2 approach, where app... - [End-to-end private voting on the blockchain](https://spf-docs.sunscreen.tech/docs/example3): This section walks through building and deploying an encrypted voting application using SPF. This example demonstrates the web3 approach, where sma... - [FAQ](https://spf-docs.sunscreen.tech/docs/faq): This depends on three things -- how long it takes the FHE program to be run, when a decryption is requested, and the block time of the host chain (... - [What features does SPF offer?](https://spf-docs.sunscreen.tech/docs/features): This section covers FHE programs supported today and SPF's current features. - [What is FHE?](https://spf-docs.sunscreen.tech/docs/fhe): Fully Homomorpic Encryption is a technology that enables running arbitrary computer programs directly over encrypted data. What's magical about it ... - [Installation and initialization](https://spf-docs.sunscreen.tech/docs/init): Before using any SPF functions, installation and initialization are required. This page covers installing the TypeScript client library, initializa... - [Installation](https://spf-docs.sunscreen.tech/docs/inst): Building, deploying, and running applications on SPF requires several tools: the Parasol compiler for FHE programs, the testnet client for interact... - [Introduction](https://spf-docs.sunscreen.tech/docs/intro): [Fully homomorphic encryption](https://blog.sunscreen.tech/an-intro-to-fully-homomorphic-encryption-for-engineers/) (aka FHE) enables running arbit... - [Current limitations](https://spf-docs.sunscreen.tech/docs/limits): There are a few limitations on what you can do with FHE programs today. - [Interacting with SPF in a smart contract](https://spf-docs.sunscreen.tech/docs/onchain): To facilitate interaction with SPF in Web3, we have developed a smart contract library that is [open source](https://github.com/Sunscreen-tech/suns... - [Comparisons, Branching, and Loops](https://spf-docs.sunscreen.tech/docs/operations): Programs are often written with control flow structures such as conditionals and loops in order to repeat actions or change the flow of execution b... - [Preliminary knowledge](https://spf-docs.sunscreen.tech/docs/prelim): This section will help in understanding some of the terminology we use in SPF. Note that it is a brief introduction and we do have a [more comprehe... - [Reencryption](https://spf-docs.sunscreen.tech/docs/recrypt): At a high level, reencryption in SPF transforms a ciphertext decryptable with respect to the committee's private key to a ciphertext decryptable by... - [Requesting program runs](https://spf-docs.sunscreen.tech/docs/run): Once programs are uploaded and users have provided encrypted inputs, program runs can be requested from SPF. This section covers parameter encoding... - [Requesting program runs](https://spf-docs.sunscreen.tech/docs/run3): Once programs are uploaded and users have provided encrypted inputs, program runs can be requested from SPF. This section covers parameter encoding... - [Using SPF in web2](https://spf-docs.sunscreen.tech/docs/service): This section covers using Sunscreen's Secure Processing Framework (SPF) in web2 applications via the TypeScript client library. - [Init Required](https://spf-docs.sunscreen.tech/docs/snippets/init-required):