Giter VIP home page Giter VIP logo

vault's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vault's Issues

abi文档

{
          id: 'ycrv',
          name: 'yCRV',
          symbol: 'yCRV',
          description: 'yCRV',
          poolSymbol: 'YFII',
          poolAddress: '0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83',
          erc20address: '0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8',
          vaultContractAddress: '0xD2db1EF55549eCdacb4e7da081216AE96f0Eedcb',
          StrategyContractAddress:'0xfd4c75184bed2013fdb621f54885b2d2ed7c3894',
          vaultContractABI: config.vaultContractABI,
          strategyContractABI: config.strategyContractABI,
          balance: 0,
          pooledBalance: 0,
          decimals: 18,
          version: 1,
          earnNeed24Hours: true
        }

基于上面的配置文件

poolAddress 是分红代币的地址
erc20address 是需要存入代币的地址

方法

image

读的数据

当前拥有分红代币的余额 方法是

let erc20Contract = new web3.eth.Contract(config.erc20ABI, poolAddress)
var balance = await erc20Contract.methods.balanceOf(account.address).call({ from: account.address });
balance = parseFloat(balance)/10**asset.decimals

当前拥有存入代币的余额

let erc20Contract = new web3.eth.Contract(config.erc20ABI, erc20address)
var balance = await erc20Contract.methods.balanceOf(account.address).call({ from: account.address });
balance = parseFloat(balance)/10**asset.decimals

deposit 金额

let vaultContract = new web3.eth.Contract(vaultContractABI,vaultContractAddress)

var deposit_data = await vaultContract.methods.plyr_(account.address).call({ from: account.address });
var deposit = deposit_data["stake"]/1e18

eared金额

let vaultContract = new web3.eth.Contract(vaultContractABI,vaultContractAddress)
let eared = await vaultContract.methods.cal_out(account.address).call({ from: account.address });
eared = eared/1e18

pending金额

需要先读到
let data = vaultContract.methods.global_(0)..call({ from: account.address });
total_stake = data["total_stake"]
earnings_per_share = data['earnings_per_share']
var plyr_data = await vaultContract.methods.plyr_(account.address).call({ from: account.address });

var payout = plyr_data["payout"]
magnitude = 10**40

然后还需要用下面 yield查询里面的数值(假设为yield_value

earnings_per_share = earnings_per_share+yield_value*(magnitude)/(total_stake)

earnings_per_share*他质押的金额(也就是上面的deposit,没有除以1e18的值)/magnitude - payout

这个结果就是pending的金额,需要除以1e18显示给用户看.

操作

deposit:

deposit之前需要授权金额大于他 deposit的金额

检查授权金额为

let erc20Contract = new web3.eth.Contract(config.erc20ABI, erc20address)

let approve_balance = await vaultContract.methods.allowance(account.address,vaultContractAddress).call({ from: account.address });

如果授权金额小于存入金额,则授权

        await erc20Contract.methods.approve(vaultContractAddress, web3.utils.toWei('79228162514', "ether")).send({ from: account.address, gasPrice: web3.utils.toWei(await this._getGasPrice(), 'gwei') })

授权结束后 再是deposit操作

deposit 操作 的方法是 vaultContractAddress 的deposit ,参数是 存入的金额,存入的金额需要小于他的余额

claim

操作 的方法是 vaultContractAddress 的claim ,无参数

withdraw

操作 的方法是 vaultContractAddress 的withdraw ,参数是他要取出的金额,需要小于他存入的最大金额

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.