From 25dc5eb1cced11d65b71948bc56da1cd48c42984 Mon Sep 17 00:00:00 2001 From: Moody Salem Date: Wed, 16 Sep 2020 14:54:44 -0500 Subject: [PATCH] sort by address in generating the merkle root --- src/parse-balance-map.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/parse-balance-map.ts b/src/parse-balance-map.ts index dd27e9c..ea320dd 100644 --- a/src/parse-balance-map.ts +++ b/src/parse-balance-map.ts @@ -58,13 +58,15 @@ export function parseBalanceMap(balances: OldFormat | NewFormat[]): MerkleDistri return memo }, {}) + const sortedAddresses = Object.keys(dataByAddress).sort() + // construct a tree const tree = new BalanceTree( - Object.keys(dataByAddress).map((address) => ({ account: address, amount: dataByAddress[address].amount })) + sortedAddresses.map((address) => ({ account: address, amount: dataByAddress[address].amount })) ) // generate claims - const claims = Object.keys(dataByAddress).reduce<{ + const claims = sortedAddresses.reduce<{ [address: string]: { amount: string; index: number; proof: string[]; flags?: { [flag: string]: boolean } } }>((memo, address, index) => { const { amount, flags } = dataByAddress[address] @@ -77,7 +79,7 @@ export function parseBalanceMap(balances: OldFormat | NewFormat[]): MerkleDistri return memo }, {}) - const tokenTotal: BigNumber = Object.keys(dataByAddress).reduce( + const tokenTotal: BigNumber = sortedAddresses.reduce( (memo, key) => memo.add(dataByAddress[key].amount), BigNumber.from(0) )