Package Exports
- @verto/tippar
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@verto/tippar) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Tippar
A simple library to select which PST token holder receives a tip. With the addition of SmartWeave contracts being able to custody different types of PSTs, there now needs to be a way for tips to be distributed to contracts in addition to wallets.
How it works
Tippar chooses token holders from contract(s) in recursion until a wallet is selected. Take note of the following examples:
A tip needs to be given to a token holder in Contract A
Tippar Process:
select holder from contract (A)
if holder === contract (B)
select new holder from contract (B)
if new holder === wallet
return new holder
else
...continue recursionReal-World Example:
An ArDrive user is sending a tip to an ArDrive holder. If the random token-holder selected to receive the tip is the Verto Contract, a new token-holder is calculated from the users who hold a balance of VRT. This means that the ArDrive tip will now be sent to the VRT token holder.
Usage
yarn add @verto/tipparchooseRecipient
async function chooseRecipient(client: Arweave, contract: string, mode?: string): Promise<string>client: Arweave client instancecontract: Profit-Sharing token contract to choose holder frommode?: Optional parameter for setting type of selection- "weightedRandom": Select token holder based on a weighted-random
- "greatest": Select token holder from the the greatest balance
- Defaults to "weightedRandom"
Example:
import { chooseRecipient } from "@verto/tippar;
async function someUserInteraction() {
...
const tipReceiver = await chooseRecipient(arweaveClient, pstContract);
console.log(`Wallet of tip receiver: ${tipReceiver}`);
...
}Contributing
Any and all contributions are welcome. Feel free to make a PR with any updates for fixes.