-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #339 from 0xsend/deploy-main
Deploy main
- Loading branch information
Showing
29 changed files
with
3,788 additions
and
2,253 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -66,3 +66,6 @@ dist | |
|
||
# version base .env | ||
!.env | ||
|
||
# ignore calculated data files | ||
balances.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { Mode, calculatePercentageWithBips, calculateWeights } from '../src/weights' | ||
import { parseArgs } from 'node:util' | ||
import 'zx/globals' | ||
|
||
const distAmt = 900000000n // 900,000,000 SEND | ||
const holderPoolBips = 6500n // 65% | ||
|
||
const holderPoolAmount = calculatePercentageWithBips(distAmt, holderPoolBips) | ||
|
||
const path = `${import.meta.dir}/../balances.json` | ||
console.log('Reading balances from', path) | ||
|
||
if (!(await Bun.file(path).exists())) { | ||
throw new Error( | ||
`File ${path} does not exist. You can generate one by running distributor with debug logs and re-calculating the shares.` | ||
) | ||
} | ||
|
||
const balances = (await Bun.file(`${import.meta.dir}/../balances.json`).json()) as readonly { | ||
address: `0x${string}` | ||
balance: string | ||
}[] | ||
|
||
const totalBalance = balances.reduce((acc, balance) => acc + BigInt(balance.balance), 0n) | ||
const numBalances = balances.length | ||
|
||
console.log('totalBalance', totalBalance) | ||
console.log('numBalances', numBalances) | ||
|
||
const balByAddr = balances.reduce( | ||
(acc, balance) => { | ||
acc[balance.address] = balance.balance | ||
return acc | ||
}, | ||
{} as Record<string, string> | ||
) | ||
|
||
console.log('Calculating weights...', balances.length) | ||
|
||
const { totalWeight, weightPerSend, poolWeights, weightedShares } = calculateWeights( | ||
balances, | ||
holderPoolAmount, | ||
Mode.Linear | ||
) | ||
|
||
// console.log('totalWeight', totalWeight) | ||
// console.log('weightPerSend', weightPerSend) | ||
// console.log('poolWeights', poolWeights) | ||
// console.log('weightedShares', weightedShares) | ||
|
||
const shares = Object.values(weightedShares).sort( | ||
(a, b) => Number(balByAddr[b.address]) - Number(balByAddr[a.address]) | ||
) | ||
|
||
console.log('row\taddress\tbalance\tamount\tperc_of_balance\tposition') | ||
shares.map((share, idx) => { | ||
const addr = share.address | ||
const bal = Number(balByAddr[addr]) | ||
const perc = ((Number(share.amount) / bal) * 100).toFixed(2) | ||
const position = Math.floor((Number(bal) / Number(totalBalance)) * numBalances) | ||
console.log(`${idx + 1}\t${addr}\t${bal}\t${share.amount}\t${perc}%\t${position}`) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import { parseArgs } from 'node:util' | ||
import { supabaseAdmin } from '../src/supabase' | ||
import 'zx/globals' | ||
|
||
if (!$.env.SUPABASE_SERVICE_ROLE) { | ||
throw new Error('SUPABASE_SERVICE_ROLE is required') | ||
} | ||
|
||
const { values } = parseArgs({ | ||
args: Bun.argv, | ||
options: { | ||
distributor: { | ||
type: 'string', | ||
default: 'http://localhost:3050/distributor', | ||
}, | ||
distribution: { | ||
type: 'string', | ||
default: undefined, | ||
}, | ||
}, | ||
strict: true, | ||
allowPositionals: true, | ||
}) | ||
|
||
if (values.distribution === undefined) { | ||
const { data, error } = await supabaseAdmin | ||
.from('distributions') | ||
.select('*') | ||
.order('number', { ascending: false }) | ||
.limit(1) | ||
.single() | ||
if (error) { | ||
throw error | ||
} | ||
if (!data) { | ||
throw new Error('No distribution found') | ||
} | ||
values.distribution = data.id.toString() | ||
} | ||
|
||
const { distributor, distribution } = values | ||
|
||
if (distribution === undefined) { | ||
throw new Error('Distribution not found') | ||
} | ||
|
||
if (distributor === undefined) { | ||
throw new Error('Distributor not found') | ||
} | ||
|
||
console.log(chalk.blue('Calculating distribution shares...'), { distributor, distribution }) | ||
|
||
// send post request to distributor running at localhost:3050 | ||
const response = await fetch(distributor, { | ||
method: 'POST', | ||
body: JSON.stringify({ id: distribution }), | ||
headers: { | ||
'Content-Type': 'application/json', | ||
Authorization: $.env.SUPABASE_SERVICE_ROLE, | ||
}, | ||
}) | ||
|
||
// // get the response body | ||
const body = await response.json() | ||
console.log('Done', body) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
// Bun Snapshot v1, https://goo.gl/fbAQLP | ||
|
||
exports[`Distributor Route should return a merkle root: distribution 4 merkle root 1`] = ` | ||
{ | ||
"root": "0x0323baed48d30414af5f66d611d02e0c905bf97ca10b60942104a85b86cab876", | ||
"total": 627736455, | ||
} | ||
`; |
Oops, something went wrong.