Commit Graph

230 Commits

Author SHA1 Message Date
r4bbit 70ca29179e
refactor: remove SafeMath (#76)
There's no need for SafeMath in Solidity 0.8.x and up as it comes
with built-in arithmetic checks.

Also, use named imports.
2023-10-04 11:10:48 +02:00
r4bbit 086601d25b
chore: introduce foundry deployment script (#75)
This introduces a foundry based deployment script which is also used in
tests so the deployment itself is tested as well.
2023-10-04 11:05:33 +02:00
r4bbit e6dec47f02
chore: add config files from foundry template (#69)
The ultimate goal will be to move the contracts package into its own repository that's based on our foundry template.
This commit adds foundry template config files and removes legacy
hardhat stuff.
2023-10-04 10:47:40 +02:00
r4bbit 1eb0f5765d chore: remove unused github workflow file 2023-07-19 10:18:49 +02:00
r4bbit 2193899a09 test: enable test that ensures users can't vote for communities in
cooldown period
2023-07-19 10:18:49 +02:00
r4bbit 658d3561e9 test: add test that ensures voting draw is handled 2023-07-19 10:18:49 +02:00
r4bbit 05892d5b91 test: add foundry tests
This reimplements the hardhat testsuite using foundry for faster test
execution and ease of use.

Hardhat tests and configs are kept around on purpose so we can
transition slowly.
2023-07-19 10:18:49 +02:00
r4bbit 5588378629 forge install: openzeppelin-contracts
v4.8.3
2023-07-19 10:18:49 +02:00
r4bbit 670937a9ce chore: forge init 2023-07-19 10:18:49 +02:00
Patryk Osmaczko 7ae7245c6b fix: prevent active voting being counted for cooldown period 2023-07-03 09:58:22 +02:00
Patryk Osmaczko 7836a76929 chore: extend featuredVotingContract test with break ties scenario 2023-06-30 10:23:26 +02:00
Jakub Kotula 420c9b2849
Featured voting (#37)
* initial

* featured

* featured

* votings

* votings

* add log votings

* comment out notification list for now, fix initialize voting

* featured section | voting flow

* changes

* changes

* refactor waku get/send

* verification debug

* temp

* clean up

* clean up

* comment

* fix lodash import

* revert deploy params

* already voted

* fix tests for format time left fn

* fix decode waku feature test

* restrict UI to only one vote

* fix multiple voting system

* fix contract

* update build step

* verbose compilation

* upgrade hardhat

* git revert build

* Revert "verbose compilation"

This reverts commit f5c57dbcbc.

---------

Co-authored-by: Felicio Mununga <felicio@users.noreply.github.com>
2023-06-29 20:07:41 +02:00
Patryk Osmaczko 2c82372b49 chore: remove Status wallet requirement 2023-06-21 15:16:54 +02:00
Patryk Osmaczko dc84f5ba73 chore: provide optimism goerli contracts 2023-06-19 19:18:02 +02:00
Follow the white rabbit 2ad8e11513
Merge pull request #38 from status-im/fix/set-featured-communities
fix: reset featured community index when necessary
2023-05-22 17:14:03 +02:00
Patryk Osmaczko c2a6d204c7 chore: expose votes from FeaturedVotingContract 2023-05-18 12:40:08 +02:00
r4bbit 974ec940d1 fix: ensure cooldownPeriod check is done correctly
The `FeaturedVotingContract` comes with a check in `initializeVoting()`
that aims to ensure that the community that the voting is being
initialized for, has not been featured previously for #n votings.

This is denoted as the `cooldownPeriod`. If `cooldownPeriod = 1`, this
means there needs to be at least one voting which doesn't include the
community in question, that came *after* the voting that did.

The internal `_isInCooldownPeriod()` check has a bug which will return
false positives for any communiy that has been featured before,
regardless of `cooldownPeriod`s value.

When iterating previous votings, the contract actually needs to start
with the last one and iterate downwards, however it does the opposite so
it will never reach the correct votings to check.

This commit fixes the check and adds two tests to cover the case
accordingly.
2023-05-18 11:21:08 +02:00
r4bbit b232346f7e
fix: reset featured community index when necessary
The `setFeaturedCommunities()` function in `Directory` contract
overrides the entire list of previously featured communities by design.

However, it does not reset the `featuredCommunitiesIdx` map which
results in the `isCommunityFeatured()` function to return false
positives.

This commit resets the map accordingly and adds assertions to the
existing tests for overriding featured communities.

Things to note:

- The bug being fixed is rather low-severity, but I think we should
  still ensure correctness of all contract functions
- The change will increase gas costs of `setFeaturedCommunities()`, but
  again, I think this fix should still land for correctness-sake

Here are some GAS profiles for `setFeaturedCommunities`

```
| contracts/Directory.sol:Directory contract              |                 |       |        |         |         |
|---------------------------------------------------------|-----------------|-------|--------|---------|---------|
| Deployment Cost                                         | Deployment Size |       |        |         |         |
| 753957                                                  | 3797            |       |        |         |         |
| Function Name                                           | min             | avg   | median | max     | # calls |
|---------------------------------------------------------|-----------------|-------|--------|---------|---------|
|                                                         |                 |       |        |         |         |
| COMMUNITY COUNT: 1                                      |                 |       |        |         |         |
| setFeaturedCommunities (INIT, IDX RESET: NO)            | 71162           | 71162 | 71162  | 71162   | 1       |
| setFeaturedCommunities (INIT, IDX RESET: YES)           | 71294           | 71294 | 71294  | 71294   | 1       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: NO)        | 52476           | 61819 | 61819  | 71162   | 2       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: YES)       | 53348           | 62321 | 62321  | 71294   | 2       |
|                                                         |                 |       |        |         |         |
| COMMUNITY COUNT: 3                                      |                 |       |        |         |         |
| setFeaturedCommunities (INIT, IDX RESET: NO)            | 163640          | 163640 | 163640 | 163640 | 1       |
| setFeaturedCommunities (INIT, IDX RESET: YES)           | 163772          | 163772 | 163772 | 163772 | 1       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: NO)        | 106352          | 134996 | 134996 | 163640 | 2       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: YES)       | 126354          | 145063 | 145063 | 163772 | 2       |
|                                                         |                 |        |        |        |         |
| COMMUNITY COUNT: 5                                      |                 |        |        |        |         |
| setFeaturedCommunities (INIT, IDX RESET: NO)            | 256118          | 256118 | 256118 | 256118 | 1       |
| setFeaturedCommunities (INIT, IDX RESET: YES)           | 256250          | 256250 | 256250 | 256250 | 1       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: NO)        | 195427          | 225772 | 225772 | 256118 | 2       |
| setFeaturedCommunities (OVERRIDE, IDX RESET: YES)       | 199360          | 227805 | 227805 | 256250 | 2       |
```
2023-05-16 09:41:38 +02:00
Felicio Mununga 91daa7f782
Fix dapp deployment (#36) 2023-05-12 11:50:59 +02:00
Felicio Mununga 50a79d0ca9
Fix usage of votes (#31)
* fix hook

* remove hook from

* fix width

* fix count

* call event handler

* move hook

* comment

* fix condition

* fix condition

* fix condition

* fix graph

* fix graph

* reuse hook

* comment

* revert condition

* set voters

* use voters

* comment

* comment

* fix mobile case

* fix setter

* reset votes

* reuse vote

* set votes

* reset account

* use null

* fix mobile

* use effect instead
2023-05-10 15:01:44 +02:00
Felicio Mununga edfc1a1746 fix removal rule 2023-05-08 15:23:42 +02:00
Patryk Osmaczko e6e28dbf6d fix `yarn start` 2023-05-05 19:45:39 +02:00
Patryk Osmaczko a47ff64a11 chore: tweak deployment parameters before first release
closes: #28
2023-05-05 19:45:39 +02:00
Jakub Kotula 30e8b267d6
[FE] Add verification period (#21)
* add verification fe

* add unverified votes

* remove logs

* add max value by default; fix animations in modal

* fix config
2023-05-04 17:52:11 +02:00
Felicio Mununga a5d1a98a14
Remove member and ENS limits (#27)
* rm member limit

* rm limit info

* rm confirmations

* rm "cast" keyword

* rm "cast" keyword

* rm "cast" keyword
2023-05-04 17:25:17 +02:00
Pavel 20d0d82a46
Fetch communities from Waku (#24)
* move contracts to constants

* disable featured

* update title

* fetch communities from waku

* update provider

* format webpack config

* use vite

* rm vite

* add js-waku

* set peers

* add @status-im/js

* fix clean script

* fix webpack config

* update readme

* set clean

* use localhost

* use @status-im/js

* enable pings

* desc core-js

* make communit image optional

* validate public key

* fix image field

* remove extra import

* remove zlib fallback from webpack config

* increase timeout

---------

Co-authored-by: Felicio Mununga <felicio@users.noreply.github.com>
2023-05-04 14:11:41 +02:00
Patryk Osmaczko 58ad1d36ef feat: add FeaturedVotingContract
closes: #17
2023-05-04 10:20:57 +02:00
Patryk Osmaczko 9b79b03166 feat: extend Directory contract with featured communities
closes: #18
2023-05-04 10:20:57 +02:00
Pavel e0fb725ce5
Upgrade @usedapp/core, fix Waku initialization & fix environment config (#22)
* update clean scripts

* add dev scripts to packages/contracts

* upgrade to latest @usedapp/core

* make config explicit

* move contracts to constants

* fix config imports

* fix and simplify waku initialization

* use correct dapp config

* fix errors
2023-05-02 14:53:34 +02:00
Patryk Osmaczko a4164dbe11 feat(VotingContract): add verification period
closes: #5
2023-03-23 20:44:56 +01:00
Patryk Osmaczko 135084aaf4 refactor(VotingContract/tests): use typed room checks 2023-03-23 20:44:56 +01:00
Patryk Osmaczko 802832dd4c update CI.yml to use LTS node version 2023-03-21 22:13:40 +01:00
Patryk Osmaczko f7579494bd feat(VotingContract): make voting length configurable 2023-03-21 22:13:40 +01:00
Patryk Osmaczko 910c0a41d6 fix: prevent `useGetCurrentVoting` from getting unexistent room 2023-03-21 22:13:40 +01:00
Patryk Osmaczko a7d7736f34 verify balances at finalization
closes: #6
2023-03-21 22:13:40 +01:00
Patryk Osmaczko 03cd1915c8 refactor(VotingContract): rename public APIs 2023-03-21 22:13:40 +01:00
Patryk Osmaczko f090cce552 refactor(VotingContract): use more precise naming for mappings 2023-03-21 22:13:40 +01:00
Patryk Osmaczko 5cc0f21e07 refactor(VotingContract): improve `votingRooms` indexing 2023-03-21 22:13:40 +01:00
Patryk Osmaczko 396aa6d8a7 refactor(VotingContract): remove needless storage 2023-03-21 22:13:40 +01:00
Patryk Osmaczko 48a273443e chore: update solidity version 2023-03-21 22:13:40 +01:00
Patryk Osmaczko adafe3ad7d chore: migrate deploy scripts to hardhat 2023-03-21 22:13:40 +01:00
Patryk Osmaczko 57fa26a7c2 update yarn.lock 2023-03-20 10:06:09 +01:00
Patryk Osmaczko 6f23feab16 chore: migrate contracts to hardhat 2023-03-20 10:06:09 +01:00
Felicio Mununga 5b257aeafe
Fix usage of `ts-node/esm` and `mocha` (#12)
* revert lockfile

* revert deps

* update webpack

* update mocha

* update ts-node

* add core-js

* update js-waku

* add rimraf

* set ts-node and typescript versions

* update ts-node in contracts

* update ts-node in dapp

* update typescript in contracts

* update typescript in dapp

* extend tsconfig files

* remove ts-node/register from .mocharc

* fix @usedapp/core import

* fix `VotingContract.sol` lint errors

* set `exit` config
2023-03-15 19:22:19 +01:00
Patryk Osmaczko 346db8edd7 fix: lint 2023-03-06 21:36:24 +01:00
Patryk Osmaczko f1d364c478 chore: update CI.yml 2023-03-06 21:36:24 +01:00
Patryk Osmaczko ffc6cd6a30 update README 2023-03-02 15:58:05 +01:00
Patryk Osmaczko c92ea71397 enhance the usage of config
- use optimism goerli as default
- use any wallet provider in dev builds
2023-03-02 15:58:05 +01:00
Felicio Mununga 08676b6d65
Use `js-waku@^0.30.0` (#1)
* use `core-js@^3.26.1` and `js-waku@^0.30.0`

* comment

* use `webpack@^5.75.0`

* use `node@18.12.1`

* ignore `wakuMessage.test.ts`

* comment

* use `module` in `package.json`

* update mocha dependencies

* use `.cjs` extension for webpack config

* update mocha config

* update tsconfig

* remove empty setup.ts

* fix imports

* fix `wakuMessage.test.ts`

* rename prettier config

* resolve lint issues

* update test content topics
2023-03-02 13:52:22 +01:00
Szymon Szlachtowicz c5e897214b
Fix cast votes (#192) 2021-09-03 09:14:46 +02:00