Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@generationsoftware/js-winner-calc

Package Overview
Dependencies
Maintainers
0
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@generationsoftware/js-winner-calc

Calculates PoolTogether V5 winners in JavaScript.

  • 1.1.3
  • npm
  • Socket score

Version published
Weekly downloads
1.6K
increased by2.88%
Maintainers
0
Weekly downloads
 
Created
Source

PoolTogether JS Winner Calculator

This library calculates PoolTogether V5 winners completely in JavaScript for use in NodeJS or in a browser.

Installation

This library is installable as an NPM package using the following command:

npm i @generationsoftware/js-winner-calc

How to Calculate Winners for a Vault

[!Important] This script batches RPC queries for a given vault, so you'll need to run it for each vault that you want to check prizes for. If you are querying results for many users, it is recommended to use a private RPC endpoint to avoid public rate limits.

import { computeWinners } from "@generationsoftware/js-winner-calc";

const winners = await computeWinners({
  chainId: 10,
  rpcUrl: "https://mainnet.optimism.io/",
  prizePoolAddress: "0xF35fE10ffd0a9672d0095c435fd8767A7fe29B55",
  vaultAddress: "0xa52e38a9147f5eA9E0c5547376c21c9E3F3e5e1f",
  userAddresses: ["0xe24bC6c67fEF2FFe40283c1359dCE44bd19c72C4"],
})

The results will look like the following, with an array of winners and a mapping of prize tier to prize indices for each winner:

[
  {
    "user": "0xe24bC6c67fEF2FFe40283c1359dCE44bd19c72C4",
    "prizes": {
      "4": [
        11
      ],
      "5": [
        451,
        685,
        941
      ]
    }
  }
]

Optional Arguments

ignoreCanaries

Ignores the last two tiers (canary tiers) when computing wins. Enabling this will significantly speed up the calculation, but should only be used if you have no need for canary tier wins in your application.

Example:
const winners = await computeWinners({
  ...,
  ignoreCanaries: true
})

multicallBatchSize

Set the multicallBatchSize argument in the input json file to limit multicall size (in bytes) for RPC calls. Different RPCs may have harsher limits than others.

Example:
const winners = await computeWinners({
  ...,
  multicallBatchSize: 2048
})

blockNumber

The blockNumber argument can be set to run the script at a specific block number instead of the current block. Must be either a number or string that can be parsed into a BigInt.

Example:
const winners = await computeWinners({
  ...,
  blockNumber: 121970626n
})

debug

The debug argument is an optional boolean. When set, some extra logs will be included to help debug issues.

Example:
const winners = await computeWinners({
  ...,
  debug: true
})

Local Development

  1. clone this repo
  2. run npm i
  3. run npm run dev

FAQs

Package last updated on 10 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc