peggedassets-server

所属分类:操作系统开发
开发工具:TypeScript
文件大小:0KB
下载次数:0
上传日期:2023-07-04 03:23:52
上 传 者sh-1993
说明:  聚乙二醇数据库集服务器,,
(peggedassets-server,,)

文件列表:
.babelrc (132, 2023-12-21)
docker-compose.yml (342, 2023-12-21)
env.js (117, 2023-12-21)
package-lock.json (2585919, 2023-12-21)
package.json (3190, 2023-12-21)
resources/ (0, 2023-12-21)
resources/api-cloudfront-distribution.yml (1903, 2023-12-21)
resources/table-and-api.yml (1251, 2023-12-21)
serverless.yml (4880, 2023-12-21)
src/ (0, 2023-12-21)
src/__mocks__/ (0, 2023-12-21)
src/__mocks__/@sentry/ (0, 2023-12-21)
src/__mocks__/@sentry/serverless.ts (174, 2023-12-21)
src/__mocks__/@sentry/tracing.ts (117, 2023-12-21)
src/adapters/ (0, 2023-12-21)
src/adapters/.prettierrc (3, 2023-12-21)
src/adapters/env.sample (839, 2023-12-21)
src/adapters/package-lock.json (1420957, 2023-12-21)
src/adapters/package.json (1636, 2023-12-21)
src/adapters/peggedAssets/ (0, 2023-12-21)
src/adapters/peggedAssets/acala-dollar/ (0, 2023-12-21)
src/adapters/peggedAssets/acala-dollar/index.ts (2083, 2023-12-21)
src/adapters/peggedAssets/ageur/ (0, 2023-12-21)
src/adapters/peggedAssets/ageur/index.ts (3794, 2023-12-21)
src/adapters/peggedAssets/alchemix-usd/ (0, 2023-12-21)
src/adapters/peggedAssets/alchemix-usd/index.ts (3020, 2023-12-21)
src/adapters/peggedAssets/alternity-cny/ (0, 2023-12-21)
src/adapters/peggedAssets/alternity-cny/index.ts (1216, 2023-12-21)
src/adapters/peggedAssets/anchored-coins-eur/ (0, 2023-12-21)
src/adapters/peggedAssets/anchored-coins-eur/index.ts (1374, 2023-12-21)
src/adapters/peggedAssets/arable-usd/ (0, 2023-12-21)
src/adapters/peggedAssets/arable-usd/index.ts (1209, 2023-12-21)
src/adapters/peggedAssets/aryze-eeur/ (0, 2023-12-21)
... ...

# peggedassets-server ## How to list a new pegged asset 1. Fork this repository. 2. `npm i` in root folder. 3. Create folder in `src/adapters/peggedAssets` with the same name as the CoinGecko id for the pegged asset. 4. In that folder, write an adapter in Typescript and name it index.ts (see below for spec). 5. In `src/adapters/peggedAssets`, `npm i` and then test your adapter with `npx ts-node test YOURPEGGEDASSET/index peggedXYZ`, where "peggedXYZ" is the key of the balance object returned by your adapter. 6. Import your adapter in `src/adapters/peggedAssets/index.ts` and then add it to the exports. 7. (Optional) if the pegged asset has a ChainLink price feed or a liquid Uniswap V3 pool, you can add the ChainLink smart contract/Uniswap V3 pool info to `src/adapters/peggedAssets/prices/index.ts`. After submitting a PR, you can submit basic info about the pegged asset (website, ticker, icon, etc.) in the [Defillama Discord](https://discord.defillama.com/). ## Pegged asset adapters An adapter is a Typescript file that exports an object in the following format: const adapter: PeggedIssuanceAdapter = { [chain1]: { minted: async fn, unreleased: async fn, [bridgedFromChain1]: async fn, [bridgedFromChain2]: async fn, . . }, [chain2]: { minted: async fn, unreleased: async fn, }, . . } The `minted` and `unreleased` properties are required to be present on every chain object. `minted` means pegged assets that have been issued on that chain (not bridged from anywhere). `unreleased` means pegged assets that are in a reserve wallet and have never been circulating. If either of these are 0, you can use `async () => ({})`. The `bridgedFromChain` properties are optional. The property name should simply be the name of the chain the pegged assets are bridged from. The async functions should take timestamp, ethBlock, and chainBlocks as parameters, just like Defillama TVL Adapters. They must return an object `{ peggedXYZ: x }`, where `peggedXYZ` is a supported pegged asset type, and `x` is a Number. Currently only `peggedUSD`, `peggedEUR`, and `peggedVAR` (variable peg) are supported. Here is an example adapter: const sdk = require("@defillama/sdk"); import { ChainBlocks, PeggedIssuanceAdapter, } from "../peggedAsset.type"; const chainContracts = { ethereum: { issued: "0x853d955acef822db058eb8505911ed77f175b99e", }, bsc: { bridgedFromETH: "0x90c97f71e18723b0cf0dfa30ee176ab653e89f40", }, }; async function ethereumMinted() { return async function ( _timestamp: number, _ethBlock: number, _chainBlocks: ChainBlocks ) { const totalSupply = ( await sdk.api.abi.call({ abi: "erc20:totalSupply", target: chainContracts.ethereum.issued, block: _ethBlock, chain: "ethereum", }) ).output; return { peggedUSD: totalSupply / 10 ** 18 }; }; } async function bridgedFromEthereum(chain: string, decimals: number, address: string) { return async function ( _timestamp: number, _ethBlock: number, _chainBlocks: ChainBlocks ) { const totalSupply = ( await sdk.api.abi.call({ abi: "erc20:totalSupply", target: address, block: _chainBlocks[chain], chain: chain, }) ).output; return { peggedUSD: totalSupply / 10 ** decimals }; }; } const adapter: PeggedIssuanceAdapter = { ethereum: { minted: ethereumMinted(), unreleased: async () => ({}), }, bsc: { minted: async () => ({}), unreleased: async () => ({}), ethereum: bridgedFromEthereum("bsc", 18, chainContracts.bsc.bridgedFromETH), }, }; export default adapter; # Running the Server If you want to run your own copy of this server on AWS: npm run build # Build with webpack & check for type errors npm run format # Format code aws configure serverless deploy

近期下载者

相关文件


收藏者