From 6a4379157b20af8bca0c44971b9c5c8ff547b0dd Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 20 Jun 2023 14:59:59 +0100 Subject: [PATCH 1/3] avax, fantom --- protocols/avax.ts | 57 +++++++++++++++++++++++++++++++++++++++++++++ protocols/fantom.ts | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 protocols/avax.ts create mode 100644 protocols/fantom.ts diff --git a/protocols/avax.ts b/protocols/avax.ts new file mode 100644 index 0000000..33a4fcd --- /dev/null +++ b/protocols/avax.ts @@ -0,0 +1,57 @@ +import { Protocol } from "../types/adapters"; +import { manualStep, manualCliff, manualLinear } from "../adapters/manual"; +import { periodToSeconds } from "../utils/time"; + +const qty = 720e6; +const start = 1639785600; +const publicSale = 1595977200; +const mainnet = 1600815600; + +const avax: Protocol = { + "Seed Sale": manualStep(mainnet, periodToSeconds.month * 3, 4, 45e5), + "Private Sale": manualStep(mainnet, periodToSeconds.month * 3, 4, 249e5 / 4), + "Public Sale A1": manualStep( + mainnet, + periodToSeconds.month * 3, + 4, + 3e6 * 0.6, + ), + "Public Sale A2": manualStep(mainnet, periodToSeconds.month * 3, 6, 10e6), + "Public Sale B": manualCliff(publicSale, 12e6 * 0.4), + Team: manualStep(mainnet, periodToSeconds.month * 3, 16, 72e6 / 16), // mixed for later hires + Airdrop: manualStep(mainnet, periodToSeconds.month * 3, 16, 18e6 / 16), // mixed date + Foundation: manualStep(mainnet, periodToSeconds.month * 3, 40, 1667e3), + // "Staking Rewards": [], + "Testnet Incentive Program": manualStep( + mainnet, + periodToSeconds.month * 3, + 4, + 486e3, + ), // qty + "Community and Dev Endowment": manualStep( + mainnet, + periodToSeconds.month * 3, + 4, + 126e5, + ), // mixed date + "Strategic Partners": manualStep( + mainnet, + periodToSeconds.month * 3, + 16, + 225e4, + ), // mixed date + meta: { + notes: [ + `Exact dates for Seed and Private sales couldn't be found, so we've given them the latest dates described.`, + ], + sources: [ + "https://web.archive.org/web/20210920192748/https://info.avax.network/", + "https://medium.com/avalancheavax/avalanche-raises-42m-in-4-5-hours-for-its-first-public-sale-d09362bf3efc", + ], + token: "coingecko:avalanche-2", + protocolIds: [], + }, + categories: {}, +}; + +export default avax; diff --git a/protocols/fantom.ts b/protocols/fantom.ts new file mode 100644 index 0000000..4d3ecd4 --- /dev/null +++ b/protocols/fantom.ts @@ -0,0 +1,48 @@ +import { Protocol } from "../types/adapters"; +import { manualCliff } from "../adapters/manual"; +import { periodToSeconds } from "../utils/time"; +import { LinearAdapterResult } from "../types/adapters"; +const qty = 3550e6; +const start = 1529103600; + +const inflation = (percentage: number): LinearAdapterResult[] => { + const sections: LinearAdapterResult[] = []; + let thisStart: number = start; + let total = qty; + const period: number = periodToSeconds.year; + for (let i = 0; i < 10; i++) { + const amount = total * (1 + 0.05 * percentage) - total; + + sections.push({ + type: "linear", + start: thisStart, + end: thisStart + period, + amount, + }); + + total += amount; + thisStart += period; + } + return sections; +}; + +const fantom: Protocol = { + "Token Sale": manualCliff(start, qty * 0.4), + "Market Development": manualCliff(start, qty * 0.3), + "Advisors & Consultants": manualCliff(start, qty * 0.15), + "Team & Founders": manualCliff(start, qty * 0.15), + "Platform Incentives": inflation(0.8), + "Node Rewards": inflation(0.2), + meta: { + sources: ["https://icodrops.com/fantom/"], + token: "coingecko:fantom", + protocolIds: [], + }, + categories: { + publicSale: ["Token Sale"], + insiders: ["Team & Founders", "Advisors & Consultants"], + farming: ["Platform Incentives", "Node Rewards"], + noncirculating: ["Market Development"], + }, +}; +export default fantom; From 73697c3eefd52885c095f3bcc921795b6b3b04da Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 20 Jun 2023 16:59:15 +0100 Subject: [PATCH 2/3] sol --- protocols/avax.ts | 3 +- protocols/solana.ts | 75 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 protocols/solana.ts diff --git a/protocols/avax.ts b/protocols/avax.ts index 33a4fcd..b035a29 100644 --- a/protocols/avax.ts +++ b/protocols/avax.ts @@ -21,7 +21,7 @@ const avax: Protocol = { Team: manualStep(mainnet, periodToSeconds.month * 3, 16, 72e6 / 16), // mixed for later hires Airdrop: manualStep(mainnet, periodToSeconds.month * 3, 16, 18e6 / 16), // mixed date Foundation: manualStep(mainnet, periodToSeconds.month * 3, 40, 1667e3), - // "Staking Rewards": [], + "Staking Rewards": manualLinear(mainnet, periodToSeconds.day * 6000, 360e6), // as measured on 20/06/23 "Testnet Incentive Program": manualStep( mainnet, periodToSeconds.month * 3, @@ -43,6 +43,7 @@ const avax: Protocol = { meta: { notes: [ `Exact dates for Seed and Private sales couldn't be found, so we've given them the latest dates described.`, + `Staking reward unlocks depend on the amount of AVAX staked. Since this can't be predicted, we have extrapolated the past rate of rewards.`, ], sources: [ "https://web.archive.org/web/20210920192748/https://info.avax.network/", diff --git a/protocols/solana.ts b/protocols/solana.ts new file mode 100644 index 0000000..38f34dd --- /dev/null +++ b/protocols/solana.ts @@ -0,0 +1,75 @@ +import { LinearAdapterResult, Protocol } from "../types/adapters"; +import { manualCliff, manualLinear } from "../adapters/manual"; +import { periodToSeconds } from "../utils/time"; + +const qty = 500e6; +const mainnet = 1585008000; +const unlock = mainnet + periodToSeconds.month * 9; +const purchaser = qty * 0.372; +const foundersUnlock = 1609977600; + +const inflation = () => { + const sections: LinearAdapterResult[] = []; + const allocation = qty * 0.339; + const disinflationRate = 0.15; + + let inflationRate = 8; + let start = mainnet; + let total = qty; + let workingQty = 0; + + while (inflationRate > 1.5) { + if (total > 700e6 || workingQty > allocation) return sections; + const amount = total * (inflationRate / (12 * 100)); + + sections.push({ + type: "linear", + start, + end: start + periodToSeconds.month, + amount, + }); + + workingQty += amount; + total += amount; + start += periodToSeconds.month; + inflationRate *= (1 - disinflationRate) ** (1 / 12); + } + + return sections; +}; + +const solana: Protocol = { + "Seed Round": manualCliff(unlock, purchaser * 0.427), + "Founding Round": manualCliff(unlock, purchaser * 0.34), + "Validator Round": manualCliff(unlock, purchaser * 0.136), + "Strategic Round": manualCliff(unlock, purchaser * 0.054), + "CoinList Auction": manualCliff(mainnet, purchaser * 0.043), + "Grant pool": manualCliff(1596236400, qty * 0.04), + Foundation: manualCliff(foundersUnlock, qty * 0.125), + "Staking Rewards": inflation(), + Founders: manualLinear( + foundersUnlock, + foundersUnlock + periodToSeconds.year * 2, + qty * 0.125, + ), + meta: { + sources: [ + "https://coinlist.co/solana", + "https://docs.solana.com/inflation/inflation_schedule", + ], + token: "coingecko:solana", + protocolIds: [], + }, + categories: { + insiders: [ + "Seed Round", + "Founding Round", + "Validator Round", + "Strategic Round", + "Founders", + ], + publicSale: ["CoinList Auction"], + noncirculating: ["Grant pool", "Staking Rewards", "Foundation"], + }, +}; +export default solana; From 0edb3e15757a51ad7c814a46187547a0ebfab04b Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Tue, 20 Jun 2023 17:00:28 +0100 Subject: [PATCH 3/3] sol --- protocols/solana.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/protocols/solana.ts b/protocols/solana.ts index 38f34dd..2b1a656 100644 --- a/protocols/solana.ts +++ b/protocols/solana.ts @@ -56,6 +56,7 @@ const solana: Protocol = { sources: [ "https://coinlist.co/solana", "https://docs.solana.com/inflation/inflation_schedule", + "https://medium.com/solana-labs/solana-foundation-transparency-report-1-b267fe8595c0", ], token: "coingecko:solana", protocolIds: [],