0.1.18 • Published 3 years ago

@owen05/dodo-sdk v0.1.18

Weekly downloads
223
License
MIT
Repository
-
Last release
3 years ago

dodo-sdk

npm

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判断授权,构造交易

注:返回内容格式参考

npm.io

0.1.18

3 years ago

0.1.17

3 years ago

0.1.16

3 years ago

0.1.15

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.0.47

3 years ago

0.1.0

3 years ago

0.1.1

3 years ago

0.0.48

3 years ago

0.0.46

3 years ago

0.0.45

3 years ago

0.0.44

3 years ago

0.0.43

3 years ago

0.0.40

3 years ago

0.0.42

3 years ago

0.0.38

3 years ago

0.0.39

3 years ago

0.0.37

3 years ago

0.0.36

3 years ago

0.0.34

3 years ago

0.0.35

3 years ago

0.0.30

3 years ago

0.0.31

3 years ago

0.0.32

3 years ago

0.0.33

3 years ago

0.0.29

3 years ago

0.0.28

3 years ago

0.0.26

3 years ago

0.0.27

3 years ago

0.0.25

3 years ago

0.0.24

3 years ago

0.0.23

3 years ago

0.0.22

3 years ago

0.0.21

3 years ago

0.0.20

3 years ago

0.0.19

3 years ago

0.0.18

3 years ago

0.0.17

3 years ago

0.0.15

3 years ago

0.0.16

3 years ago

0.0.14

3 years ago

0.0.12

3 years ago

0.0.13

3 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago