From 1953b7ecd73d7581d59921c6802934c57b39c866 Mon Sep 17 00:00:00 2001 From: goktug-piku Date: Fri, 31 Oct 2025 11:20:08 +0300 Subject: [PATCH 1/2] Add USP TVL calculation for Ethereum (#1) --- projects/piku-dao/index.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 projects/piku-dao/index.js diff --git a/projects/piku-dao/index.js b/projects/piku-dao/index.js new file mode 100644 index 00000000000..27b1bfa2b38 --- /dev/null +++ b/projects/piku-dao/index.js @@ -0,0 +1,32 @@ +const ADDRESSES = require('../helper/coreAssets.json') + +const USP_TOKEN = '0x098697bA3Fee4eA76294C5d6A466a4e3b3E95FE6' +const ORACLE = '0x433471901bA1A8BDE764E8421790C7D9bAB33552' + +async function tvl(api) { + // Get USP total supply and oracle price in parallel + const [totalSupply, decimals, pricePerToken] = await Promise.all([ + api.call({ target: USP_TOKEN, abi: 'erc20:totalSupply' }), + api.call({ target: USP_TOKEN, abi: 'uint256:decimals' }), + api.call({ target: ORACLE, abi: 'function getPriceForIssuance() view returns (uint256)' }) + ]) + + // Calculate TVL in USDC + // totalSupply is in 18 decimals, pricePerToken is in 6 decimals (USDC format) + // Result should be in USDC's 6 decimals + // Formula: (totalSupply * price) / 10^18 = TVL in USDC (6 decimals) + const tvlInUsdc = (totalSupply * pricePerToken) / (10 ** decimals) + + // Report as USDC for proper USD valuation + api.add(ADDRESSES.ethereum.USDC, tvlInUsdc) +} + +module.exports = { + methodology: "TVL is calculated by multiplying USP stablecoin's total supply with its oracle price (getPriceForIssuance). The oracle price is manually updated and reflects the yield-bearing value of USP backed by USDC.", + start: 23081800, + timetravel: true, + misrepresentedTokens: false, + ethereum: { + tvl, + } +} From fcd127fbc1e53c44a5dc1e152de6b900a58c6a2e Mon Sep 17 00:00:00 2001 From: goktug-piku Date: Tue, 2 Dec 2025 11:26:54 +0300 Subject: [PATCH 2/2] Add Piku DAO treasury configuration with multi-chain support (#2) --- projects/treasury/piku-dao.js | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 projects/treasury/piku-dao.js diff --git a/projects/treasury/piku-dao.js b/projects/treasury/piku-dao.js new file mode 100644 index 00000000000..e1a183a6999 --- /dev/null +++ b/projects/treasury/piku-dao.js @@ -0,0 +1,42 @@ +const { nullAddress, treasuryExports } = require("../helper/treasury"); + +const hotWallet = "0xb7f15d1122c0F91eE77C1172B9EFa4C061952E3C"; +const coldWallet = "0x16c4150e22c53eCE02bB70763625DD3d61f1E7E9"; +const arma_proxy_address = "0x18da71475c41721934f69c8a91a4e2178a1c32c8"; +const coldRewardWallet = "0xA056f4a4213e78890eA6CdAE7567CE9287c97726"; +const treasuryWallet = "0x32a605E91Ecc3ab972697E58712f6c9c37cabC1D"; + + +const multiChainOwners = [hotWallet, coldWallet, coldRewardWallet, treasuryWallet, arma_proxy_address]; + + +const PIKU = "0x2E4039E8E31475d65DC00293C366FDBfBBC02DC3"; +const SPIKU = "0x5Da17CA137f1128d4be7Ce574bc61f3ac4839Df8"; +const USP = "0x098697bA3Fee4eA76294C5d6A466a4e3b3E95FE6"; + +const BMMF_BASE = "0x50b95509e8fc9cda3860c2ef80308467ab6534cc"; +const SUSDAI_PLASMA = "0x0b2b2b2076d95dda7817e785989fe353fe955ef9"; +const AUSDT0_PLASMA = "0x5D72a9d9A9510Cd8cBdBA12aC62593A58930a948"; + +module.exports = { + misrepresentedTokens: true, + ...treasuryExports({ + ethereum: { + tokens: [nullAddress], + owners: multiChainOwners, + ownTokens: [PIKU, SPIKU, USP], + }, + base: { + tokens: [nullAddress, BMMF_BASE], + owners: multiChainOwners, + }, + arbitrum: { + tokens: [nullAddress], + owners: multiChainOwners, + }, + plasma: { + tokens: [nullAddress, SUSDAI_PLASMA, AUSDT0_PLASMA], + owners: multiChainOwners, + }, + }), +};