Skip to content

Latest commit

ย 

History

History
430 lines (347 loc) ยท 19.8 KB

File metadata and controls

430 lines (347 loc) ยท 19.8 KB

๐Ÿ” ้€š็”จFHEVM SDK

ไธ€ไธชๆก†ๆžถๆ— ๅ…ณ็š„ๅทฅๅ…ทๅŒ…๏ผŒๅธฎๅŠฉๅผ€ๅ‘่€…่ฝปๆพๆž„ๅปบๆœบๅฏ†dAppใ€‚้‡‡็”จๆจกๅ—ๅŒ–้€‚้…ๅ™จๆžถๆž„๏ผŒๅฏๅœจReactใ€Next.jsใ€Vueๅ’ŒNode.js็Žฏๅขƒไธญๆ— ็ผๅทฅไฝœใ€‚

๐ŸŽฅ ่ง†้ข‘ๆผ”็คบ

YouTube

่ง‚็œ‹้€š็”จFHEVM SDK็š„ๅฎž้™…ๆผ”็คบ๏ผ ๆŸฅ็œ‹ๆ‰€ๆœ‰ๅฑ•็คบ็š„ๅฎžๆ—ถๆผ”็คบ๏ผŒๅญฆไน ๅฆ‚ไฝ•ๅœจๆ‚จ็š„้กน็›ฎไธญไฝฟ็”จ้€‚้…ๅ™จใ€‚

๐Ÿ‘‰ ๅœจYouTubeไธŠ่ง‚็œ‹

๐ŸŒ ๅฎžๆ—ถ็คบไพ‹

ๆ‰€ๆœ‰็คบไพ‹้ƒฝๅœจSepoliaๆต‹่ฏ•็ฝ‘ไธŠ่ฟ่กŒ็œŸๅฎž็š„FHEVMไบคไบ’๏ผš

ๅˆ็บฆ่ฏฆๆƒ…๏ผš

  • FHE่ฎกๆ•ฐๅ™จๅˆ็บฆ๏ผš 0xead137D42d2E6A6a30166EaEf97deBA1C3D1954e
  • ่ฏ„ๅˆ†ๅˆ็บฆ๏ผš 0xcA2430F1B112EC25cF6b6631bb40039aCa0C86e0
  • ๆŠ•็ฅจๅˆ็บฆ๏ผš 0x7294A541222ce449faa2B8A7214C571b0fCAb52E
  • ็ฝ‘็ปœ๏ผš Sepoliaๆต‹่ฏ•็ฝ‘ (้“พID: 11155111)

๐ŸŒ ่ฏญ่จ€ / Languages / Langues

English Franรงais ไธญๆ–‡

๐Ÿ“ ๆžถๆž„ๆฆ‚่ฟฐ

SDKๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ้€š็”จFHEVM SDK                                    โ”‚
โ”‚                      packages/fhevm-sdk/                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                  โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚                       โ”‚                       โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚    ๆ ธๅฟƒ    โ”‚          โ”‚    ้€‚้…ๅ™จ      โ”‚      โ”‚     ๅฑ•็คบ      โ”‚
    โ”‚src/core/  โ”‚          โ”‚src/adapters/  โ”‚      โ”‚  packages/    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                        โ”‚                       โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                                                             โ”‚
    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”‚
    โ”‚  โ”‚fhevm.ts  โ”‚     โ”‚contracts.โ”‚     โ”‚index.ts  โ”‚           โ”‚
    โ”‚  โ”‚          โ”‚     โ”‚ts        โ”‚     โ”‚(exports) โ”‚           โ”‚
    โ”‚  โ”‚-initializeโ”‚    โ”‚          โ”‚     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ”‚
    โ”‚  โ”‚-createEncโ”‚    โ”‚-FhevmCon โ”‚                              โ”‚
    โ”‚  โ”‚-decrypt  โ”‚    โ”‚tract     โ”‚                              โ”‚
    โ”‚  โ”‚-publicDecโ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                              โ”‚
    โ”‚  โ”‚-test/    โ”‚                                               โ”‚
    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                               โ”‚
    โ”‚                                                             โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                  
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚                                       โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  react.ts โ”‚      โ”‚  vue.ts   โ”‚    โ”‚  node.ts  โ”‚
    โ”‚           โ”‚      โ”‚           โ”‚    โ”‚           โ”‚
    โ”‚useWallet  โ”‚      โ”‚useWalletVueโ”‚   โ”‚FhevmNode  โ”‚
    โ”‚useFhevm   โ”‚      โ”‚useFhevmVue โ”‚   โ”‚(class)    โ”‚
    โ”‚useContractโ”‚      โ”‚useContract โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚useEncrypt โ”‚      โ”‚useEncrypt  โ”‚
    โ”‚useDecrypt โ”‚      โ”‚useDecrypt  โ”‚
    โ”‚useFhevmOpsโ”‚      โ”‚useFhevmOps โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                  
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚                                       โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚react-showcase โ”‚  โ”‚nextjs-showcase โ”‚  โ”‚ vue-showcase  โ”‚
    โ”‚               โ”‚  โ”‚                โ”‚  โ”‚               โ”‚
    โ”‚App.tsx        โ”‚  โ”‚page.tsx        โ”‚  โ”‚App.vue         โ”‚
    โ”‚FheCounter     โ”‚  โ”‚components/     โ”‚  โ”‚components/     โ”‚
    โ”‚FheRatings     โ”‚  โ”‚FHECounter      โ”‚  โ”‚FHECounter      โ”‚
    โ”‚FheVoting      โ”‚  โ”‚FHERatings      โ”‚  โ”‚FHERatings      โ”‚
    โ”‚               โ”‚  โ”‚SimpleVoting    โ”‚  โ”‚SimpleVoting    โ”‚
    โ”‚               โ”‚  โ”‚test/           โ”‚  โ”‚test/           โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                            
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚        node-showcase                     โ”‚
    โ”‚                                         โ”‚
    โ”‚  index.ts     server.ts    explorer.ts  โ”‚
    โ”‚  counter.ts   voting.ts    ratings.ts   โ”‚
    โ”‚                                         โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ•ฐๆฎๆตๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ react-showcase  โ”‚      โ”‚ vue-showcase    โ”‚      โ”‚ node-showcase   โ”‚
โ”‚                 โ”‚      โ”‚                 โ”‚      โ”‚                 โ”‚
โ”‚ App.tsx         โ”‚      โ”‚ App.vue         โ”‚      โ”‚ index.ts        โ”‚
โ”‚ FheCounter.tsx  โ”‚      โ”‚ FheCounter.vue  โ”‚      โ”‚ counter.ts      โ”‚
โ”‚ FheRatings.tsx  โ”‚      โ”‚ FheRatings.vue  โ”‚      โ”‚ voting.ts       โ”‚
โ”‚ FheVoting.tsx   โ”‚      โ”‚ FheVoting.vue   โ”‚      โ”‚ ratings.ts      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                        โ”‚                        โ”‚
         โ”‚ import { useWallet,    โ”‚ import { useWalletVue,โ”‚ import { FhevmNode
         โ”‚         useFhevm,      โ”‚         useFhevmVue } โ”‚         } from
         โ”‚         useEncrypt,    โ”‚         } from         โ”‚         '@fhevm-sdk'
         โ”‚         useDecrypt }   โ”‚         '@fhevm-sdk'   โ”‚
         โ”‚ from '@fhevm-sdk'      โ”‚                        โ”‚
         โ”‚                        โ”‚                        โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                  โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚   @fhevm-sdk/src/          โ”‚
                    โ”‚                           โ”‚
                    โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
                    โ”‚   โ”‚  adapters/react.ts  โ”‚ โ”‚
                    โ”‚   โ”‚  adapters/vue.ts     โ”‚ โ”‚
                    โ”‚   โ”‚  adapters/node.ts   โ”‚ โ”‚
                    โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
                    โ”‚              โ”‚            โ”‚
                    โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
                    โ”‚   โ”‚   core/index.ts     โ”‚ โ”‚
                    โ”‚   โ”‚   core/fhevm.ts     โ”‚ โ”‚
                    โ”‚   โ”‚   core/contracts.ts โ”‚ โ”‚
                    โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                   โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚      Zama Relayer SDK       โ”‚
                    โ”‚   (@zama-fhe/relayer-sdk)   โ”‚
                    โ”‚                             โ”‚
                    โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
                    โ”‚   โ”‚ createInstance()      โ”‚ โ”‚
                    โ”‚   โ”‚ createEncryptedInput โ”‚ โ”‚
                    โ”‚   โ”‚ decryptValue()       โ”‚ โ”‚
                    โ”‚   โ”‚ publicDecrypt()      โ”‚ โ”‚
                    โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ—๏ธ ้กน็›ฎ็ป“ๆž„

fhevm-react-template/
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ fhevm-sdk/                    # ้€š็”จFHEVM SDKๆ ธๅฟƒ
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                 # ๆ ธๅฟƒFHEVMๅŠŸ่ƒฝ
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ fhevm.ts         # FHEVMๅฎขๆˆท็ซฏๅˆๅง‹ๅŒ–
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ contracts.ts      # ๅˆ็บฆไบคไบ’
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ adapters/             # ๆก†ๆžถ็‰นๅฎš้€‚้…ๅ™จ
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ react.ts          # React hooks (re-exports)
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useWallet.ts      # ้’ฑๅŒ…่ฟžๆŽฅhook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useFhevm.ts       # FHEVMๅฎžไพ‹hook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useContract.ts    # ๅˆ็บฆไบคไบ’hook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useEncrypt.ts     # ๅŠ ๅฏ†hook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useDecrypt.ts     # ่งฃๅฏ†hook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ useFhevmOperations.ts  # ็ป„ๅˆๆ“ไฝœhook
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ vue.ts            # Vue็ป„ๅˆๅผๅ‡ฝๆ•ฐ
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ node.ts           # Node.js็ฑป้€‚้…ๅ™จ
โ”‚   โ”‚   โ””โ”€โ”€ dist/                     # ๆž„ๅปบ่พ“ๅ‡บ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ react-showcase/               # React็คบไพ‹
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ App.tsx               # ไธปๅบ”็”จ (ไฝฟ็”จ้€‚้…ๅ™จ)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ components/
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ FheCounter.tsx    # ไฝฟ็”จ useEncrypt, useDecrypt
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ FheRatings.tsx    # ไฝฟ็”จ useEncrypt, useDecrypt
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ FheVoting.tsx    # ไฝฟ็”จ useEncrypt
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ nextjs-showcase/              # Next.js็คบไพ‹
โ”‚   โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ page.tsx              # ไธป้กต้ข (ไฝฟ็”จ้€‚้…ๅ™จ)
โ”‚   โ”‚   โ””โ”€โ”€ components/                # ไธŽReact showcase็›ธๅŒ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ vue-showcase/                 # Vue็คบไพ‹
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ App.vue              # ไธปๅบ”็”จ (ไฝฟ็”จ็ป„ๅˆๅผๅ‡ฝๆ•ฐ)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ components/
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ FheCounter.vue    # ไฝฟ็”จ useEncryptVue, useDecryptVue
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ FheRatings.vue   # ไฝฟ็”จ useEncryptVue, useDecryptVue
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ FheVoting.vue    # ไฝฟ็”จ useEncryptVue
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ node-showcase/                # Node.js็คบไพ‹
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.ts              # ไธปๅ…ฅๅฃ (ไฝฟ็”จ FhevmNode)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ counter.ts            # ่ฎกๆ•ฐๅ™จๆผ”็คบ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ voting.ts             # ๆŠ•็ฅจๆผ”็คบ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ratings.ts            # ่ฏ„ๅˆ†ๆผ”็คบ
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ hardhat/                      # ๆ™บ่ƒฝๅˆ็บฆ
โ”‚       โ”œโ”€โ”€ contracts/                # Solidityๅˆ็บฆ
โ”‚       โ””โ”€โ”€ deploy/                   # ้ƒจ็ฝฒ่„šๆœฌ
โ”‚
โ”œโ”€โ”€ pnpm-workspace.yaml                 # Monorepo้…็ฝฎ
โ””โ”€โ”€ README.md                           # ๆœฌๆ–‡ไปถ

๐Ÿ”ง ้€‚้…ๅ™จ็ณป็ปŸ

้€‚้…ๅ™จๅทฅไฝœๅŽŸ็†

้€š็”จFHEVM SDK้‡‡็”จๆธ…ๆ™ฐ็š„้€‚้…ๅ™จๆžถๆž„๏ผš

  1. ๆ ธๅฟƒๆไพ›ๆก†ๆžถๆ— ๅ…ณ็š„FHEVMๆ“ไฝœ
  2. ้€‚้…ๅ™จๅฐ†ๆ ธๅฟƒๅŠŸ่ƒฝๅฐ่ฃ…ๅœจๆก†ๆžถ็‰นๅฎš็š„APIไธญ
  3. ๅฑ•็คบๆผ”็คบ้€‚้…ๅ™จ็š„ๅฎž้™…ไฝฟ็”จ

React/Next.js้€‚้…ๅ™จ

ๅŸบไบŽHooks็š„API - ็ฑปไผผไบŽWagmiๆจกๅผ๏ผš

import { useWallet, useFhevm, useEncrypt, useDecrypt, useContract } from '@fhevm-sdk';

function MyComponent() {
  // ้’ฑๅŒ…่ฟžๆŽฅ
  const { address, isConnected, chainId, connect, disconnect } = useWallet();
  
  // FHEVMๅฎžไพ‹
  const { status, initialize, isInitialized } = useFhevm();
  
  // ๅˆ็บฆไบคไบ’
  const { contract, isReady } = useContract(contractAddress, abi);
  
  // ๅŠ ๅฏ†
  const { encrypt, isEncrypting, error: encryptError } = useEncrypt();
  
  // ่งฃๅฏ†
  const { decrypt, publicDecrypt, isDecrypting, error: decryptError } = useDecrypt();
  
  // ไฝฟ็”จ็คบไพ‹
  const handleIncrement = async () => {
    const encrypted = await encrypt(contractAddress, address, 1);
    await contract.increment(encrypted.handles[0], encrypted.inputProof);
  };
  
  return (
    <div>
      {!isConnected && <button onClick={connect}>่ฟžๆŽฅ้’ฑๅŒ…</button>}
      {isConnected && <button onClick={handleIncrement}>้€’ๅขž</button>}
    </div>
  );
}

Vue้€‚้…ๅ™จ

ๅŸบไบŽ็ป„ๅˆๅผๅ‡ฝๆ•ฐ็š„API - Vue 3็ป„ๅˆๅผAPI๏ผš

<script setup lang="ts">
import { useWalletVue, useFhevmVue, useEncryptVue, useDecryptVue } from '@fhevm-sdk';

// ้’ฑๅŒ…่ฟžๆŽฅ
const { address, isConnected, chainId, connect, disconnect } = useWalletVue();

// FHEVMๅฎžไพ‹
const { status, initialize, isInitialized } = useFhevmVue();

// ๅŠ ๅฏ†
const { encrypt, isEncrypting, error: encryptError } = useEncryptVue();

// ่งฃๅฏ†
const { decrypt, publicDecrypt, isDecrypting, error: decryptError } = useDecryptVue();

// ไฝฟ็”จ็คบไพ‹
const handleIncrement = async () => {
  const encrypted = await encrypt.value(contractAddress, address.value, 1);
  await contract.increment(encrypted.handles[0], encrypted.inputProof);
};
</script>

<template>
  <div>
    <button v-if="!isConnected" @click="connect">่ฟžๆŽฅ้’ฑๅŒ…</button>
    <button v-if="isConnected" @click="handleIncrement">้€’ๅขž</button>
  </div>
</template>

Node.js้€‚้…ๅ™จ

ๅŸบไบŽ็ฑป็š„API - ็”จไบŽๆœๅŠกๅ™จ็ซฏๆ“ไฝœ๏ผš

import { FhevmNode } from '@fhevm-sdk';

const fhevm = new FhevmNode({
  rpcUrl: 'https://sepolia.infura.io/v3/YOUR_KEY',
  privateKey: 'YOUR_PRIVATE_KEY',
  chainId: 11155111
});

await fhevm.initialize();

// ๅŠ ๅฏ†
const encrypted = await fhevm.encrypt(contractAddress, walletAddress, 1);

// ่งฃๅฏ†
const decrypted = await fhevm.decrypt(handle, contractAddress);

// ๅ…ฌๅ…ฑ่งฃๅฏ†
const publicDecrypted = await fhevm.publicDecrypt(handle);

// ๆ‰ง่กŒไบคๆ˜“
const contract = fhevm.createContract(contractAddress, abi);
await fhevm.executeEncryptedTransaction(contract, 'increment', encrypted);

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

้€‰้กน1๏ผšNPXๅŒ…๏ผˆๆŽจ่๏ผ‰

็ซ‹ๅณๅˆ›ๅปบๆ–ฐ็š„FHEVM้กน็›ฎ๏ผš

# React
npx create-fhevm-react my-app
cd my-app
npm install && npm start

# Next.js
npx create-fhevm-nextjs my-app
cd my-app
npm install && npm run dev

# Vue
npx create-fhevm-vue my-app
cd my-app
npm install && npm run dev

้€‰้กน2๏ผšๅผ€ๅ‘็Žฏๅขƒ

ๅ…‹้š†ๅนถ่ฟ่กŒๅฎŒๆ•ด็š„ๅผ€ๅ‘็Žฏๅขƒ๏ผš

# 1. ๅ…‹้š†ไป“ๅบ“
git clone https://github.com/your-username/fhevm-react-template.git
cd fhevm-react-template

# 2. ๅฎ‰่ฃ…ไพ่ต–
pnpm install

# 3. ๆž„ๅปบSDK
pnpm sdk:build

# 4. ่ฟ่กŒๅฑ•็คบ
pnpm --filter react-showcase start      # Reactๅœจ:3000
pnpm --filter nextjs-showcase dev      # Next.jsๅœจ:3001
pnpm --filter vue-showcase dev         # Vueๅœจ:3003
pnpm --filter node-showcase explorer   # ไบคไบ’ๅผCLIๆจกๅผ๏ผˆๆŽจ่๏ผ‰
pnpm --filter node-showcase start      # HTTPๆœๅŠกๅ™จๆจกๅผ
pnpm --filter node-showcase cli        # ้žไบคไบ’ๅผCLIๆจกๅผ

๐Ÿ“š ๅฑ•็คบๆ–‡ๆกฃ

ๆฏไธชๅฑ•็คบๆผ”็คบ้€‚้…ๅ™จ็š„ๅฎž้™…ไฝฟ็”จ๏ผš

  • React Showcase - React hooksไฝฟ็”จ
  • Next.js Showcase - Next.jsไธŽReact hooks
  • Vue Showcase - Vue็ป„ๅˆๅผๅ‡ฝๆ•ฐไฝฟ็”จ
  • Node.js Showcase - ๆœๅŠกๅ™จ็ซฏๆ“ไฝœ
    • ๐ŸŒ ไบคไบ’ๅผCLIๆจกๅผ - ๅธฆๆ็คบ็š„ๅผ•ๅฏผๅŠฉๆ‰‹ (pnpm explorer)
    • ๐ŸŒ HTTPๆœๅŠกๅ™จๆจกๅผ - ๅธฆ็ซฏ็‚น็š„REST API (pnpm start)
    • ๐ŸŒ ้žไบคไบ’ๅผCLIๆจกๅผ - ้กบๅบๆ‰ง่กŒ (pnpm cli)

๐Ÿ† ๆ ธๅฟƒ็‰นๆ€ง

โœ… ๆก†ๆžถๆ— ๅ…ณ็š„ๆ ธๅฟƒ

  • ๅ•ไธ€ๆ ธๅฟƒๅฎž็Žฐ๏ผŒๆ‰€ๆœ‰้€‚้…ๅ™จไฝฟ็”จ
  • ๆ ธๅฟƒไธญๆ— ๆก†ๆžถ็‰นๅฎšไพ่ต–
  • ๆ˜“ไบŽๆ‰ฉๅฑ•ๆ–ฐ้€‚้…ๅ™จ

โœ… Wagmi-like API

  • ๅฏนweb3ๅผ€ๅ‘่€…ๆฅ่ฏด็†Ÿๆ‚‰็š„ๆจกๅผ
  • ๅŸบไบŽhooks๏ผˆReact๏ผ‰ๅ’Œ็ป„ๅˆๅผๅ‡ฝๆ•ฐ๏ผˆVue๏ผ‰
  • ๆธ…ๆ™ฐ็›ด่ง‚็š„ๆŽฅๅฃ

โœ… TypeScriptๆ”ฏๆŒ

  • ๆ‰€ๆœ‰้€‚้…ๅ™จ็š„ๅฎŒๆ•ด็ฑปๅž‹ๅฎ‰ๅ…จ
  • ๅ‡บ่‰ฒ็š„IDEๆ”ฏๆŒ
  • ๅฎŒๆ•ด็š„็ฑปๅž‹ๅฎšไน‰

โœ… ็œŸๅฎž็š„FHEVMๆ“ไฝœ

  • EIP-712็ญพๅ่งฃๅฏ†
  • ๅ…ฌๅ…ฑ่งฃๅฏ†ๆ”ฏๆŒ
  • ๅŠ ๅฏ†ไบคๆ˜“ๆ‰ง่กŒ
  • ๆ— ๆจกๆ‹Ÿ - ๆ‰€ๆœ‰็œŸๅฎž็š„ๅŒบๅ—้“พไบคไบ’

โœ… ๅคšไธชๆผ”็คบๅœบๆ™ฏ

  • ่ฎกๆ•ฐๅ™จๆผ”็คบ๏ผš ไฝฟ็”จ็งๆœ‰่งฃๅฏ†็š„้€’ๅขž/้€’ๅ‡
  • ่ฏ„ๅˆ†ๆผ”็คบ๏ผš ไฝฟ็”จๅ…ฌๅ…ฑ่งฃๅฏ†็š„ๅŠ ๅฏ†่ฏ„ๅˆ†
  • ๆŠ•็ฅจๆผ”็คบ๏ผš ๅŠ ๅฏ†ๆŠ•็ฅจไธŽ็ป“ๆžœๆญ็คบ

๐Ÿ“‹ ่ฆๆฑ‚

  • Node.js 18+
  • pnpm๏ผˆๆŽจ่๏ผ‰ๆˆ–npm
  • MetaMask๏ผˆ็”จไบŽๅ‰็ซฏ็คบไพ‹๏ผ‰
  • Sepolia ETH๏ผˆ็”จไบŽไบคๆ˜“๏ผ‰

๐Ÿ”— ็›ธๅ…ณๆ–‡ๆกฃ

๐Ÿ“ ่ฎธๅฏ่ฏ

MIT่ฎธๅฏ่ฏ - ่ฏฆ็ป†ไฟกๆฏ่ฏทๅ‚้˜…LICENSEๆ–‡ไปถ

๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽ่ดก็Œฎ๏ผๆ›ดๅคšไฟกๆฏ่ฏทๅ‚้˜…ๆˆ‘ไปฌ็š„่ดก็ŒฎๆŒ‡ๅ—ใ€‚


ไธบZama้€š็”จFHEVM SDK่ต้‡‘่€Œๆž„ๅปบ๏ผŒไฟๆŠค้š็ง