r4bbit
8f864466d4
chore: set production parameters ( #74 )
2023-10-04 13:27:23 +02:00
r4bbit
b77e258670
refactor: use OZs `Ownable2Step` for access control ( #73 )
...
Closes #64
2023-10-04 13:23:35 +02:00
r4bbit
7ac15c6dd6
refactor: use minime and require limit when evaluating votes ( #72 )
...
This commit introduces a change that has been largely discussed in #65
Generally the idea is the following:
Prior to this commit, the amount of votes to be evaluated is unbounded, meaning we can potentially run out of gas when too many votes have to be evaluated in a single transaction.
To account for that, vote processing has to be batched based on a limit that is provided when the contract is called.
As a result of batching, finalization of votes can happen over multiple transactions which makes checking balances of voters tricky because evaluation happens at different blocks where balances might have changed.
That's why we're also introducing the use of MiniMeToken over standard ERC20 because it allows us to check balances of accounts at certain blocks.
This commit introduces the following changes in both VotingContract and FeaturedVotingContract:
Evaluation of votes now always happens in three places: When a voting is initialized, when votes are casted and when a voting is being finalized.
When initializing a voting or casting votes, the votes are evaluated against the current block, front-ends can therefore show a good estimation of the current vote state.
Only the "new" votes are evaluated, which should equal to the amount of votes being sent.
When finalizaing a vote, all votes are (re)evaluated against the block at which the finalization has started. This means with finalization, all votes are evaluated again to ensure they represent the latest state.
In terms of code this means:
_evaluateVotes() requires and additional limit, as a result of that finializeVoting() and finalizeVotingRoom() require a limit as well. castVotes() derives the limit from the vote amount that's being sent.
2023-10-04 11:18:42 +02:00
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