diff --git a/js-scripts/generateRedemptionRights/index.ts b/js-scripts/generateRedemptionRights/index.ts
index 72f1810..09e20ce 100644
--- a/js-scripts/generateRedemptionRights/index.ts
+++ b/js-scripts/generateRedemptionRights/index.ts
@@ -9,11 +9,13 @@ import {
Address,
zeroAddress,
PublicClient,
+ getContract,
+ erc20Abi,
} from "viem";
import { mainnet } from "viem/chains";
import { MerkleTree } from "merkletreejs";
-// Core types
+// Types
type PointsBalance = Map<`0x${string}`, bigint>;
type RedemptionRightsMap = Map
;
@@ -48,15 +50,22 @@ interface MerklizedData {
}
interface PTokenSnapshot {
+ address: Address;
blockNumber: string;
balances: {
- [address: string]: string; // Using string for BigInt serialization
+ [address: string]: string;
};
}
-// TODO: account for LPs
+// Overrides
+const UNI_POOL_OVERRIDES = {
+ "0x597a1b0515bbeEe6796B89a6f403c3fD41BB626C": {
+ "0x24C694d193B19119bcDea9D40a3b0bfaFb281E6D": 6487631537430741114,
+ "0x44Cb2d713BDa3858001f038645fD05E23E5DE03D": 27597767454066598826095,
+ },
+};
-// Load config
+// Config
dotenv.config({ path: "./js-scripts/generateRedemptionRights/.env" });
const config = {
rpcUrl: process.env.MAINNET_RPC_URL,
@@ -64,16 +73,19 @@ const config = {
","
) as Address[],
pointsIds: (process.env.POINTS_IDS as string)?.split(",") as `0x${string}`[],
- rewardsPerPToken: process.env.REWARDS_PER_P_TOKEN as string,
+ rewardsPerPToken: (process.env.REWARDS_PER_P_TOKEN as string)?.split(
+ ","
+ ) as string[],
};
// Core functions
async function calculateRedemptionRights(
client: PublicClient,
- pTokenAddress: Address
+ pTokenAddress: Address,
+ rewardsMultiplier: string
): Promise<[Map, PTokenSnapshot]> {
const redemptionRights = new Map();
- const rewardsMultiplier = BigInt(config.rewardsPerPToken);
+ const rewardsMultiplierBigInt = BigInt(rewardsMultiplier);
const blockNumber = await client.getBlockNumber();
const logs = await client.getLogs({
@@ -96,7 +108,7 @@ async function calculateRedemptionRights(
redemptionRights.set(
from,
(redemptionRights.get(from) || 0n) -
- (value * rewardsMultiplier) / BigInt(1e18)
+ (value * rewardsMultiplierBigInt) / BigInt(1e18)
);
pTokenBalances.set(from, (pTokenBalances.get(from) || 0n) - value);
}
@@ -104,14 +116,44 @@ async function calculateRedemptionRights(
redemptionRights.set(
to,
(redemptionRights.get(to) || 0n) +
- (value * rewardsMultiplier) / BigInt(1e18)
+ (value * rewardsMultiplierBigInt) / BigInt(1e18)
);
pTokenBalances.set(to, (pTokenBalances.get(to) || 0n) + value);
}
}
+ // Apply UNI pool overrides after processing all transfers
+ for (const [poolAddress, redistributions] of Object.entries(
+ UNI_POOL_OVERRIDES
+ )) {
+ const poolBalance = pTokenBalances.get(poolAddress as Address) || 0n;
+ if (poolBalance > 0n) {
+ // Remove balance from pool
+ pTokenBalances.set(poolAddress as Address, 0n);
+ redemptionRights.set(poolAddress as Address, 0n);
+
+ // Redistribute to specified addresses
+ for (const [recipient, amount] of Object.entries(redistributions)) {
+ const recipientAddress = recipient as Address;
+ const overrideAmount = BigInt(amount);
+
+ pTokenBalances.set(
+ recipientAddress,
+ (pTokenBalances.get(recipientAddress) || 0n) + overrideAmount
+ );
+
+ redemptionRights.set(
+ recipientAddress,
+ (redemptionRights.get(recipientAddress) || 0n) +
+ (overrideAmount * rewardsMultiplierBigInt) / BigInt(1e18)
+ );
+ }
+ }
+ }
+
// Create snapshot object
const snapshot: PTokenSnapshot = {
+ address: pTokenAddress,
blockNumber: blockNumber.toString(),
balances: Object.fromEntries(
Array.from(pTokenBalances.entries())
@@ -131,13 +173,13 @@ async function calculateRedemptionRights(
}
function generateMerkleData(
- allRights: RedemptionRightsMap,
+ allRedemptionRights: RedemptionRightsMap,
previousDistribution: AlphaDistributionData
): MerklizedData {
const prefix = keccak256(encodePacked(["string"], ["REDEMPTION_RIGHTS"]));
- // Generate leaves
- const rightsLeaves = Array.from(allRights.entries()).flatMap(
+ // Generate redemption rights leaves
+ const rightsLeaves = Array.from(allRedemptionRights.entries()).flatMap(
([address, balances]) =>
Array.from(balances.entries()).map(([pointsId, balance]) =>
keccak256(
@@ -149,6 +191,7 @@ function generateMerkleData(
)
);
+ // Generate pTokens leaves
const pTokenLeaves = Object.entries(previousDistribution.pTokens).flatMap(
([address, pointsData]) =>
Object.entries(pointsData).map(([pointsId, data]) =>
@@ -175,8 +218,8 @@ function generateMerkleData(
return {
root: tree.getHexRoot() as `0x${string}`,
redemptionRights: Object.fromEntries(
- Array.from(allRights.entries()).map(([addr, balances]) => [
- addr,
+ Array.from(allRedemptionRights.entries()).map(([address, balances]) => [
+ address,
Object.fromEntries(
Array.from(balances.entries()).map(([pointsId, balance]) => [
pointsId,
@@ -186,7 +229,7 @@ function generateMerkleData(
keccak256(
encodePacked(
["bytes32", "address", "bytes32", "uint256"],
- [prefix, addr, pointsId, balance]
+ [prefix, address, pointsId, balance]
)
)
) as `0x${string}`[],
@@ -196,29 +239,31 @@ function generateMerkleData(
])
),
pTokens: Object.fromEntries(
- Object.entries(previousDistribution.pTokens).map(([addr, pointsData]) => [
- addr,
- Object.fromEntries(
- Object.entries(pointsData).map(([pointsId, data]) => [
- pointsId,
- {
- amount: data.accumulatingPoints,
- proof: tree.getHexProof(
- keccak256(
- encodePacked(
- ["address", "bytes32", "uint256"],
- [
- addr as Address,
- pointsId as `0x${string}`,
- BigInt(data.accumulatingPoints),
- ]
+ Object.entries(previousDistribution.pTokens).map(
+ ([address, pointsData]) => [
+ address,
+ Object.fromEntries(
+ Object.entries(pointsData).map(([pointsId, data]) => [
+ pointsId,
+ {
+ amount: data.accumulatingPoints,
+ proof: tree.getHexProof(
+ keccak256(
+ encodePacked(
+ ["address", "bytes32", "uint256"],
+ [
+ address as Address,
+ pointsId as `0x${string}`,
+ BigInt(data.accumulatingPoints),
+ ]
+ )
)
- )
- ) as `0x${string}`[],
- },
- ])
- ),
- ])
+ ) as `0x${string}`[],
+ },
+ ])
+ ),
+ ]
+ )
),
};
}
@@ -230,7 +275,7 @@ async function generateMerkleTree(): Promise {
transport: http(config.rpcUrl),
});
- // Validate inputs
+ // Validate config
if (
!config.rpcUrl ||
!config.pTokenAddresses.length ||
@@ -243,27 +288,46 @@ async function generateMerkleTree(): Promise {
console.log(`Processing at block #${await client.getBlockNumber()}`);
// Calculate rights for each token
- const allRights: RedemptionRightsMap = new Map();
+ const allRedemptionRights: RedemptionRightsMap = new Map();
const snapshots: { [address: string]: PTokenSnapshot } = {};
for (let i = 0; i < config.pTokenAddresses.length; i++) {
const [rights, snapshot] = await calculateRedemptionRights(
client,
- config.pTokenAddresses[i]
+ config.pTokenAddresses[i],
+ config.rewardsPerPToken[i]
);
snapshots[config.pTokenAddresses[i]] = snapshot;
for (const [addr, balance] of rights.entries()) {
- if (!allRights.has(addr)) allRights.set(addr, new Map());
- allRights.get(addr)!.set(config.pointsIds[i], balance);
+ if (!allRedemptionRights.has(addr))
+ allRedemptionRights.set(addr, new Map());
+ allRedemptionRights.get(addr)!.set(config.pointsIds[i], balance);
}
}
- // Save snapshots
- fs.writeFileSync(
- "js-scripts/generateRedemptionRights/out/ptoken-snapshots.json",
- JSON.stringify(snapshots, null, 2)
- );
+ // Save individual snapshots for each pToken
+ for (const [pTokenAddress, snapshot] of Object.entries(snapshots)) {
+ const pTokenContract = getContract({
+ address: pTokenAddress as Address,
+ abi: erc20Abi,
+ client,
+ });
+
+ const symbol = await pTokenContract.read.symbol();
+ const fileName = `ptoken-snapshot-${symbol.toLowerCase()}.json`;
+
+ // Add address to the snapshot data
+ const snapshotWithAddress: PTokenSnapshot = {
+ address: pTokenAddress as Address,
+ ...snapshot,
+ };
+
+ fs.writeFileSync(
+ `js-scripts/generateRedemptionRights/out/${fileName}`,
+ JSON.stringify(snapshotWithAddress, null, 2)
+ );
+ }
// Generate merkle data
const previousDistribution = JSON.parse(
@@ -273,7 +337,10 @@ async function generateMerkleTree(): Promise {
)
) as AlphaDistributionData;
- const merklizedData = generateMerkleData(allRights, previousDistribution);
+ const merklizedData = generateMerkleData(
+ allRedemptionRights,
+ previousDistribution
+ );
console.log("Merkle root:", merklizedData.root);
fs.writeFileSync(
diff --git a/js-scripts/generateRedemptionRights/out/merged-distribution.json b/js-scripts/generateRedemptionRights/out/merged-distribution.json
index cb26a8e..1fae8dc 100644
--- a/js-scripts/generateRedemptionRights/out/merged-distribution.json
+++ b/js-scripts/generateRedemptionRights/out/merged-distribution.json
@@ -1,24 +1,15 @@
{
- "root": "0x602cdd6dd4f1c6f7bb049ce8b23a49e5177dc84830c7f00cc09eb0f11f03d9be",
+ "root": "0xc6097e6fdabc5c6207fa640553853c9d884cff674602c382f15660914b6d40c7",
"redemptionRights": {
"0x25E426b153e74Ab36b2685c3A464272De60888Ae": {
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": "52792622186481736164",
"proof": [
"0xc1a70bb7d5c4ddf647114cb36083bca867a80e37e187aa1d6705f3b12357d7cf",
- "0x04a635b0e5b8e5ac70059fb9dc2682f5102a3b4a2f8b2c0d6f1ea43b1e04272f",
- "0xab802966e4277e85c878dad4c849c7632735a56c3710c197470de81707286069",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
- ]
- }
- },
- "0x597a1b0515bbeEe6796B89a6f403c3fD41BB626C": {
- "0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
- "amount": "1749589083544816554749",
- "proof": [
- "0xf17cd78fb91097d6d817f63f61884a91c8d5ceedefd3ff761ad4621db6cdb688",
- "0xc7cee474205709d43f4e6496b9ac27153bc2588c648cf86cef7dfa86f2c440a1"
+ "0x9202bdda11a41be9ebfe610247d3e971e65959936bdf2d9186395b70d25d8d84",
+ "0x17c86983941dc9f87b11f6cd1f6f260f2c76f90e16024ad475204e07d99eedf4",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -28,9 +19,9 @@
"proof": [
"0x0b9dba6343a79836c09a8fe2151dfaeab44a90e1c590e664e142a46c5251c3e4",
"0x3aaef79be826edf6d7035f8ece860c534e8fa43b5d7a32581664fd7d9761fe39",
- "0x4cd045546ad35fb4ffbe7efabeb3d5e2cfe57317600c887220d3614239de3cdb",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xd045aba11e229f57f22207671f583c9fd3468713a70ce7237b486653d19d0bc0",
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -38,11 +29,11 @@
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": "19621036792277125819",
"proof": [
- "0x1b9305567ae250a289d9c9a662f2470db6a5b9396d0358bfebe9250f336348b0",
- "0x41ea528f3d329e1491631bb9a5a3a1632f5f1c9b308d70c53c855c7cf90924c3",
+ "0x33b677140d55397d85f1c789cd35975f28bdbb973fa125c5d895a95c1026266b",
+ "0x6b5537a4b44653f34378b50792bbe235eef8f48b5456fff6eaae8fdce431b45c",
"0xbb77a1bb065bc346c4f39dfaff16a845fb2f151394251a08a942b3aa793b654a",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -50,11 +41,11 @@
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": "7377567032082737967061",
"proof": [
- "0x33b677140d55397d85f1c789cd35975f28bdbb973fa125c5d895a95c1026266b",
- "0x9a562114e5173cb1802e3635ab3bed9c3c56c74532d5f34d57784f005ded3c36",
- "0xbb77a1bb065bc346c4f39dfaff16a845fb2f151394251a08a942b3aa793b654a",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x5697b38b5bd873ff3a8132059568adf332a3e70b8a5ca3e14c596b4fc43e6671",
+ "0x42a2346cc718889c9be2af3a107d12cb3900c221558ef5c0b3631f5c3ae2e5d4",
+ "0xa014a7c4ba0e9689e0f02bf17bc6eeff5d299ddf9dbd54459a03c318237e8e1b",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -62,8 +53,8 @@
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": "28648231580558995600834",
"proof": [
- "0xee2c966b96d8429ef64a79f7d8cb46647213dbb723885eb7a7826c0434797d2a",
- "0xc7cee474205709d43f4e6496b9ac27153bc2588c648cf86cef7dfa86f2c440a1"
+ "0x04a635b0e5b8e5ac70059fb9dc2682f5102a3b4a2f8b2c0d6f1ea43b1e04272f",
+ "0x5eeefedc919f5dec8d28214722f476b6e1a18460f90e03a3fc4889cae667fb44"
]
}
},
@@ -73,9 +64,33 @@
"proof": [
"0x1aabefcbeb1ba41043ba86b6019b4f0e9eda103bd89334b2dbd385b4b6fd0fb1",
"0xb1b1d68fe165491c5e58654565c779c68f1e0909168fb478480f1ebb22479b4d",
- "0x4cd045546ad35fb4ffbe7efabeb3d5e2cfe57317600c887220d3614239de3cdb",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xd045aba11e229f57f22207671f583c9fd3468713a70ce7237b486653d19d0bc0",
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
+ ]
+ }
+ },
+ "0x24C694d193B19119bcDea9D40a3b0bfaFb281E6D": {
+ "0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
+ "amount": "411193465672233566",
+ "proof": [
+ "0x3e7e8dbf133ff6472d8567b24ea2be55e0400118c6a72d46442e54bf47351187",
+ "0x42a2346cc718889c9be2af3a107d12cb3900c221558ef5c0b3631f5c3ae2e5d4",
+ "0xa014a7c4ba0e9689e0f02bf17bc6eeff5d299ddf9dbd54459a03c318237e8e1b",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
+ ]
+ }
+ },
+ "0x44Cb2d713BDa3858001f038645fD05E23E5DE03D": {
+ "0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
+ "amount": "1749177890079144448658",
+ "proof": [
+ "0x1b9305567ae250a289d9c9a662f2470db6a5b9396d0358bfebe9250f336348b0",
+ "0xdcb5ba69bfb574629504575bbbd60386f2a6fade3778baa3d30c24ed53cc754c",
+ "0xbb77a1bb065bc346c4f39dfaff16a845fb2f151394251a08a942b3aa793b654a",
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
}
@@ -86,10 +101,10 @@
"amount": 833020026897918500000,
"proof": [
"0x6ffeeee822b04a5714526489a1b1e6e84d8548d7a8b5cb829fd8d22d86779dde",
- "0x9202bdda11a41be9ebfe610247d3e971e65959936bdf2d9186395b70d25d8d84",
- "0xfa81e644f935a7f197b15079d105fd9c34398e9f304c0f24a7cdd9a321aa7525",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x8fd22ab3c90380b53854a307ae16e6cc910904eb906e7f9538a6afb1ead790ce",
+ "0xa014a7c4ba0e9689e0f02bf17bc6eeff5d299ddf9dbd54459a03c318237e8e1b",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
},
"0x1552756d70656c20506f696e743a205a69726375697408705a49524355495400": {
@@ -97,9 +112,9 @@
"proof": [
"0x0fcd36341455485e89dbfc035b03be7d9ec5ceb7edfcb4849c51a457f4585ce7",
"0xb1b1d68fe165491c5e58654565c779c68f1e0909168fb478480f1ebb22479b4d",
- "0x4cd045546ad35fb4ffbe7efabeb3d5e2cfe57317600c887220d3614239de3cdb",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xd045aba11e229f57f22207671f583c9fd3468713a70ce7237b486653d19d0bc0",
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -108,10 +123,10 @@
"amount": 152407798291890470000,
"proof": [
"0x9dd5c63d7a85ebb90ea35dd0f5fb54974ae79d761c86e3c469616d0b2eaeff67",
- "0x42a2346cc718889c9be2af3a107d12cb3900c221558ef5c0b3631f5c3ae2e5d4",
- "0xfa81e644f935a7f197b15079d105fd9c34398e9f304c0f24a7cdd9a321aa7525",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x403c3bb7b0ff32cb4e934edd9801aa0eec0ff624fe9a0845cb35a7375e02c25d",
+ "0x17c86983941dc9f87b11f6cd1f6f260f2c76f90e16024ad475204e07d99eedf4",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -120,10 +135,10 @@
"amount": 131187337543613430000,
"proof": [
"0x73c25d42a5988fcc27384ecf9fbc2f810c9f862e977db0f73e9cabf68ac9e5b6",
- "0x42a2346cc718889c9be2af3a107d12cb3900c221558ef5c0b3631f5c3ae2e5d4",
- "0xfa81e644f935a7f197b15079d105fd9c34398e9f304c0f24a7cdd9a321aa7525",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x403c3bb7b0ff32cb4e934edd9801aa0eec0ff624fe9a0845cb35a7375e02c25d",
+ "0x17c86983941dc9f87b11f6cd1f6f260f2c76f90e16024ad475204e07d99eedf4",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -132,10 +147,10 @@
"amount": 73286503362495650000,
"proof": [
"0x6b691008971e9ab0b1581861b6e542943b4ea3ef91df9fd3e3167e16dfe61eab",
- "0x9202bdda11a41be9ebfe610247d3e971e65959936bdf2d9186395b70d25d8d84",
- "0xfa81e644f935a7f197b15079d105fd9c34398e9f304c0f24a7cdd9a321aa7525",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x8fd22ab3c90380b53854a307ae16e6cc910904eb906e7f9538a6afb1ead790ce",
+ "0xa014a7c4ba0e9689e0f02bf17bc6eeff5d299ddf9dbd54459a03c318237e8e1b",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -144,10 +159,8 @@
"amount": 4.977606283426392e+21,
"proof": [
"0xd1c3a5f261d26002eb7ea89e24b742b91b073fd272fadc4384323899b277f04e",
- "0x403c3bb7b0ff32cb4e934edd9801aa0eec0ff624fe9a0845cb35a7375e02c25d",
- "0xab802966e4277e85c878dad4c849c7632735a56c3710c197470de81707286069",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xf17cd78fb91097d6d817f63f61884a91c8d5ceedefd3ff761ad4621db6cdb688",
+ "0x5eeefedc919f5dec8d28214722f476b6e1a18460f90e03a3fc4889cae667fb44"
]
}
},
@@ -155,11 +168,11 @@
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": 2.8303575270814903e+21,
"proof": [
- "0x3e7e8dbf133ff6472d8567b24ea2be55e0400118c6a72d46442e54bf47351187",
- "0x9a562114e5173cb1802e3635ab3bed9c3c56c74532d5f34d57784f005ded3c36",
+ "0x317c7eb5a0fffec11dd2d7b3d0bfd2fe201bf9ff67627a43990ad1ad51714da3",
+ "0x6b5537a4b44653f34378b50792bbe235eef8f48b5456fff6eaae8fdce431b45c",
"0xbb77a1bb065bc346c4f39dfaff16a845fb2f151394251a08a942b3aa793b654a",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -168,10 +181,8 @@
"amount": 5.225302412387277e+23,
"proof": [
"0xd6edec91605da1894e0fa3cdbb82e2005d9b05584aacb82d8c407725b9b3641d",
- "0x403c3bb7b0ff32cb4e934edd9801aa0eec0ff624fe9a0845cb35a7375e02c25d",
- "0xab802966e4277e85c878dad4c849c7632735a56c3710c197470de81707286069",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xf17cd78fb91097d6d817f63f61884a91c8d5ceedefd3ff761ad4621db6cdb688",
+ "0x5eeefedc919f5dec8d28214722f476b6e1a18460f90e03a3fc4889cae667fb44"
]
}
},
@@ -180,10 +191,10 @@
"amount": 2.621060441200294e+23,
"proof": [
"0x9f06e030a1a0be00f37013433e8d97e2d1cf5ee1ad68da103114e6e82ab92c5f",
- "0x04a635b0e5b8e5ac70059fb9dc2682f5102a3b4a2f8b2c0d6f1ea43b1e04272f",
- "0xab802966e4277e85c878dad4c849c7632735a56c3710c197470de81707286069",
- "0x7c0bd8bd630d01f1a459f6cd963cfc5f58487dec582339b1d8f29edbbd41d8ab",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x9202bdda11a41be9ebfe610247d3e971e65959936bdf2d9186395b70d25d8d84",
+ "0x17c86983941dc9f87b11f6cd1f6f260f2c76f90e16024ad475204e07d99eedf4",
+ "0xf1dd87dc63132095adce8c1a5ad749892d389821e1d1bf28c5eee065e358695d",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -191,11 +202,11 @@
"0x1852756d70656c206b506f696e743a20457468656e61205332066b7053415453": {
"amount": 9.888353035952251e+23,
"proof": [
- "0x317c7eb5a0fffec11dd2d7b3d0bfd2fe201bf9ff67627a43990ad1ad51714da3",
- "0x41ea528f3d329e1491631bb9a5a3a1632f5f1c9b308d70c53c855c7cf90924c3",
+ "0x2baa966a98f9d55368c9d2f23afeea2683b639aeb56babe41bd7f4d0d727970e",
+ "0xdcb5ba69bfb574629504575bbbd60386f2a6fade3778baa3d30c24ed53cc754c",
"0xbb77a1bb065bc346c4f39dfaff16a845fb2f151394251a08a942b3aa793b654a",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
},
@@ -205,9 +216,9 @@
"proof": [
"0x0d204e0c13988dc6ad8a13ec4b0ed7ad17ab5a668edc8accfcce7f2bfdade628",
"0x3aaef79be826edf6d7035f8ece860c534e8fa43b5d7a32581664fd7d9761fe39",
- "0x4cd045546ad35fb4ffbe7efabeb3d5e2cfe57317600c887220d3614239de3cdb",
- "0xc2a23d2ce2d64e086666994505249bdf18e495b91c1e019ae349a3f6001d6423",
- "0x0fe239692610c805880a540ea359a0f3f8314f94bb95cd4ec53d712ae6cdc63d"
+ "0xd045aba11e229f57f22207671f583c9fd3468713a70ce7237b486653d19d0bc0",
+ "0x7b0041a106ae3fb142ab4e6da9f6b9958fc667e110122e6e9a7a77c9a574d585",
+ "0xacbcf9b5c8a4d773b3d3fe2e93390fb4b7cb390fd39511981bb1ceed154456fc"
]
}
}
diff --git a/js-scripts/generateRedemptionRights/out/ptoken-snapshot-kpsats.json b/js-scripts/generateRedemptionRights/out/ptoken-snapshot-kpsats.json
new file mode 100644
index 0000000..82c6f4f
--- /dev/null
+++ b/js-scripts/generateRedemptionRights/out/ptoken-snapshot-kpsats.json
@@ -0,0 +1,14 @@
+{
+ "address": "0xdFa21ceC8A46386F5d36F4b07E18BcCcA59f425B",
+ "blockNumber": "21073410",
+ "balances": {
+ "0x25E426b153e74Ab36b2685c3A464272De60888Ae": "832939015897918484874",
+ "0xAF9e4E01525C4856E00Cb0F363AFc34E7decD6a7": "1209830694094345523934847",
+ "0x6CD72B1E6E300340A48943d6aF34EF5AE07D3577": "309572178834508409860",
+ "0x1d848bf0dcF1b48f5621c37d062f2696D9d71AC4": "116400041689867972616256",
+ "0x76DB9edf1451933711fc0A0c622E013ebD229EaB": "451999329293340648396874",
+ "0xB6462B67fe692223DFFb61C8DC8Ad080CBa180Cc": "195548998385752443216151",
+ "0x24C694d193B19119bcDea9D40a3b0bfaFb281E6D": "6487631537430740992",
+ "0x44Cb2d713BDa3858001f038645fD05E23E5DE03D": "27597767454066600837120"
+ }
+}
\ No newline at end of file
diff --git a/js-scripts/generateRedemptionRights/out/ptoken-snapshots.json b/js-scripts/generateRedemptionRights/out/ptoken-snapshots.json
deleted file mode 100644
index f2c350b..0000000
--- a/js-scripts/generateRedemptionRights/out/ptoken-snapshots.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "0xdFa21ceC8A46386F5d36F4b07E18BcCcA59f425B": {
- "blockNumber": "21068499",
- "balances": {
- "0x25E426b153e74Ab36b2685c3A464272De60888Ae": "832939015897918484874",
- "0x597a1b0515bbeEe6796B89a6f403c3fD41BB626C": "27604255085604029567224",
- "0xAF9e4E01525C4856E00Cb0F363AFc34E7decD6a7": "1209830694094345523934847",
- "0x6CD72B1E6E300340A48943d6aF34EF5AE07D3577": "309572178834508409860",
- "0x1d848bf0dcF1b48f5621c37d062f2696D9d71AC4": "116400041689867972616256",
- "0x76DB9edf1451933711fc0A0c622E013ebD229EaB": "451999329293340648396874",
- "0xB6462B67fe692223DFFb61C8DC8Ad080CBa180Cc": "195548998385752443216151"
- }
- }
-}
\ No newline at end of file