Closed cryptitalk closed 7 months ago
please see updated version for less use of gas, idea is using bitwise operation.
for example, if we want to have 8 votes, after n number of votes, we know what the top 4 is, then we set the resultBits' according bit position to 1.
for example
resultBit is: 01101100
if my vote is: 11111111 then my score is: 01101100 xor 11111111 -> 10010011 which is pretty large
if my vote is 01101100 then my score is: 01101100 xor 01101100 -> 00000000 which is perfect, then I am the winner
pushed a new version with test scripts, something wrong with fhevmjs that prevents me from running encrypt8 in my test script, working on the fix
specifically this error:
1) Contract: KeynsianBeautyContest Tests
Vote and check winner
should let participants vote and determine the winner correctly:
RuntimeError: unreachable
at null.<anonymous> (wasm://wasm/002d022a:1:590648)
at null.<anonymous> (wasm://wasm/002d022a:1:672482)
at null.<anonymous> (wasm://wasm/002d022a:1:654419)
at null.<anonymous> (wasm://wasm/002d022a:1:294611)
at Function.encrypt_with_compact_public_key (node_modules/node-tfhe/tfhe.js:4006:18)
at encrypt8 (node_modules/fhevmjs/lib/node.cjs:63:50)
at Object.encrypt8 (node_modules/fhevmjs/lib/node.cjs:193:36)
at Context.<anonymous> (test/keynsianBeautyContest_test.js:39:49)
at processImmediate (node:internal/timers:478:21)
2) Contract: KeynsianBeautyContest Tests
"after each" hook: after test for "should let participants vote and determine the winner correctly":
invalid argument 0: hex string without 0x prefix
also reported here: https://community.zama.ai/t/runtimeerror-unreachable/980
can you reach out to team INCO @0xAkrasia
problem resolved
according to https://community.zama.ai/t/runtimeerror-unreachable/980, they recommend use fhevmjs@0.4.0-3
and in [In-Theory-Games](https://github.com/0xAkrasia/In-Theory-Games), it also uses fhevmjs@0.4.0-3
that explains why In-Theory-Games has a working fhevmjs, but we need to be aware that once fhevmjs might be broken again once they upgrade to 0.5* as mentioned in https://community.zama.ai/t/runtimeerror-unreachable/980/2
test is passed @ 0x22cEe6ffECE58f7DE72B424Ac7e1453796dc33F4
when testing the contract castVote, because we need encrypted cypher text, I used this utility: https://utils.inco.org/ to get 8 inputs (0, or 1), when testing against the contract, I will get following error, the cypher text is too long to be processed in my mind.