{"id":20030757,"url":"https://github.com/generationsoftware/pt-v5-worldchain-prize-vault","last_synced_at":"2026-05-12T17:47:03.864Z","repository":{"id":259072696,"uuid":"866653292","full_name":"GenerationSoftware/pt-v5-worldchain-prize-vault","owner":"GenerationSoftware","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-10T21:38:09.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T17:47:20.373Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GenerationSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-02T16:32:18.000Z","updated_at":"2024-10-21T16:51:16.000Z","dependencies_parsed_at":"2024-10-22T07:30:12.939Z","dependency_job_id":null,"html_url":"https://github.com/GenerationSoftware/pt-v5-worldchain-prize-vault","commit_stats":null,"previous_names":["generationsoftware/pt-v5-worldchain-prize-vault"],"tags_count":0,"template":false,"template_full_name":"GenerationSoftware/foundry-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenerationSoftware%2Fpt-v5-worldchain-prize-vault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenerationSoftware%2Fpt-v5-worldchain-prize-vault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenerationSoftware%2Fpt-v5-worldchain-prize-vault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GenerationSoftware%2Fpt-v5-worldchain-prize-vault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GenerationSoftware","download_url":"https://codeload.github.com/GenerationSoftware/pt-v5-worldchain-prize-vault/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241461900,"owners_count":19966772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T09:28:07.634Z","updated_at":"2026-05-12T17:47:03.832Z","avatar_url":"https://github.com/GenerationSoftware.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PoolTogether V5 Worldchain Prize Vault\n\nThis is a specialty prize vault for PoolTogether on World Chain that only allows accounts that have verified with a World ID to deposit and win prizes. Addresses are verified using an address book contract provided on worldchain. In addition, the owner of this vault can set a deposit limit that cannot be exceeded by verified accounts.\n\n## Assumptions\n\n- This vault has no yield source and will generate win chance through external contributions to the prize pool on its behalf.\n- It is assumed that a single World ID can only verify one address at a time and that they must wait 3 months before verifying a new address.\n- The asset of this vault will be the Worldcoin token on World Chain, which will also be the prize token of the prize pool.\n- The claimer contract used for this vault is assumed to be functional and will incentivise all available prizes to be claimed.\n- No assets will be directly sent to the vault without the use of a `deposit` or `mint` function. These will be lost forever if they are sent to the vault directly.\n- The vault share token will not be used for any other purpose other than holding for win chance (for example, there will be no liquidity of the vault share on AMMs)\n\n## Known Issues\n\n- Since world IDs can verify new addresses every few months, a depositor can gain more win chance every few months by verifying a new address and depositing more with that address. This will not be addressed in this implementation.\n- It is possible for a verified account to end up with more vault shares than the current max limit if they deposited prior to the vault owner lowering the max deposit limit. The owner will be aware of this issue.\n\n## Development\n\n### Installation\n\nYou may have to install the following tools to use this repository:\n\n- [Foundry](https://github.com/foundry-rs/foundry) to compile and test contracts\n- [direnv](https://direnv.net/) to handle environment variables\n- [lcov](https://github.com/linux-test-project/lcov) to generate the code coverage report\n\nInstall dependencies:\n\n```\nnpm i\nforge install\n```\n\n### Env\n\nCopy `.envrc.example` and write down the env variables needed to run this project.\n\n```\ncp .envrc.example .envrc\n```\n\nOnce your env variables are setup, load them with:\n\n```\ndirenv allow\n```\n\n### Compile\n\nRun the following command to compile the contracts:\n\n```\nnpm run compile\n```\n\n### Coverage\n\nForge is used for coverage, run it with:\n\n```\nnpm run coverage\n```\n\nYou can then consult the report by opening `coverage/index.html`:\n\n```\nopen coverage/index.html\n```\n\n### Code quality\n\n[Prettier](https://prettier.io) is used to format TypeScript and Solidity code. Use it by running:\n\n```\nnpm run format\n```\n\n[Solhint](https://protofire.github.io/solhint/) is used to lint Solidity files. Run it with:\n\n```\nnpm run hint\n```\n\n### CI\n\nA default Github Actions workflow is setup to execute on push and pull request.\n\nIt will build the contracts and run the test coverage.\n\nYou can modify it here: [.github/workflows/coverage.yml](.github/workflows/coverage.yml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenerationsoftware%2Fpt-v5-worldchain-prize-vault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenerationsoftware%2Fpt-v5-worldchain-prize-vault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenerationsoftware%2Fpt-v5-worldchain-prize-vault/lists"}