Nonprofit Pizza Maker

    decentralized-finance-defi

    4.2.0 • Public • Published

    Decentralized Finance                             drawing

    This package provides distributed ledger based banking features like payments, deposits, loans and automated investment patterns.

    Connect your TypeScript based projects with smart contracts on the Ethereum Blockchain by checking the usage examples below.

    This package shall increase freedom for those who increase freedom. As such it supports the klopapier.exchange.

    NPM Downloads Chat Maintained

    Usage Examples

    Payments

    Transfer Ether

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
    
    const fromWalletAddress = process.env.SENDER_WALLET_ADDRESS
    const toWalletAddress = process.env.RECEIVER_WALLET_ADDRESS
    const amountInETH = 1
    const senderPrivateKey = process.env.SENDER_WALLET_PRIVATE_KEY
    
    await DeFiService.transferEther(fromWalletAddress, toWalletAddress, amountInETH, senderPrivateKey)

    Deposits

    Deposit Ether to Compound

    You can also test this feature via the compound.finance user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
    
    const amountOfEtherToBeDeposited = 1
    const senderPrivateKey = process.env.SENDER_WALLET_PRIVATE_KEY
    const gasLimit = 250000 // GWEI --> 0.00025 ETH --> currently January 15th 2021 about 
    const web3ProviderURL = process.env.PROVIDER_URL // e.g. https://mainnet.infura.io/v3/yourinfuraprojectid
    
    await DeFiService.depositEtherToCompound(amountOfEtherToBeDeposited, senderWalletPrivateKey, gasLimit web3ProviderURL)

    Loans

    Borrow Ether from Compound

    You can also test this feature via the compound.finance user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
    
    const amountOfDAIToBeBorrowed = 100
    const walletPrivateKey = process.env.SENDER_WALLET_PRIVATE_KEY
    const gasLimit = 250000
    const web3ProviderURL = process.env.PROVIDER_URL // e.g. https://mainnet.infura.io/v3/yourinfuraprojectid
    
    await DeFiService.borrowDAIFromCompound(amountOfDAIToBeBorrowed, walletPrivateKey, gasLimit, web3ProviderURL)

    Redeem Asset from Compound

    You can also test this feature via the compound.finance user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
        
    const walletAddress = process.env.SENDER_WALLET_ADDRESS
    const walletPrivateKey = process.env.SENDER_WALLET_PRIVATE_KEY
    const gasLimit = 250000
    const web3ProviderURL = process.env.PROVIDER_URL // e.g. https://mainnet.infura.io/v3/yourinfuraprojectid
    const amount = 1 // redeem 1 cETH
        
    await DeFiService.redeemAssetFromCompound(walletAddress,  walletPrivateKey, gasLimit, web3ProviderURL, amount)

    Account Management

    Get Compound Account Data

    You can also test this feature via the compound.finance user interface.

    const { DeFiService } = require("decentralized-finance-defi")
    
    const walletAddress = '0xA63CD0d627c34Ce3958c4a82E6bB12F7b9C1c324'
    const accountInfo = await DeFiService.getCompoundAccountData(walletAddress)
    
    console.log(`The collateral value in ETH is: ${accountInfo.total_collateral_value_in_eth.value}.`)

    Exchange Features

    Swap DAI to Ether via Uniswap

    You can also test this feature via the uniswap.org user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
    
    const amountOfDAIToBeSwapped = 50
    const walletAddress = process.env.SENDER_WALLET_ADDRESS
    const walletPrivateKey = process.env.SENDER_WALLET_PRIVATE_KEY
    const web3ProviderURL = process.env.PROVIDER_URL // e.g. https://mainnet.infura.io/v3/yourinfuraprojectid
    
    await DeFiService.swapDAIToETH(amountOfDAIToBeSwapped, walletAddress, walletPrivateKey, web3ProviderURL)

    Leverage Investing

    Binance based Leverage Investment

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
    
    const { Gambler } = require("decentralized-finance-defi")
    
    const liquidityRatioToBuy = 0.95 // just as an example
    const liquidityRatioToSell = 0.45 // just as an example
    const reinvestAt = 10 // just as an example
    const investmentAmount = 20 // just as an example
    const binanceApiKey = process.env.BINANCE_API_KEY // check your profile on binance.com --> API Management
    const binanceApiSecret = process.env.BINANCE_API_SECRET // check your profile on binance.com --> API Management
    
    Gambler.gamble(lrToBuy, lrToSell, reinvestAt, investmentAmount, binanceApiKey, binanceApiSecret)

    Get account info from DyDx.exchange

    You can also test this feature via the dydx.exchange user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
        
    const { DeFiService } = require("decentralized-finance-defi")
        
    const walletAddress = process.env.SENDER_WALLET_ADDRESS
    
    const result = await DeFiService.getDyDxPerpetualAccountBalances(walletAddress)
    
    console.log(result)

    Neural Networks

    Explore FeedForward Neural Nets with Backpropagation

    // This one is in experimental mode - check the code to check whether it is fine for you.
    const { DeFiService } = require("decentralized-finance-defi")
    
    DeFiService.charterATrader() // observe the console output

    Crypto Currency Insights

    Get Price Data with Timestamp from Coinmarketcap (API Key Required)

    You can compare the results via the coinmarketcap.com user interface.

    require('dotenv').config() // this ensures process.env. ... contains your .env file configuration values
    
    const { DeFiService } = require("decentralized-finance-defi")
    
    const pricesWithTimeStamp = DeFiService.getPriceDataWithTimeStamp(process.env.COINMARKETCAP_API_KEY)
    
    // There will be ETH :)
    console.log(pricesWithTimeStamp[1])

    Distributed Ledger Insights

    Get Current Gas Price Info

    const { DeFiService } = require("decentralized-finance-defi")
    
    const gasPriceInfo = await DeFiService.getGasPriceInfo()
    console.log(gasPriceInfo.fastest)

    Further Features

    You can find further examples in the DeFi Service file. If you are looking for anything more specific, feel free to check the corresponding folders and class definitions within the src folder.

    If you have not found what you are looking for, feel free to raise an issue or even better raise a Pull Request.

    Smart Contract Development

    You can find some simple examples for solidity based smart contract development projects within the smart-contracts-development folder.

    General Recommendations

    You might also check aave.com, klopapier.exchange and compound.finance. If you want to get a general overview on DeFi Services, you might check the defipulse.com.

    Distributed Domain Name Services

    To provide your user interfaces in a sustainable way you might check ens.domains. If you want to try it, you might check this tutorial.

    Blockchain based Deployments

    For Permaweb deployments you might check argoapp.live. I tested it for a vuejs frontend project. It works pretty straight forward already. If you are in general a fan of the decentralized web (dWeb), you might also check the new (2021) IPFS browser standard.

    Fund Contributions

    If you see an issue in the DeFi space which you want to see solved, consider funding the solution via gitcoin.co.

    OpenBits based Open Source Incentive Engineering

    With this package we also explore the features of openbits.world.
    If you want to support this adventure, consider installing the package via:

    openbits install decentralized-finance-defi

    You can find background information on that via:
    https://openbits.world/#/explore-openbit/decentralized-finance-defi

    Deno based DeFi

    I prepared the corresponding Deno module and wait until the dependencies of the package at hand are ready for Deno resp. nest.land.

    GDPR related Data Privacy

    In order to comply to general data protection guidelines, you might consider providing built in transaction anonymization as a service to your users.
    One option to do so is described in this tutorial leveraging tornadocash.eth.link.
    Depending on your specific jurisdiction you might check tornadocash.eth.link/compliance.

    Security

    See Security Policy.

    Protect against Postinstall Exploits

    To be on the safe side even if a dependency of a dependency of a dependency .... tries to exploit the potential postinstall weak spot we recommend to adhere to the following pattern:

    npm config set ignore-scripts true
    npm install
    npm config set ignore-scripts false

    Reference Projects

    Some of the most famous projects using this package drawing

    Philosophy

    This package shall increase freedom for those who increase freedom. Actions of the weak shall be private. Actions of the powerful shall be transparent.

    Support our Open Source Contributions

    If you like our work, you might download the Brave Browser via our promotion link: https://brave.com/fan464 and enjoy the new (2021) IPFS browser standard.

    Install

    npm i decentralized-finance-defi

    DownloadsWeekly Downloads

    62

    Version

    4.2.0

    License

    MIT

    Unpacked Size

    14.7 MB

    Total Files

    283

    Last publish

    Collaborators

    • michael-spengler