Skip to content

BrianHuang813/PayWave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

PayWave โ€” ๆฉŸๅฏ†้ˆไธŠ่–ช่ณ‡็ณป็ตฑ

FHE Privacy Compliance

๐Ÿ” ไปฅๅ…จๅŒๆ…‹ๅŠ ๅฏ† (FHE) ๅฏฆ็พ็š„้šฑ็งไฟ่ญท่–ช่ณ‡ๆ”ฏไป˜็ณป็ตฑ


ๅฐˆๆกˆ้ก˜ๆ™ฏ

ๅœจๅ‚ณ็ตฑๅ€ๅกŠ้ˆไธŠ๏ผŒๆ‰€ๆœ‰ไบคๆ˜“้‡‘้กๅฎŒๅ…จ้€ๆ˜Žใ€‚้€™ๅฐ่–ช่ณ‡ๆ”ฏไป˜่€Œ่จ€ๆ˜ฏๅ€‹็ฝ้›ฃโ€”โ€”ไปปไฝ•ไบบ้ƒฝ่ƒฝๆŸฅ็œ‹ไฝ ็š„ๆ”ถๅ…ฅใ€ๆฏ”่ผƒๅŒไบ‹่–ชๆฐดใ€็”š่‡ณ่ฎ“็ซถ็ˆญๅฐๆ‰‹ๅˆ†ๆžๅ…ฌๅธๆ”ฏๅ‡บ็ตๆง‹ใ€‚

PayWave ๅˆฉ็”จ Zama FHEVM ็š„ๅ…จๅŒๆ…‹ๅŠ ๅฏ†ๆŠ€่ก“๏ผŒๆ‰“้€ ไธ€ๅ€‹**ใ€Œๅ…ฌ้–‹ๅญ˜ๆฌพใ€็งๅฏ†ๅˆ†็™ผใ€**็š„่–ช่ณ‡็ณป็ตฑ๏ผš

  • ๅ…ฌๅธๅญ˜ๅ…ฅ่ณ‡้‡‘ๆ˜ฏๅฏๅฏฉ่จˆ็š„ๅ…ฌ้–‹ไบคๆ˜“
  • ๆฏไฝๅ“กๅทฅ็š„่–ช่ณ‡ๆ˜Ž็ดฐ็ซฏๅˆฐ็ซฏๅŠ ๅฏ†
  • ๅชๆœ‰ๅ“กๅทฅๆœฌไบบ่ƒฝ่งฃๅฏ†ไธฆ้ฉ—่ญ‰่‡ชๅทฑ็š„่–ช่ณ‡
  • ๆ”ฟๅบœๅˆ่ฆๅญ˜ๅ–้œ€่ฆ้›™ๆ–นๆ‰นๅ‡† + 24 ๅฐๆ™‚ๅ†ท้œๆœŸ

ๆ ธๅฟƒๅ•้กŒ่ˆ‡่งฃๆฑบๆ–นๆกˆ

ๅ‚ณ็ตฑ้ˆไธŠๆ”ฏไป˜็š„้šฑ็งๅ›ฐๅขƒ

ๅ•้กŒ ๅ‚ณ็ตฑๅ€ๅกŠ้ˆ PayWave
่–ช่ณ‡้‡‘้ก โŒ ไปปไฝ•ไบบๅฏๆŸฅ โœ… ๅชๆœ‰ๅ“กๅทฅๅฏ่ฆ‹
ๅŒไบ‹ๆฏ”่ผƒ โŒ ๅฎŒๅ…จ้€ๆ˜Ž โœ… ็„กๆณ•ไบ’็›ธๆฏ”่ผƒ
ๅ•†ๆฅญๆฉŸๅฏ† โŒ ็ซถ็ˆญๅฐๆ‰‹ๅฏๅˆ†ๆžๆ”ฏๅ‡บ โœ… ๅˆ†้…ๆจกๅผๅฎŒๅ…จ้šฑ่—
GDPR ๅˆ่ฆ โŒ ็„กๆณ•ๆปฟ่ถณๆœ€ๅฐๅŒ–ๆญ้œฒ โœ… ๆ•ธๆ“šๆœ€ๅฐๅŒ–ๅŽŸๅ‰‡
ๆ”ฟๅบœ็จฝๆ ธ โŒ ็„กๆŽงๅˆถๆฉŸๅˆถ โœ… ้›™้‡ๆ‰นๅ‡† + ๆ™‚้–“้Ž–

FHE ๅฆ‚ไฝ•ๅšๅˆฐ๏ผŸ

ๅ…จๅŒๆ…‹ๅŠ ๅฏ† (Fully Homomorphic Encryption) ๅ…่จฑๅœจๅฏ†ๆ–‡ไธŠ็›ดๆŽฅ้‹็ฎ—๏ผŒ็„ก้œ€่งฃๅฏ†๏ผš

ๅŠ ๅฏ†(ๅŸบๆœฌ่–ช่ณ‡) + ๅŠ ๅฏ†(็Ž้‡‘) - ๅŠ ๅฏ†(ๆ‰ฃๆฌพ) = ๅŠ ๅฏ†(ๆทจ่–ช่ณ‡)
       โ†“              โ†“            โ†“             โ†“
     ๅฏ†ๆ–‡A    +     ๅฏ†ๆ–‡B    -   ๅฏ†ๆ–‡C    =    ๅฏ†ๆ–‡D

ๆ•ดๅ€‹่จˆ็ฎ—้Ž็จ‹ไธญ๏ผŒๆฒ’ๆœ‰ไปปไฝ•ไบบ๏ผˆๅŒ…ๆ‹ฌๅ€ๅกŠ้ˆ้ฉ—่ญ‰็ฏ€้ปž๏ผ‰่ƒฝ็œ‹ๅˆฐๅฏฆ้š›้‡‘้กใ€‚


็ณป็ตฑๆžถๆง‹

                              PayWave ็ณป็ตฑๆžถๆง‹
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                                         โ”‚
โ”‚     ใ€ๅ…ฌ้–‹ๅฑคใ€‘                          ใ€ๆฉŸๅฏ†ๅฑคใ€‘                        โ”‚
โ”‚                                                                         โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”‚
โ”‚    โ”‚   USDC   โ”‚  โ”€โ”€โ”€deposit()โ”€โ”€โ”€โ–บ   โ”‚    cUSDC     โ”‚                  โ”‚
โ”‚    โ”‚  ๅ…ฌ้–‹ไปฃๅนฃ โ”‚                      โ”‚  ๆฉŸๅฏ†ไปฃๅนฃ    โ”‚                  โ”‚
โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ—„โ”€โ”€withdraw()โ”€โ”€โ”€   โ”‚ (ๅŠ ๅฏ†้ค˜้ก)   โ”‚                  โ”‚
โ”‚         โ”‚                            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ”‚         โ”‚                                   โ”‚                          โ”‚
โ”‚         โ–ผ                                   โ–ผ                          โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”‚
โ”‚    โ”‚ Wrapper  โ”‚                      โ”‚   Payroll    โ”‚                  โ”‚
โ”‚    โ”‚ ๅŒ…่ฃๅˆ็ด„  โ”‚                      โ”‚   ่–ช่ณ‡ๅˆ็ด„   โ”‚                  โ”‚
โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚              โ”‚                  โ”‚
โ”‚                                      โ”‚ โ€ข ๅŠ ๅฏ†่–ช่ณ‡ๅ–ฎ  โ”‚                  โ”‚
โ”‚    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”‚ โ€ข FHE ่จˆ็ฎ—   โ”‚                  โ”‚
โ”‚    โ”‚ Treasury โ”‚ โ—„โ”€โ”€โ”€โ”€pay()โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚ โ€ข ACL ๆฌŠ้™   โ”‚                  โ”‚
โ”‚    โ”‚  ๅœ‹ๅบซ    โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ”‚    โ”‚(ๅ…ฌๅธ่ณ‡้‡‘) โ”‚                             โ”‚                          โ”‚
โ”‚    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                             โ”‚ grantGovAccess()         โ”‚
โ”‚                                             โ–ผ                          โ”‚
โ”‚                                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”‚
โ”‚                                      โ”‚ Compliance   โ”‚                  โ”‚
โ”‚                                      โ”‚    Gate      โ”‚                  โ”‚
โ”‚                                      โ”‚  ๅˆ่ฆ้–˜้“    โ”‚                  โ”‚
โ”‚                                      โ”‚              โ”‚                  โ”‚
โ”‚                                      โ”‚ โ€ข ้›™้‡ๆ‰นๅ‡†   โ”‚                  โ”‚
โ”‚                                      โ”‚ โ€ข 24h ๆ™‚้–“้Ž– โ”‚                  โ”‚
โ”‚                                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ”‚
โ”‚                                                                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅˆ็ด„่ง’่‰ฒ

ๅˆ็ด„ ่ฒฌไปป ่ณ‡ๆ–™ๅฏ่ฆ‹ๆ€ง
cUSDC ๆฉŸๅฏ†ไปฃๅนฃ๏ผŒ้ค˜้กๅŠ ๅฏ†ๅญ˜ๅ„ฒ ้ค˜้ก๏ผš๐Ÿ”’ ๅŠ ๅฏ†
USDCWrapper ๅ…ฌ้–‹ USDC โ†” ๆฉŸๅฏ† cUSDC ่ฝ‰ๆ› ๅญ˜ๆ้‡‘้ก๏ผš๐Ÿ‘๏ธ ๅ…ฌ้–‹
PayrollTreasury ๆŒๆœ‰ๅ…ฌๅธ cUSDC ่ณ‡้‡‘ ็ธฝ้ก๏ผš๐Ÿ”’ ๅŠ ๅฏ†
Payroll ๅŠ ๅฏ†่–ช่ณ‡ๅ–ฎใ€FHE ่จˆ็ฎ—ใ€ๆ”ฏไป˜ๅŸท่กŒ ่–ช่ณ‡ๆ˜Ž็ดฐ๏ผš๐Ÿ”’ ๅŠ ๅฏ†
ComplianceGate Break-glass ๆฉŸๅˆถ็‹€ๆ…‹ๆฉŸ ็”ณ่ซ‹่จ˜้Œ„๏ผš๐Ÿ‘๏ธ ๅ…ฌ้–‹

่ณ‡ๆ–™ๆต็จ‹

ๅฎŒๆ•ด่–ช่ณ‡็™ผๆ”พๆต็จ‹

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                                                                 โ”‚
    โ”‚   1๏ธโƒฃ ๅญ˜ๆฌพ                                                       โ”‚
    โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                 โ”‚
    โ”‚   HR ๅฐ‡ USDC ๅญ˜ๅ…ฅ Wrapper                                        โ”‚
    โ”‚   Wrapper ้‘„้€ ็ญ‰้ก cUSDC ๅˆฐ Treasury                             โ”‚
    โ”‚                                                                 โ”‚
    โ”‚   ๐Ÿ“Š ๅฏ่ฆ‹ๆ€ง: ๅญ˜ๆฌพ้‡‘้กๅ…ฌ้–‹ (ๅฏๅฏฉ่จˆ)                                 โ”‚
    โ”‚                                                                 โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                                                 โ”‚
    โ”‚   2๏ธโƒฃ ๅปบ็ซ‹่–ช่ณ‡ๅ–ฎ                                                  โ”‚
    โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                 โ”‚
    โ”‚   HR ๅœจๅ‰็ซฏ่ผธๅ…ฅ่–ช่ณ‡ๆ˜Ž็ดฐ                                           โ”‚
    โ”‚   ๅ‰็ซฏไฝฟ็”จ FHEVM SDK ๅŠ ๅฏ† โ†’ ็”ข็”Ÿ handles + ZK proof              โ”‚
    โ”‚   ้€ๅ‡บ setPayslipInputs() ไบคๆ˜“                                   โ”‚
    โ”‚                                                                 โ”‚
    โ”‚   ๐Ÿ“Š ๅฏ่ฆ‹ๆ€ง: ๅชๆœ‰ๅŠ ๅฏ† handle๏ผŒ็„กไบบๅฏ่ฆ‹ๆ˜Ž็ดฐ                         โ”‚
    โ”‚                                                                 โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                                                 โ”‚
    โ”‚   3๏ธโƒฃ ่จˆ็ฎ—ๆทจ้ก                                                    โ”‚
    โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                 โ”‚
    โ”‚   HR ๅ‘ผๅซ computePayslip()                                       โ”‚
    โ”‚   ๅˆ็ด„ๅœจๅฏ†ๆ–‡ไธŠๅŸท่กŒ: net = max(base + bonus - penalty - leave, 0) โ”‚
    โ”‚   ๅ“กๅทฅ็ฒๅพ—่งฃๅฏ†ๆฌŠ้™ (ACL.allow)                                    โ”‚
    โ”‚                                                                 โ”‚
    โ”‚   ๐Ÿ“Š ๅฏ่ฆ‹ๆ€ง: ่จˆ็ฎ—ๅœจๅฏ†ๆ–‡ไธŠ้€ฒ่กŒ๏ผŒ็ตๆžœไป็‚บๅฏ†ๆ–‡                        โ”‚
    โ”‚                                                                 โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                                                 โ”‚
    โ”‚   4๏ธโƒฃ ๅŸท่กŒๆ”ฏไป˜                                                    โ”‚
    โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                 โ”‚
    โ”‚   HR ๅ‘ผๅซ pay()                                                  โ”‚
    โ”‚   Payroll ๆŽˆไบˆ cUSDC ่‡จๆ™‚ๆฌŠ้™ (allowTransient)                    โ”‚
    โ”‚   cUSDC.transferEncryptedFrom(Treasury โ†’ Employee, ๅŠ ๅฏ†้‡‘้ก)     โ”‚
    โ”‚                                                                 โ”‚
    โ”‚   ๐Ÿ“Š ๅฏ่ฆ‹ๆ€ง: ่ฝ‰ๅธณ็™ผ็”Ÿ๏ผŒไฝ†้‡‘้กๅŠ ๅฏ†                                  โ”‚
    โ”‚                                                                 โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                                                 โ”‚
    โ”‚   5๏ธโƒฃ ๅ“กๅทฅ่งฃๅฏ†                                                    โ”‚
    โ”‚   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€                                                 โ”‚
    โ”‚   ๅ“กๅทฅไฝฟ็”จ้ŒขๅŒ…็ฐฝ็ฝฒ EIP-712 ๆŽˆๆฌŠ                                   โ”‚
    โ”‚   Relayer ้ฉ—่ญ‰็ฐฝๅไธฆ่ฟ”ๅ›ž่งฃๅฏ†ๅพŒ็š„ๆ˜Žๆ–‡                              โ”‚
    โ”‚   ๅ‰็ซฏๆœฌๅœฐ้ฉ—็ฎ—: base + bonus - penalty - leave = net โœ“           โ”‚
    โ”‚                                                                 โ”‚
    โ”‚   ๐Ÿ“Š ๅฏ่ฆ‹ๆ€ง: ๅชๆœ‰ๅ“กๅทฅๆœฌไบบๅฏ่ฆ‹่‡ชๅทฑ็š„่–ช่ณ‡                            โ”‚
    โ”‚                                                                 โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

้—œ้ต่จญ่จˆ๏ผšACL ๆฌŠ้™ๆŽงๅˆถ

FHEVM ็š„ Access Control List (ACL) ๆฑบๅฎš่ชฐ่ƒฝ่งฃๅฏ†ๅ“ชๅ€‹ๅฏ†ๆ–‡๏ผš

่–ช่ณ‡ๅ–ฎๅปบ็ซ‹ๆ™‚:
  โ””โ”€ FHE.allowThis(base/bonus/penalty/leave)  โ†’ ๅˆ็ด„ๅฏ็นผ็บŒไฝฟ็”จ
  
่จˆ็ฎ—ๅฎŒๆˆๆ™‚:
  โ””โ”€ FHE.allow(ๆ‰€ๆœ‰ๆฌ„ไฝ, employee)            โ†’ ๅ“กๅทฅๅฏ่งฃๅฏ†
  
ๆ”ฏไป˜ๆ™‚:
  โ””โ”€ FHE.allowTransient(net, cUSDC)           โ†’ cUSDC ๅœจๆญคไบคๆ˜“ไธญๅฏไฝฟ็”จ
  
ๆ”ฟๅบœๅญ˜ๅ–ๆ™‚:
  โ””โ”€ FHE.allow(ๆ‰€ๆœ‰ๆฌ„ไฝ, govMultisig)         โ†’ ๆ”ฟๅบœๅฏ่งฃๅฏ†

ๅˆ่ฆๆฉŸๅˆถ๏ผšBreak-Glass

็•ถๆ”ฟๅบœ้œ€่ฆๅญ˜ๅ–็‰นๅฎšๅ“กๅทฅ็š„่–ช่ณ‡่ณ‡ๆ–™ๆ™‚๏ผŒๅฟ…้ ˆ็ถ“้Žๅšดๆ ผ็š„ๆŽงๅˆถๆต็จ‹๏ผš

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                    Break-Glass ๆต็จ‹                             โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚                                                                 โ”‚
    โ”‚   1. ๐Ÿ›๏ธ ๆ”ฟๅบœๆไบค็”ณ่ซ‹                                             โ”‚
    โ”‚      requestCase(employee, period, reasonHash, evidenceURI)     โ”‚
    โ”‚      โ†“                                                          โ”‚
    โ”‚   2. โœ… ๅ…ฌๅธๆ‰นๅ‡†                                                 โ”‚
    โ”‚      approveByIssuer(caseId)  โ† IssuerMultisig                 โ”‚
    โ”‚      โ†“                                                          โ”‚
    โ”‚   3. โœ… ๆ”ฟๅบœๆ‰นๅ‡†                                                 โ”‚
    โ”‚      approveByGov(caseId)     โ† GovMultisig                    โ”‚
    โ”‚      โ†“                                                          โ”‚
    โ”‚   4. โณ 24 ๅฐๆ™‚ๅ†ท้œๆœŸ                                            โ”‚
    โ”‚      (ๅ“กๅทฅๆœ‰ๆ™‚้–“็Ÿฅๆ‚‰ไธฆๅฐ‹ๆฑ‚ๆณ•ๅพ‹ๅปบ่ญฐ)                               โ”‚
    โ”‚      โ†“                                                          โ”‚
    โ”‚   5. ๐Ÿ”“ ๅŸท่กŒไธฆๆŽˆๆฌŠ                                               โ”‚
    โ”‚      execute(caseId)                                            โ”‚
    โ”‚      โ†’ Payroll.grantGovAccess()                                โ”‚
    โ”‚      โ†’ FHE.allow(ๆฌ„ไฝ, govMultisig)                             โ”‚
    โ”‚      โ†“                                                          โ”‚
    โ”‚   6. ๐Ÿ‘๏ธ ๆ”ฟๅบœ่งฃๅฏ†                                                 โ”‚
    โ”‚      ๆ”ฟๅบœไฝฟ็”จ userDecrypt ๆŸฅ็œ‹ๆŒ‡ๅฎšๆœŸ้–“็š„่–ช่ณ‡                      โ”‚
    โ”‚                                                                 โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅฎ‰ๅ…จไฟ่ญ‰

ไฟ่ญทๆฉŸๅˆถ ่ชชๆ˜Ž
้›™้‡ๆ‰นๅ‡† ๅ…ฌๅธ + ๆ”ฟๅบœ้ƒฝๅฟ…้ ˆๅŒๆ„
24 ๅฐๆ™‚ๆ™‚้–“้Ž– ็ตฆไบˆๅ“กๅทฅๅๆ‡‰ๆ™‚้–“
ๆœ€ๅฐๅŒ–ๅญ˜ๅ– ๅชๆŽˆๆฌŠ็‰นๅฎšๅ“กๅทฅ็‰นๅฎšๆœŸ้–“
ไธๅ…ฌ้–‹่งฃๅฏ† ๆฐธ้ ไธไฝฟ็”จ makePubliclyDecryptable
ๅฏฉ่จˆ่ฟฝ่นค ๆ‰€ๆœ‰ๅญ˜ๅ–่ซ‹ๆฑ‚ๅ’Œๆ‰นๅ‡†้ƒฝ่จ˜้Œ„ๅœจ้ˆไธŠ

่ง’่‰ฒ่ˆ‡ๆฌŠ้™

็ณป็ตฑ่ง’่‰ฒ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                                                                     โ”‚
โ”‚   ๐Ÿ‘” IssuerMultisig (ๅ…ฌๅธ HR/่ฒกๅ‹™)                                   โ”‚
โ”‚   โ”œโ”€ ๅญ˜ๅ…ฅ USDC ๅˆฐ Treasury                                          โ”‚
โ”‚   โ”œโ”€ ๅปบ็ซ‹ๅ’Œ่จญๅฎšๅ“กๅทฅ่–ช่ณ‡ๅ–ฎ                                            โ”‚
โ”‚   โ”œโ”€ ่จˆ็ฎ—ๆทจ่–ช่ณ‡                                                     โ”‚
โ”‚   โ”œโ”€ ๅŸท่กŒๆ”ฏไป˜                                                       โ”‚
โ”‚   โ””โ”€ ๆ‰นๅ‡†ๆ”ฟๅบœๅญ˜ๅ–็”ณ่ซ‹                                                โ”‚
โ”‚                                                                     โ”‚
โ”‚   ๐Ÿ‘ค Employee (ๅ“กๅทฅ)                                                 โ”‚
โ”‚   โ”œโ”€ ่งฃๅฏ†่‡ชๅทฑ็š„่–ช่ณ‡ๅ–ฎ                                                โ”‚
โ”‚   โ”œโ”€ ๆœฌๅœฐ้ฉ—่ญ‰่จˆ็ฎ—ๆญฃ็ขบๆ€ง                                              โ”‚
โ”‚   โ””โ”€ ๆŸฅ็œ‹่‡ชๅทฑ็š„ cUSDC ้ค˜้ก                                          โ”‚
โ”‚                                                                     โ”‚
โ”‚   ๐Ÿ›๏ธ GovMultisig (ๆ”ฟๅบœๆฉŸ้—œ)                                         โ”‚
โ”‚   โ”œโ”€ ๆไบคๅˆ่ฆๅญ˜ๅ–็”ณ่ซ‹                                                โ”‚
โ”‚   โ”œโ”€ ๆ‰นๅ‡†ๅญ˜ๅ–็”ณ่ซ‹                                                   โ”‚
โ”‚   โ””โ”€ ๅŸท่กŒๅพŒ่งฃๅฏ†ๆŽˆๆฌŠ็š„่–ช่ณ‡่ณ‡ๆ–™                                        โ”‚
โ”‚                                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ณ‡ๆ–™ๅฏ่ฆ‹ๆ€ง็Ÿฉ้™ฃ

่ณ‡ๆ–™ ๅ…ฌ็œพ ๅ“กๅทฅ ๅ…ฌๅธ ๆ”ฟๅบœ (ๆŽˆๆฌŠๅพŒ)
็ธฝๅญ˜ๆฌพ้‡‘้ก โœ… โœ… โœ… โœ…
ๅ“กๅทฅๅๅ–ฎ โœ… โœ… โœ… โœ…
่–ช่ณ‡ๅ–ฎ็‹€ๆ…‹ โœ… โœ… โœ… โœ…
ๅ€‹ไบบ่–ช่ณ‡ๆ˜Ž็ดฐ โŒ โœ… (่‡ชๅทฑ) โŒ โœ… (็‰นๅฎš)
ๆ”ฏไป˜้‡‘้ก โŒ โœ… (่‡ชๅทฑ) โŒ โœ… (็‰นๅฎš)
cUSDC ้ค˜้ก โŒ โœ… (่‡ชๅทฑ) โŒ โŒ

ๆŠ€่ก“ๅ †็–Š

ๆ™บ่ƒฝๅˆ็ด„

  • Solidity ^0.8.24
  • Zama FHEVM SDK @fhevm/solidity v0.9.1
  • ๅŠ ๅฏ†้กžๅž‹ encrypted-types v0.0.4
  • ้–‹็™ผๆก†ๆžถ Hardhat

ๅ‰็ซฏ

  • ๆก†ๆžถ Next.js 14 (App Router)
  • ๆจฃๅผ Tailwind CSS + Vaporwave ่จญ่จˆ็ณป็ตฑ
  • Web3 wagmi + viem
  • FHEVM ๆ•ดๅˆ Mock ๆจกๅผ (SDK ๆญฃๅผ็™ผๅธƒๅพŒๅˆ‡ๆ›)

็ถฒ่ทฏๆ”ฏๆด

็ถฒ่ทฏ Chain ID ็”จ้€”
Sepolia 11155111 ๆธฌ่ฉฆ็ถฒ้ƒจ็ฝฒ
Hardhat 31337 ๆœฌๅœฐ้–‹็™ผ

ๅฎ‰ๅ…จ่€ƒ้‡

้šฑ็งไฟ่ญท

  1. ไบ‹ไปถไธๆดฉๆผ้‡‘้ก โ€” ๆ‰€ๆœ‰ emit ็š„ไบ‹ไปถๅชๅŒ…ๅซ ID ๅ’Œ็‹€ๆ…‹๏ผŒไธๅซ้‡‘้ก
  2. ๆขไปถๅˆ†ๆ”ฏไฝฟ็”จ FHE.select โ€” ๆฐธ้ ไธๅฐ ebool ไฝฟ็”จ if/else
  3. ไธไฝฟ็”จๅ…ฌ้–‹่งฃๅฏ† โ€” ๆฐธ้ ไธๅ‘ผๅซ makePubliclyDecryptable

ๅญ˜ๅ–ๆŽงๅˆถ

  1. ่ง’่‰ฒ้–˜ๆŽง โ€” ๆ‰€ๆœ‰ๆ•ๆ„Ÿๆ“ไฝœ้ƒฝๆœ‰ onlyIssuerใ€onlyGate ็ญ‰ไฟฎ้ฃพ็ฌฆ
  2. ACL ้ฉ—่ญ‰ โ€” ไฝฟ็”จ FHE.isSenderAllowed() ้ฉ—่ญ‰ caller ๆฌŠ้™
  3. ๆœ€ๅฐๆฌŠ้™ๅŽŸๅ‰‡ โ€” ๅชๆŽˆไบˆๅฎŒๆˆๆ“ไฝœๆ‰€้œ€็š„ๆœ€ๅฐๆฌŠ้™

้˜ฒๆญขๆŽจ็†ๆ”ปๆ“Š

  • ไธๅŸบๆ–ผๅŠ ๅฏ†ๅ€ผ็š„ๆˆๅŠŸ/ๅคฑๆ•—่กŒ็‚บไพ†ๆŽจๆธฌ่ณ‡ๆ–™
  • ๆ”ฏไป˜ๅคฑๆ•—ไธๆœƒ้€้œฒๆ˜ฏใ€Œ้ค˜้กไธ่ถณใ€้‚„ๆ˜ฏๅ…ถไป–ๅŽŸๅ› 

ๅฐˆๆกˆ็ตๆง‹

PayWave/
โ”œโ”€โ”€ contracts/                 # ๆ™บ่ƒฝๅˆ็ด„
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ cUSDC.sol         # ๆฉŸๅฏ† USDC ไปฃๅนฃ
โ”‚   โ”‚   โ”œโ”€โ”€ Payroll.sol       # ๆ ธๅฟƒ่–ช่ณ‡ๅˆ็ด„
โ”‚   โ”‚   โ”œโ”€โ”€ PayrollTreasury.sol
โ”‚   โ”‚   โ”œโ”€โ”€ USDCWrapper.sol
โ”‚   โ”‚   โ”œโ”€โ”€ ComplianceGate.sol
โ”‚   โ”‚   โ””โ”€โ”€ lib/
โ”‚   โ”‚       โ””โ”€โ”€ Errors.sol
โ”‚   โ””โ”€โ”€ FHEVM_MIGRATION_NOTES.md
โ”‚
โ”œโ”€โ”€ frontend/                  # ๅ‰็ซฏๆ‡‰็”จ
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ issuer/       # HR ๅ„€่กจๆฟ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ employee/     # ๅ“กๅทฅๅ…ฅๅฃ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ government/   # ๆ”ฟๅบœๅ…ฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ””โ”€โ”€ lib/
โ”‚   โ”‚       โ”œโ”€โ”€ fhevm.ts      # FHEVM SDK ๆ•ดๅˆ
โ”‚   โ”‚       โ”œโ”€โ”€ contracts.ts  # ๅˆ็ด„ ABI
โ”‚   โ”‚       โ””โ”€โ”€ addresses.ts  # ๅˆ็ด„ๅœฐๅ€
โ”‚   โ””โ”€โ”€ package.json
โ”‚
โ””โ”€โ”€ PayWave_Work_Spec.md      # ๅฎŒๆ•ดๅทฅไฝœ่ฆๆ ผ

ๆŽˆๆฌŠ

MIT License


PayWave โ€” ่ฎ“่–ช่ณ‡ๅ›žๆญธ็งๅฏ† ๐Ÿ”

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors