{"_id":"@bountygg/provably-fair","_rev":"11-9a7dd706cc791886131ec5fc7944fcb1","time":{"0.1.0":"2020-03-06T13:42:18.347Z","created":"2020-03-06T13:59:07.272Z","0.1.1":"2020-03-06T13:59:07.687Z","modified":"2022-04-04T20:16:09.685Z","0.2.0":"2020-03-07T14:52:05.265Z","0.2.1":"2020-03-07T15:42:37.141Z","1.0.0":"2020-03-07T17:56:18.938Z","1.1.0":"2020-06-03T15:58:50.683Z","1.1.1":"2020-06-03T16:08:21.916Z"},"name":"@bountygg/provably-fair","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@bountygg/provably-fair","version":"1.0.0","description":"Hello from the bounty.gg team 👋","main":"dist/index.js","scripts":{"build":"tsc"},"license":"UNLICENSED","devDependencies":{"@types/chance":"1.0.8","@types/node":"^13.7.7","@yarnpkg/pnpify":"^2.0.0-rc.18","tsc":"^1.20150623.0","typescript":"^3.8.3"},"dependencies":{"chance":"^1.1.4","decimal.js":"^10.2.0","random-org":"^2.0.1"},"gitHead":"f2b8d95b7b0cc653bbc178f48c0167089140597d","_id":"@bountygg/provably-fair@1.0.0","_nodeVersion":"13.10.1","_npmVersion":"6.13.7","dist":{"integrity":"sha512-z89wheQnixercVHPegPMXqMaGhJA3KbRVy6ObDWg2Pp9pkKPe+7DMQoAk7tBBtAgkwtoEl4+oYRiKElVl6ECiQ==","shasum":"5bc6e4ccd0d3bc834b7a5ba836d06761ca4dd47d","tarball":"https://registry.npmjs.org/@bountygg/provably-fair/-/provably-fair-1.0.0.tgz","fileCount":6,"unpackedSize":7803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeY+BDCRA9TVsSAnZWagAAKlUP/1STqCZCe61WUYDOwKN+\nkw2vVgC5d197AT64/2qk8ceS8xD9VjxBvluC/EUKwu5ClmdSNihjE9cgjFTw\nYYivYX/zUBYIAy9cdVhk/LI1tBB2aD84mKyZQzC4cvk9hzRYQ4QviIXUOyCi\nUVClGsrhxXB/YvADSD5bvffc/76hi2jJq7e7Y/TwUGYzUgwRWYIPnkODUl9j\n24kBAnMIr+iziy8tF6dADW9YcX9SgS11ngol2al5eEoJj0hHabKkN7bXcWvw\nLZIoJ+td6Z9Su9SaMXeNXYyFmAyT4a2GaBnsEz6kRTrVXQs05BUVeE1HwFAF\niBVVGd6J9ww82GVn++YGKlsbOVPu3xDw+csluDuFq6YTwWU8n5A3pq9SgMvo\neUS2uz9C5iUnvP3gZXMmsAREy1mdbGGYilZxirDpnz2gun1MboaNmiLpbvcV\nKdpHhP5/aEXyIktGJ0P7YksjwTor5yfJHdQxtikbehRDn71o+8OZISq6ipoI\nQzVmHlMmUM49pCL65SuB+Okv7NqiQUg9Ao/Zy0CvtvsBAhqGiBdjNi7ZSHvb\nV8LM1OUKLCdW2VuysEvs+drRYBI0yNdh3Y0NNUA3argFaXmbBQpXI9TYJ6DK\nbBKhoAs3y2+zjDCLgNxq3dmzJNxk7xtdasS6OgQ44bjHFpLTkLbsWXFgJhh3\nS7dg\r\n=OLXb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoJR30r8Jf2Yi8LJodzN6LpyOqjUGYzh6ckEnQeNNRhAiEA+ZYPZAiQbpqJPcHUnpF1kAycTEiBWy6H5j1BtQ+By7A="}]},"maintainers":[{"name":"bobtheshoplifter","email":"tata112spiller@gmail.com"},{"name":"gameghostify","email":"gameghostify@gmail.com"}],"_npmUser":{"name":"gameghostify","email":"gameghostify@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provably-fair_1.0.0_1583603778806_0.6365328884927828"},"_hasShrinkwrap":false},"1.1.0":{"name":"@bountygg/provably-fair","version":"1.1.0","description":"Hello from the bounty.gg team 👋","main":"dist/index.js","scripts":{"build":"tsc"},"license":"UNLICENSED","devDependencies":{"@types/chance":"1.0.8","@types/node":"^13.7.7","@yarnpkg/pnpify":"^2.0.0-rc.18","tsc":"^1.20150623.0","typescript":"^3.8.3"},"dependencies":{"chance":"^1.1.4","decimal.js":"^10.2.0","random-org":"^2.0.1"},"gitHead":"66d3cac97f7dfeed344f97abc67c44ed1c3cf6da","_id":"@bountygg/provably-fair@1.1.0","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-rq+aQeH4W2XKJ40zzCSq21byGClpTbVLS+cs1stU70PRIlj9eXqZAWOFT0PK6CQYL89vzmZutbzY8lraFDXskA==","shasum":"f3742101be5fb9629513dc75dcf97a945770d035","tarball":"https://registry.npmjs.org/@bountygg/provably-fair/-/provably-fair-1.1.0.tgz","fileCount":2,"unpackedSize":1898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe18i7CRA9TVsSAnZWagAA1pMP/2pB1UBsmklRK7dymHaP\nrn48FcT4R1W2Z7CDFvhLt2ewckxMVsEJCyHRSWN6hn+rcyccax9+PrXruuxw\ncavW8iIuI2EPxN/DMXAxGtZfrXtQVgKQoCC9pmpksogiegHvwVm/caTbSIUr\nc0BIzjLyNq9FuqPhxncyIpfqbiqJUeW03M7bDYaR/UZi4TQTwINu+gz+yQ1a\nzia+ySLFSmoJEMLnjrRzToLq1B0hFq5HMES8jcoWUAFDc45U2NmbJeToMk0G\nnfPMDWG60mAMmGwkNgisbXYMQSgLl4oeqMv82M5TxkqzU0THOAMof32181py\nSWGO3kX7d++p0+IB0q99XK8vVK7jKiD+gBXI4j8fa0bXEriULkDu7MgTXsFp\nYhRhYe8172OBkxlGz0rCXV+rTRa85c0SAyy69kQWOpKtvlNvBKN3bUipgRPP\n81KoiacMYXztl8WWYVToPozese7kxPxZGut+u4kLq+ZudfV3yg1w2fYs2ZwV\no4vnAsFudBPlQwvktstgFPn6FvsEDeKee1FPqB/+VA7wLHbLp+LU1piz9eOL\n2JgsLBRCqBf2QQyXosf6Z/eei2HLlG5i4H0eomRjdPKBsJk+0Nsk7KXqdr+e\nWPsDvPgXbA1wu1q/WhZyF0NalAaRH28ssnpzTE2uXEd9U0h+vH2E/V4BP3Ha\n1SXL\r\n=Bp0a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD24Q34gBT7TJ8HjSVhDYWrxLknhsB/bBBUh1ZdFvhgqgIhAOuriLUSfQVwvtXP5Ba3Ngqf9lOY0W5ndCljF6JbD6B9"}]},"maintainers":[{"name":"bobtheshoplifter","email":"tata112spiller@gmail.com"},{"name":"gameghostify","email":"gameghostify@gmail.com"}],"_npmUser":{"name":"gameghostify","email":"gameghostify@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provably-fair_1.1.0_1591199930530_0.9301361149871199"},"_hasShrinkwrap":false},"1.1.1":{"name":"@bountygg/provably-fair","version":"1.1.1","description":"Hello from the bounty.gg team 👋","main":"dist/index.js","scripts":{"build":"tsc"},"license":"UNLICENSED","devDependencies":{"@types/chance":"1.0.8","@types/node":"^13.7.7","@yarnpkg/pnpify":"^2.0.0-rc.18","tsc":"^1.20150623.0","typescript":"^3.8.3"},"dependencies":{"chance":"^1.1.4","decimal.js":"^10.2.0","random-org":"^2.0.1"},"gitHead":"227a02e5843fc1eca2ab77de9b1e9d01813417b7","_id":"@bountygg/provably-fair@1.1.1","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-MAQt+QDLts4A2nbPS9MWaTmrUihLCnFutT16UKRKmQ76ARarFsCmwD41rvBDmqFp5dTNrtDxeSys2/Ifq2AjUQ==","shasum":"c37864fada0519f3abefd4281a424c00849f33af","tarball":"https://registry.npmjs.org/@bountygg/provably-fair/-/provably-fair-1.1.1.tgz","fileCount":6,"unpackedSize":8111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe18r2CRA9TVsSAnZWagAAH6MQAJ6/Jlmpexb7N6gyr4Ch\nxWWeWtdRmHCadtOfFq37NLVoPVQ73GVR8XWp+UQYew/jK8aUDdAAkrPxg/2v\n2pGAKNlxkb6PTYMcxjpHdVdxsM1mhJ90HkFhXNCZwN+W9AlpL8YgDc0me7ta\nZnslsZSVzy5IgbRtc5l0Rg5LR1zQ3iRN0CN/oseGGEFetjp/CygSpvkD3hzq\n88WMbvemNz+jFE2/P3OjR1u2cBGmuoH9NZ2GzScFF34YsGRYkez/lNtsEDAw\nkcetmSxthFzrRtKZENfChtg8DQz6TZssyFyhjnXs8pM0hvIZeqsSTLBdtZG6\nO71vhVa8tkYjCnKf9VivwZ2VUSc4XaVsSZs+F2R3zB4XdUc5kGHwE6miCMMV\nDLyCbd0v1R+LE8z5ecyMsQ7D8o10k6AP5E+7kfWLTBWEAi6kp2YilPSEgW6F\nt9VR/Se+rmTK5X0JjXKukNbVkoPPtSanygJ43u3bcAvC51OQM8/QMB9i0wxc\n6mKrhNUsvuzdz9x5kUlJnqAsP6zLMqhpHVsYvUVy+1wlZFN5AbwIezNHLpvc\nm6bTS0VSTBnJCHLR4jzrF5veMWyEskwNvaOmvUOYaW4njS+hDKbEK5n7QSTP\nsnwPvcGjR4pPnNXb6wOnxVZnm5g53NpBbmn9DJ6ZxD+ZsIJ+7SigrQ++mZSV\n9gIx\r\n=OdBJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7lyre3vsxBvtmCF7WGRnFZ6T4bAL5c7hgEPAHeuNWrAIgGtxHjRXURFa6urB3fbzq/fxvPvbbM9XnlO9DMWfqYT8="}]},"maintainers":[{"name":"bobtheshoplifter","email":"tata112spiller@gmail.com"},{"name":"gameghostify","email":"gameghostify@gmail.com"}],"_npmUser":{"name":"gameghostify","email":"gameghostify@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/provably-fair_1.1.1_1591200501798_0.6411846977895395"},"_hasShrinkwrap":false}},"maintainers":[{"name":"bobtheshoplifter","email":"tata112spiller@gmail.com"},{"name":"gameghostify","email":"gameghostify@gmail.com"}],"license":"UNLICENSED","readme":"Hello from the bounty.gg team 👋\r\n\r\nWe feel it's important to stay transparent, which is why we're\r\nmaking the official provably fair implementation used on the bounty.gg servers\r\npublic here\r\n\r\n# Usage\r\n\r\n```js\r\nconst pf = require(\"@bountygg/provably-fair\");\r\n\r\nasync function aQuickTestRun() {\r\n\tconst ticketCount = 10000; // lets pretend there are 10k tickets in the jackpot round\r\n\r\n\t// generate a random string\r\n\tconst serverSeed = pf.getRandomBytes();\r\n\t// get a random string from a third party (here random.org)\r\n\tconst thirdPartySalt = (await pf.getThirdPartySalt()).value;\r\n\t// concat both seeds\r\n\tconst fullSeed = `${serverSeed}-${thirdPartySeed}`;\r\n\t// get winning percentage based on both the locally-generated `serverSeed` and the third-party `thirdPartySeed`\r\n\t// see https://chancejs.com/usage/seed.html for an example implementation\r\n\tconst winningPercentage = pf.getPseudoRandomPercentage(fullSeed);\r\n\r\n\t// we're done! now we're able to get the winning ticket\r\n\tconst winningTicket = pf.getWinningTicket(winningPercentage, ticketCount);\r\n\r\n\tconsole.table({\r\n\t\tticketCount,\r\n\t\tserverSeed,\r\n\t\tthirdPartySeed,\r\n\t\tfullSeed,\r\n\t\twinningPercentage: winningPercentage.toNumber(),\r\n\t\twinningTicket\r\n\t});\r\n}\r\n\r\naQuickTestRun();\r\n```\r\n\r\nRun the example above with\r\n\r\n```sh\r\nRANDOM_ORG_API_KEY=\\<your random.org api key\\> node index.js\r\n```\r\n\r\nYou can get a free api key for the random.org gRPC api from [api.random.org](https://api.random.org/dashboard)\r\n","readmeFilename":"README.md","description":"Hello from the bounty.gg team 👋"}