Minimal contoh proyek FHE untuk encrypted on-chain voting menggunakan Zama fhEVM.
- Suara dikirim dalam bentuk terenkripsi (
euint8) dan dihitung tanpa dekripsi. - Tally (perolehan suara) disimpan sebagai
euint64terenkripsi. allowResults(addr)memberi izin dekripsi hasil kepada alamat tertentu (off-chain via coprocessor).- Contoh test Foundry dengan helper
createEncryptedInput.
Catatan: Paket & tool
@fhevmharus tersedia (lihat bagian Setup). Kontrak ini mengimpor@fhevm/solidity/lib/FHE.sol(API baru).
- Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup- Init NPM dan install dependensi fhEVM Solidity
npm init -y
npm install @fhevm/solidity- Konfigurasi remappings (opsional jika diperlukan)
Tambahkan di
foundry.toml:
remappings = ["@fhevm/solidity/=node_modules/@fhevm/solidity/"]
- Compile & Test
forge build
forge test -vv- Deploy (contoh)
Edit
script/Deploy.s.soluntuk chain yang kamu pakai, lalu:
forge script script/Deploy.s.sol --rpc-url <RPC_URL> --private-key <PK> --broadcast- Pengguna mengirim
encChoice(terenkripsi) kevote(encChoice). - Kontrak menggunakan operasi FHE (
eq,not,cmux,add) untuk menambah tally kandidat terkait. - Siapa pun tidak bisa melihat isi suara; hanya alamat yang di-allow yang dapat mendekripsi hasil melalui coprocessor.
Ini contoh minimal untuk edukasi/testnet. Sesuaikan dengan versi SDK fhEVM yang kamu pakai.