npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@owen05/dodo-sdk

v0.1.18

Published

An SDK for building applications on top of dodo

Downloads

60

Readme

dodo-sdk

npm

  • link:https://www.npmjs.com/package/@owen05/dodo-sdk
  • install: npm i @owen05/dodo-sdk@latest

example

const Route = require("@owen05/dodo-sdk").Route;

main();

async function main() {
  /**
   * @notice 初始化构造参数 
   * @param  networkId  主网 1 Kovan 42  BSC 56
   * @param  DODOProxyV1      可选 0xa7bE5627aFF05e464f0F996111C21Bbd5535C509
   * @param  DODOApprove   可选 0x4eC851895d85bfa6835241b3157ae10FfFD3BebC
   */
  var dodoSdk = new Route(1);
  /**
   * @notice 获取token信息 
   * @param  tokenAddr    
   * @param  web3Provider          可选
   */
  var tokenAddr = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
  var tokenObj = await dodoSdk.GetTokenByAddr(tokenAddr);
  console.log("tokenObj", tokenObj);

  /**
   * @notice 获取默认tokenList
   */
  var tokenList = dodoSdk.GetTokenList();

  /**
   * @notice 获取订单历史
   * @param  userAddr
   * @param  fromTokenAddress  可选
   * @param  toTokenAddress    可选
   * @param  gapBlockNum       订单的区块高度区间(默认 30 * 6000, 30天) 可选
   * @param  web3Provider      可选
   */
  var userAddr = "0xaac153c1344cA14497A5dd22b1F70C28793625aa"
  var fromTokenAddress = "0xdAC17F958D2ee523a2206206994597C13D831ec7"
  var orders = await dodoSdk.GetUserOrderHistory(userAddr, fromTokenAddress)
  console.log("orders", orders);


  /**
   * @notice 查询路由
   * @param fromToken    {"symbol","name","decimals","address"}
   * @param toToken      {"symbol","name","decimals","address"}
   * @param swapAmount   (不考虑decimals)
   */
  var fromToken = tokenList['DODO']
  var toToken = tokenList['ETH']
  var swapAmount = 1
  var routeQuoteDetail = await dodoSdk.GetRoute(fromToken, toToken, swapAmount)
  console.log("routeQuoteDetail:", routeQuoteDetail);

  /**
   * @notice 构造路由请求至合约
   * @param fromToken    {"symbol","name","decimals","address"}
   * @param toToken      {"symbol","name","decimals","address"}
   * @param swapAmount   (不考虑decimals)
   * @param slippage     %
   * @param addr         账户地址
   * @param deadline     截止时间戳 单位 秒
   */
  var fromToken = tokenList['DODO']
  var toToken = tokenList['ETH']
  var swapAmount = 1
  var slippage = 5
  var addr = "0xaac153c1344cA14497A5dd22b1F70C28793625aa" //当前用户地址
  var deadline = Math.floor(new Date().getTime() / 1000 + 60 * 10)
  var source = routeQuoteDetail.useSource
  var routeDetail = await dodoSdk.MakeRoute(fromToken, toToken, swapAmount, slippage, addr, deadline, source)
  console.log("routeDetail:", routeDetail);


  /**
   * @notice 判断Swap的token是否需要Approve
   * @param  fromToken            {"symbol","name","decimals","address"}     
   * @param  accountAddr          用户地址 
   * @param  targetAddr           授权地址
   * @param  web3Provider         可选
   */
  var fromToken = tokenList['DODO'];
  var accountAddr = "0xaac153c1344cA14497A5dd22b1F70C28793625aa";
  var targetAddr = routeDetail.targetApproveAddr;
  var approveAmount = await dodoSdk.ApproveJudge(fromToken, accountAddr, targetAddr);
  console.log("curApproveAmount", approveAmount);

  /**
   * @notice ERC20 Token 交易授权 Data
   * @param  fromToken      {"symbol","name","decimals","address"}     
   * @param  targetAddr     授权合约地址
   * @param  approveAmount  授权数值
   * @param  web3Provider  可选
   */
  var fromToken = tokenList['USDC'];
  var targetAddr = routeDetail.targetApproveAddr;
  var approveAmount = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
  var approveData = await dodoSdk.ApproveHandle(fromToken, targetAddr, approveAmount);
  console.log("ApproveData", approveData);

  /**
   * @notice Legacy 已废弃
   * @param  fromToken    {"symbol","name","decimals","address"}
   * @param  toToken      {"symbol","name","decimals","address"}
   * @param  swapAmount   (不考虑decimals)
   * @param  slippage     {slippage}%
   * @param  accountAddr   账户地址
   * @param  deadline      expire时间戳 单位:秒
   * @param  web3Provider          可选
   */
  var fromToken = tokenList['USDC'];
  var toToken = tokenList['WETH'];
  var swapAmount = 1;
  var slippage = 1;
  var accountAddr = "0xaac153c1344cA14497A5dd22b1F70C28793625aa";
  var deadline = Math.floor(new Date().getTime() / 1000 + 60 * 10);
  var routeDetail = await dodoSdk.GetRouteDetail(fromToken, toToken, swapAmount, slippage, accountAddr, deadline);
  console.log("routeDetail", routeDetail);

}

有关ETH => WETH WETH => ETH

  • tokenList 中提供ETH,直接使用即可 (其中地址为:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
  • ETH => other token 不需要进行Approve判断,且routeDetail.targetApproveAddr 为空
  • other token => ETH 正常进行Approve判断授权,构造交易

注:返回内容格式参考