{"id":25249534,"url":"https://github.com/provable-things/provable-starter-kit","last_synced_at":"2025-10-26T22:31:12.442Z","repository":{"id":42335504,"uuid":"191981430","full_name":"provable-things/provable-starter-kit","owner":"provable-things","description":"A Provable \u0026 OpenZeppelin starter-kit for building data-rich smart-contracts!","archived":false,"fork":false,"pushed_at":"2022-12-10T05:07:00.000Z","size":1552,"stargazers_count":20,"open_issues_count":12,"forks_count":8,"subscribers_count":3,"default_branch":"stable","last_synced_at":"2024-04-08T22:21:12.182Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/provable-things.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-14T17:22:42.000Z","updated_at":"2024-02-06T19:17:23.000Z","dependencies_parsed_at":"2023-01-26T02:46:26.072Z","dependency_job_id":null,"html_url":"https://github.com/provable-things/provable-starter-kit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/provable-things%2Fprovable-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/provable-things%2Fprovable-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/provable-things%2Fprovable-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/provable-things%2Fprovable-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/provable-things","download_url":"https://codeload.github.com/provable-things/provable-starter-kit/tar.gz/refs/heads/stable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238405182,"owners_count":19466450,"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":"2025-02-12T03:22:26.976Z","updated_at":"2025-10-26T22:31:12.063Z","avatar_url":"https://github.com/provable-things.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :lock_with_ink_pen: Provable-Zeppelin\n\n\u0026nbsp;\n\nA __Provable \u0026 ZeppelinOS__ collaboration showing you how to use __Provable__ alongside __ZeppelinOS__ in order to create data-rich smart-contracts leveraging external APIs!\n\nThis example shows you how to deploy a simple crowdsale contract which uses __Provable__ to discover the price of ETH in USD in order to correctly set the price for the tokens you're selling to $1!\n\n\u0026nbsp;\n\n***\n\n## :point_right: How to use:\n\n__Pre Flight Checks)__ You will need Node, NPM \u0026 a browser with Metamask installed!\n\n__1)__ First install the Open Zeppelin CLI, Truffle \u0026 Ganache globally:\n\n__`❍ npm i -g @openzeppelin/cli@2.5.1 truffle@5.0.2 ganache-cli@6.3.0`__\n\n__2)__ Now unpack this starter kit in an empty directory:\n\n__`❍ openzeppelin unpack provable-things/provable-starter-kit`__\n\n__3)__ Next, fire up a _new_ terminal \u0026 start up a local blockchain instance with Ganache via:\n\n__`❍ ganache-cli --secure -u 0 -u 1 -u 2 --deterministic`__\n\n__4)__ Then in the root of the repo run the setup script:\n\n__`❍ npm run setup`__\n\n__5)__ Then use the Open Zeppelin CLI initialize your project:\n\n__`❍ openzeppelin init provable-starter-kit`__\n\n__6)__ Now enter the client directory and run the React app:\n\n__`❍ cd client \u0026\u0026 npm run start`__\n\n__7)__ Once the React app is built you can view it on your localhost by pointing your browser at:\n\n__`❍ http://localhost:3000`__\n\n__9)__ Now in your browser you should see that your Provable Starter-kit is up \u0026 running! Click on __`Provable Crowdsale`__ in the top right corner to begin creating the example dapp!\n\n#### :computer: Happy Developing!\n\n\u0026nbsp;\n\n***\n\n## :page_with_curl:  _Smart-Contract Test Instructions_\n\nIn order to run the smart-contract tests you will need to use the __`ethereum-bridge`__ to provide a way for the Provable service to listen to events from your locally-based smart-contract(s). To get it up and running:\n\n**1)** Enter this directory \u0026 install dependencies:\n\n__`❍ npm i`__\n\n**2)** Launch the Truffle develop console:\n\n__`❍ npx truffle develop`__\n\n**3)** Open a _new_ console in the same directory \u0026 spool up the __`ethereum-bridge`__:\n\n__`❍ npx ethereum-bridge -a 9 -H 127.0.0.1 -p 9545 --dev`__\n\n**4)** Once the bridge is ready \u0026 listening, go back to the first terminal where you have the Truffle development console running \u0026 set the tests going:\n\n__`❍ truffle(develop)\u003e test`__\n\n```\n\n  Contract: ❍ Provable Zeppelin Example\n    ❍ Crowdsale Tests\n      ✓ Should deploy a token (136ms)\n      ✓ Should deploy the Provable Zeppelin Crowdsale Contract (139ms)\n      ✓ Should give the crowdsale contract all the tokens (71ms)\n      ✓ Should get web3 instantiation of contract to listen for events\n      ✓ Owner can't init crowdsale before getting ETH price\n      ✓ Non-owner can't get eth prices via Provable\n      ✓ Should get ETH price in cents (6789ms)\n      ✓ Should have stored ETH price in cents in contract\n      ✓ Non-owner can't init crowdsale even if ETH price retrieved (38ms)\n      ✓ Crowdsale should not yet be initialized\n      ✓ Should successfully init crowdsale (46ms)\n      ✓ Crowdsale should now be initialized (71ms)\n      ✓ Should have set price per token in crowdsale contract\n      ✓ Should have calculated price per token in wei correctly\n      ✓ Should not be able to buy \u003c 1 token (65ms)\n      ✓ Should be able to buy a token (89ms)\n      ✓ Should refund any change from buying tokens (100ms)\n\n\n  17 passing (9s)\n\ntruffle(develop)\u003e\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprovable-things%2Fprovable-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprovable-things%2Fprovable-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprovable-things%2Fprovable-starter-kit/lists"}