From dacc3c89f9d12a6828e7a3b8fa7e6b8024d8ba63 Mon Sep 17 00:00:00 2001 From: "harshil.bhagat@perpetualblock.io" Date: Thu, 13 Jul 2023 15:19:46 +0530 Subject: [PATCH 1/3] add pbdao-staking strategy --- src/strategies/pbdao-staking/README.md | 36 +++++++++++++++ src/strategies/pbdao-staking/examples.json | 19 ++++++++ src/strategies/pbdao-staking/index.ts | 52 ++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 src/strategies/pbdao-staking/README.md create mode 100644 src/strategies/pbdao-staking/examples.json create mode 100644 src/strategies/pbdao-staking/index.ts diff --git a/src/strategies/pbdao-staking/README.md b/src/strategies/pbdao-staking/README.md new file mode 100644 index 000000000..29a08727d --- /dev/null +++ b/src/strategies/pbdao-staking/README.md @@ -0,0 +1,36 @@ +# PB DAO stakers and holders strategy + +This strategy return the balances of the voters for PB DAO project from staking pool. + +## Accepted options + +- **staking:** PB DAO staking pool address. + +## Examples + +```JSON +[ + { + "name": "PBDAO Staker and Holders", + "strategy": { + "name": "pbdao-staking", + "params": { + "staking": "0x0A44B248C871dEcFcC46427207543e39f5234590", + "symbol": "PBDAO", + "decimals": 0 + } + }, + "network": "1", + "addresses": [ + "0xcb5C730A85795b20C1fdB543B64B2ED164333803", + "0x4252a493899D1E2D1573Ff4084446C095C75055E", + "0x24d19f100ba142543a863fc2294b188e35ab55b9" + ], + "snapshot": 13439719 + } +] + + + + +``` diff --git a/src/strategies/pbdao-staking/examples.json b/src/strategies/pbdao-staking/examples.json new file mode 100644 index 000000000..31501e978 --- /dev/null +++ b/src/strategies/pbdao-staking/examples.json @@ -0,0 +1,19 @@ +[ + { + "name": "PBDAO Staker and Holders", + "strategy": { + "name": "pbdao-staking", + "params": { + "staking": "0x68483E34A38DDABF956536C30aB96960f821EAd0" + + } + }, + "network": "5", + "addresses": [ + "0x7C0Df718F7C55FCDacad80d654092D5dfD2ce1dA", + "0x1924560F4b53CC35b1559359c2Bf8a1c22833596", + "0x0Cbe93D85a6de8258E797962eB59249e39D1d069" + ], + "snapshot": 9287186 + } +] diff --git a/src/strategies/pbdao-staking/index.ts b/src/strategies/pbdao-staking/index.ts new file mode 100644 index 000000000..681f26b7b --- /dev/null +++ b/src/strategies/pbdao-staking/index.ts @@ -0,0 +1,52 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Multicaller } from '../../utils'; +import { BigNumberish } from '@ethersproject/bignumber'; +import { formatUnits } from '@ethersproject/units'; + +export const author = 'PB'; +export const version = '0.1.0'; + +// to interact with the staking and token contracts. +const stakingAbi = [ + 'function depositsOf(address account) external view virtual override returns (uint256)' +]; + +export async function strategy( + space: string, + network: string, + provider: any, + addresses: string[], + options: any, + snapshot: number +): Promise> { + const blockTag = typeof snapshot === 'number' ? snapshot : 'latest'; + + const stakingPool = new Multicaller(network, provider, stakingAbi, { + blockTag + }); + + addresses.forEach((address) => { + stakingPool.call(address, options.staking, 'depositsOf', [address]); + }); + + const result: Record = await stakingPool.execute(); + + return Object.fromEntries( + Object.entries(result).map(([address, balance]) => { + console.log(address, balance); + return [address, parseFloat(formatUnits(balance, options.decimals))]; + }) + ); + // try { + // const [stakingResponse] = await Promise.all([stakingPool.execute()]); + // return Object.fromEntries( + // addresses.map((address) => { + // const stakingCount = stakingResponse[address].length; + // return [address, stakingCount]; + // }) + // ); + // } catch (error) { + // console.error('Error retrieving staking data:', error); + // return {}; + // } +} From 63b2c3f91ebdcd074272ce5394e9ad079ac01695 Mon Sep 17 00:00:00 2001 From: Chaitanya Date: Mon, 17 Jul 2023 11:59:39 +0530 Subject: [PATCH 2/3] pbdaoStaking --- src/strategies/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strategies/index.ts b/src/strategies/index.ts index b5de2e8a8..402e3d0af 100644 --- a/src/strategies/index.ts +++ b/src/strategies/index.ts @@ -447,6 +447,7 @@ import * as starlayVeBalanceOfLockerId from './starlay-ve-balance-of-locker-id'; import * as winrStaking from './winr-staking'; import * as spaceid from './spaceid'; import * as seedifyHoldStakingFarming from './seedify-cumulative-voting-power-hodl-staking-farming'; +import * as pbdaoStaking from './pbdao-staking'; const strategies = { 'cap-voting-power': capVotingPower, @@ -900,8 +901,8 @@ const strategies = { 'starlay-ve-balance-of-locker-id': starlayVeBalanceOfLockerId, 'winr-staking': winrStaking, spaceid, - 'seedify-cumulative-voting-power-hodl-staking-farming': - seedifyHoldStakingFarming + 'seedify-cumulative-voting-power-hodl-staking-farming': seedifyHoldStakingFarming, + 'pbdaoStaking': pbdaoStaking }; Object.keys(strategies).forEach(function (strategyName) { From 671af19a1d7be702baff8e752ca8d129529bf975 Mon Sep 17 00:00:00 2001 From: Chaitanya Date: Mon, 17 Jul 2023 14:23:43 +0530 Subject: [PATCH 3/3] Update src/strategies/index.ts --- src/strategies/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strategies/index.ts b/src/strategies/index.ts index 402e3d0af..4bcf0b38b 100644 --- a/src/strategies/index.ts +++ b/src/strategies/index.ts @@ -902,7 +902,7 @@ const strategies = { 'winr-staking': winrStaking, spaceid, 'seedify-cumulative-voting-power-hodl-staking-farming': seedifyHoldStakingFarming, - 'pbdaoStaking': pbdaoStaking + 'pbdao-staking': pbdaoStaking }; Object.keys(strategies).forEach(function (strategyName) {