Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Angles #13298

Merged
merged 3 commits into from
Jan 30, 2025
Merged

Angles #13298

merged 3 commits into from
Jan 30, 2025

Conversation

anglesb
Copy link
Contributor

@anglesb anglesb commented Jan 29, 2025

NOTE

Please enable "Allow edits by maintainers" while putting up the PR.


  • If you would like to add a volume adapter please submit the PR here.
  • If you would like to add a liquidations adapter, please refer to this readme document for details.
  1. Once your adapter has been merged, it takes time to show on the UI. If more than 24 hours have passed, please let us know in Discord.
  2. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you.
  3. Please fill the form below only if the PR is for listing a new protocol else it can be ignored/replaced with reason/details about the PR
  4. For updating listing info It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR
  5. Do not edit/push package-lock.json file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI
  6. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap

Name (to be shown on DefiLlama): Angles
Twitter Link: x.com/angles_sonic
List of audit links if any:
Website Link: https://angles.fi
Logo (High resolution, will be shown with rounded borders): https://imagedelivery.net/doDgMvXq0CcvAoj6k2stSg/b909b18a-13a1-4e4e-6e54-a84356109c00/public
Current TVL: 50$
Treasury Addresses (if the protocol has treasury)
Chain: Sonic
Coingecko ID (so your TVL can appear on Coingecko, leave empty if not listed): (https://api.coingecko.com/api/v3/coins/list)
Coinmarketcap ID (so your TVL can appear on Coinmarketcap, leave empty if not listed): (https://api.coinmarketcap.com/data-api/v3/map/all?listing_status=active,inactive,untracked&start=1&limit=10000)
Short Description (to be shown on DefiLlama): Angles enhances Sonic with performant and secure LST ($anS). anS is compatible and can be used in DeFi to get maximum yield out of your Sonics.
Token address and ticker if any:
Category (full list at https://defillama.com/categories) *Please choose only one: LST
Oracle Provider(s): Specify the oracle(s) used (e.g., Chainlink, Band, API3, TWAP, etc.):
Implementation Details: Briefly describe how the oracle is integrated into your project:
Documentation/Proof: Provide links to documentation or any other resources that verify the oracle's usage:
forkedFrom (Does your project originate from another project):
methodology (what is being counted as tvl, how is tvl being calculated):
Github org/user (Optional, if your code is open source, we can track activity):

@0xpeluche 0xpeluche self-assigned this Jan 29, 2025
@0xpeluche
Copy link
Contributor

0xpeluche commented Jan 29, 2025

Hi, thanks for the PR! I've made a few small changes on my side:
Instead of using the totalValue() method provided by the contract, I directly fetch the validator indexes and retrieve the balances from Sonic's SFC contract. This allows us to get the actual collateral backing the vault, ensuring that the TVL is truly backed.
If everything looks good to you, I'll commit the changes and merge it:

const ADDRESSES = require('../helper/coreAssets.json')

const SONIC_SFC_CONTRACT = '0xFC00FACE00000000000000000000000000000000'
const vault = '0xe5203Be1643465b3c0De28fd2154843497Ef4269'
const S = ADDRESSES.null

const abis = {
  validatorsIndexed: "function validatorsIndexed(uint256) view returns (uint256 validatorId, uint8 weight, uint256 limit, uint256 SInTransit)",
  numberOfValidators: "function numberOfValidators() view returns (uint256)",
  getStake: "function getStake(address delegator, uint256 validatorID) view returns (uint256 stake)"
}

const tvl = async (api) => {
  const validators = await api.fetchList({ target: vault, lengthAbi: abis.numberOfValidators, itemAbi: abis.validatorsIndexed })
  const validatorsBalances = await api.multiCall({ calls: validators.map(({ validatorId }) => ({ target: SONIC_SFC_CONTRACT, params: [vault, validatorId] })), abi: abis.getStake })
  api.add(S, validatorsBalances)
}

module.exports = {
  sonic: { tvl }
}

@anglesb
Copy link
Contributor Author

anglesb commented Jan 30, 2025

Sure that works

@llamabutler
Copy link

The adapter at projects/angles exports TVL:

sonic                     29

total                    29.425315485439494 

@0xpeluche 0xpeluche merged commit 09f74a7 into DefiLlama:main Jan 30, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants