h-agent-swap 2.2.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/.DS_Store +0 -0
- package/src/BERC20.js +30 -0
- package/src/abi/ERC20Standard.json +359 -0
- package/src/abi/PancakePair.json +5 -1
- package/src/abi/ProofPoker.json +293 -0
- package/src/abi/SwapFactory.json +2 -2
- package/src/abi/SwapRouter.json +2 -2
- package/src/abi/TokenMarket.json +324 -956
- package/src/agent-swap.js +118 -96
- package/src/index.js +7 -1
- package/src/poker.js +31 -0
- package/src/swap-router.js +1 -0
package/src/agent-swap.js
CHANGED
|
@@ -19,6 +19,20 @@ class AgentSwap extends HI {
|
|
|
19
19
|
this.lp = lp
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
async transfer({ to,amount,contract }) {
|
|
23
|
+
let tokenItem = new ERC20({ ...this.network,contract })
|
|
24
|
+
let user = this.web3.eth.defaultAccount
|
|
25
|
+
let balance = await this.balanceOf({
|
|
26
|
+
token:contract,
|
|
27
|
+
address:user
|
|
28
|
+
})
|
|
29
|
+
if(parseFloat(balance) < parseFloat(amount)) {
|
|
30
|
+
return false
|
|
31
|
+
}
|
|
32
|
+
let result = await tokenItem.transfer(to,amount)
|
|
33
|
+
return result
|
|
34
|
+
}
|
|
35
|
+
|
|
22
36
|
async estimate({ side = 0,amount = 0, point = 0 , wallet = "" ,usdt = "" }) {
|
|
23
37
|
let usdt_precision = 6
|
|
24
38
|
let tau_precision = 18
|
|
@@ -304,22 +318,11 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
304
318
|
|
|
305
319
|
|
|
306
320
|
|
|
307
|
-
async updateConfig({ tokenIn,tokenOut,config
|
|
321
|
+
async updateConfig({ tokenIn,tokenOut,config }) {
|
|
308
322
|
|
|
309
323
|
config.feeRate = multiplication(division(config.feeRate,100),this.pointMax)
|
|
310
|
-
config.
|
|
311
|
-
|
|
312
|
-
config.feeMax = multiplication(division(config.feeMax,100),this.pointMax)
|
|
313
|
-
config.rewardMin = multiplication(division(config.rewardMin,100),this.pointMax)
|
|
314
|
-
config.rewardMax = multiplication(division(config.rewardMax,100),this.pointMax)
|
|
315
|
-
config.range = multiplication(division(config.range,100),this.pointMax)
|
|
316
|
-
config.feeChange = multiplication(division(config.feeChange,100),this.pointMax)
|
|
317
|
-
config.rewardChange = multiplication(division(config.rewardChange,100),this.pointMax)
|
|
318
|
-
tax.tax = multiplication(division(tax.tax,100),this.pointMax)
|
|
319
|
-
tax.backBuy = multiplication(division(tax.backBuy,100),this.pointMax)
|
|
320
|
-
|
|
321
|
-
let symbol = new HERC20({ ...this.network, contract: usdt ? usdt : tokenOut })
|
|
322
|
-
config.price = await symbol.toAmount(config.price)
|
|
324
|
+
config.burnRate = multiplication(division(config.burnRate,100),this.pointMax)
|
|
325
|
+
|
|
323
326
|
|
|
324
327
|
let params = [
|
|
325
328
|
tokenIn,
|
|
@@ -327,30 +330,83 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
327
330
|
[
|
|
328
331
|
config.feeReceipt,
|
|
329
332
|
config.feeRate,
|
|
330
|
-
config.
|
|
331
|
-
config.
|
|
332
|
-
config.
|
|
333
|
-
config.feeMin,
|
|
334
|
-
config.feeMax,
|
|
335
|
-
config.rewardMin,
|
|
336
|
-
config.rewardMax,
|
|
337
|
-
config.range,
|
|
338
|
-
config.feeChange,
|
|
339
|
-
config.rewardChange
|
|
333
|
+
config.burnReceipt,
|
|
334
|
+
config.burnRate,
|
|
335
|
+
config.onoff
|
|
340
336
|
],
|
|
341
|
-
[
|
|
342
|
-
tax.taxReceipt,
|
|
343
|
-
tax.tax,
|
|
344
|
-
tax.backBuy,
|
|
345
|
-
tax.pricing
|
|
346
|
-
]
|
|
347
|
-
|
|
348
337
|
]
|
|
349
|
-
console.log(params)
|
|
350
338
|
let result = await this.manage("updateConfig",params)
|
|
351
339
|
return result
|
|
352
340
|
}
|
|
353
341
|
|
|
342
|
+
async sync({ tokenIn,tokenOut }) {
|
|
343
|
+
|
|
344
|
+
let params = [
|
|
345
|
+
tokenIn,
|
|
346
|
+
tokenOut,
|
|
347
|
+
]
|
|
348
|
+
let result = await this.manage("sync",params)
|
|
349
|
+
return result
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
async updateWhite({ address,onoff }) {
|
|
354
|
+
|
|
355
|
+
let params = [
|
|
356
|
+
address,
|
|
357
|
+
onoff
|
|
358
|
+
]
|
|
359
|
+
let result = await this.manage("updateWhite",params)
|
|
360
|
+
return result
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
async setMaxAllowedOffset(percent) {
|
|
365
|
+
percent = multiplication(division(percent,100),this.pointMax)
|
|
366
|
+
let params = [
|
|
367
|
+
percent
|
|
368
|
+
]
|
|
369
|
+
let result = await this.manage("setMaxAllowedOffset",params)
|
|
370
|
+
return result
|
|
371
|
+
}
|
|
372
|
+
async getMaxAllowedOffset() {
|
|
373
|
+
let result = await this.SC.methods.maxAllowedOffset().call()
|
|
374
|
+
|
|
375
|
+
return division(result,this.pointMax)
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
async setMaxSwapRatioBps(percent) {
|
|
379
|
+
percent = multiplication(division(percent,100),this.pointMax)
|
|
380
|
+
let params = [
|
|
381
|
+
percent
|
|
382
|
+
]
|
|
383
|
+
let result = await this.manage("setMaxSwapRatioBps",params)
|
|
384
|
+
return result
|
|
385
|
+
}
|
|
386
|
+
async getMaxSwapRatioBps() {
|
|
387
|
+
let result = await this.SC.methods.maxSwapRatioBps().call()
|
|
388
|
+
|
|
389
|
+
return division(result,this.pointMax)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
async setTwapPeriod(period) {
|
|
395
|
+
|
|
396
|
+
let params = [
|
|
397
|
+
period
|
|
398
|
+
]
|
|
399
|
+
let result = await this.manage("setTwapPeriod",params)
|
|
400
|
+
return result
|
|
401
|
+
}
|
|
402
|
+
async getTwapPeriod() {
|
|
403
|
+
let result = await this.SC.methods.twapPeriod().call()
|
|
404
|
+
|
|
405
|
+
return result
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
354
410
|
|
|
355
411
|
async route() {
|
|
356
412
|
if (!this.ROUTER) {
|
|
@@ -376,27 +432,10 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
376
432
|
}
|
|
377
433
|
|
|
378
434
|
|
|
379
|
-
async getConfig({ tokenIn,tokenOut
|
|
380
|
-
let
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
let result = {
|
|
384
|
-
...result1,
|
|
385
|
-
...result2
|
|
386
|
-
}
|
|
387
|
-
result.feeChange = multiplication(division(result.feeChange,this.pointMax),100)
|
|
388
|
-
result.rewardChange = multiplication(division(result.rewardChange,this.pointMax),100)
|
|
389
|
-
result.feeMax = multiplication(division(result.feeMax,this.pointMax),100)
|
|
390
|
-
result.feeMin = multiplication(division(result.feeMin,this.pointMax),100)
|
|
391
|
-
result.feeRate = multiplication(division(result.feeRate,this.pointMax),100)
|
|
392
|
-
result.range = multiplication(division(result.range,this.pointMax),100)
|
|
393
|
-
result.price = await usdtToken.fromAmount(result.price)
|
|
394
|
-
result.reward = multiplication(division(result.reward,this.pointMax),100)
|
|
395
|
-
|
|
396
|
-
result.rewardMax = multiplication(division(result.rewardMax,this.pointMax),100)
|
|
397
|
-
result.rewardMin = multiplication(division(result.rewardMin,this.pointMax),100)
|
|
398
|
-
result.tax = multiplication(division(result.tax,this.pointMax),100)
|
|
399
|
-
result.backBuy = multiplication(division(result.backBuy,this.pointMax),100)
|
|
435
|
+
async getConfig({ tokenIn,tokenOut }) {
|
|
436
|
+
let result = await this.SC.methods.runConfig(tokenIn,tokenOut).call()
|
|
437
|
+
|
|
438
|
+
|
|
400
439
|
return result
|
|
401
440
|
}
|
|
402
441
|
|
|
@@ -505,8 +544,29 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
505
544
|
|
|
506
545
|
|
|
507
546
|
async tradeConfig({ amount,path,side = 0,point = 1000, target = "" }) {
|
|
547
|
+
if(path.length != 2) {
|
|
548
|
+
throw "仅支持单一交易对计算"
|
|
549
|
+
}
|
|
550
|
+
if(side != 0) {
|
|
551
|
+
throw "仅支持固定输入计算"
|
|
552
|
+
}
|
|
508
553
|
let inToken = path[0]
|
|
509
554
|
let outToken = path[path.length - 1]
|
|
555
|
+
|
|
556
|
+
let config = await this.getConfig({ tokenIn:inToken,tokenOut:outToken })
|
|
557
|
+
if(!config.onoff) {
|
|
558
|
+
throw "交易对未开启"
|
|
559
|
+
}
|
|
560
|
+
// amount 为固定输入金额
|
|
561
|
+
// 扣除手续费 以及 销毁费用
|
|
562
|
+
amount = await this.pointOffset({
|
|
563
|
+
point:plus(config.feeRate,config.burnRate),
|
|
564
|
+
amount,
|
|
565
|
+
isplus:false
|
|
566
|
+
})
|
|
567
|
+
console.log("扣除费用后金额:",amount)
|
|
568
|
+
|
|
569
|
+
|
|
510
570
|
let IToken = new HERC20({ ...this.network, contract: inToken })
|
|
511
571
|
let OToken = new HERC20({ ...this.network, contract: outToken })
|
|
512
572
|
let outAmount;
|
|
@@ -516,51 +576,12 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
516
576
|
inAmount = amount
|
|
517
577
|
outAmount = await this.computeAmount({ amount,path,side,point })
|
|
518
578
|
inputAmount = await IToken.toAmount(amount)
|
|
519
|
-
|
|
520
|
-
inAmount = await this.computeAmount({ amount,path,side,point,format:true })
|
|
521
|
-
outAmount = await OToken.toAmount(amount)
|
|
522
|
-
inputAmount = await IToken.toAmount(amount)
|
|
579
|
+
console.log("预计输出金额:",outAmount)
|
|
523
580
|
}
|
|
524
|
-
let user = target ? target : this.web3.eth.defaultAccount
|
|
525
|
-
console.log([inToken,outToken,path,inputAmount,outAmount,user])
|
|
526
|
-
|
|
527
|
-
let result;
|
|
528
|
-
let decimals = await OToken.decimals()
|
|
529
|
-
try{
|
|
530
|
-
|
|
531
|
-
result = await this.SC.methods.fundRead(inToken,outToken,path,inputAmount,outAmount,user).call()
|
|
532
|
-
console.log(result)
|
|
533
|
-
|
|
534
|
-
result.feeAmount = toSmall(result.group.feeAmount,decimals)
|
|
535
|
-
result.outReal = toSmall(result.group.outAmount,decimals)
|
|
536
|
-
result.taxAmount = toSmall(result.group.taxAmount,decimals)
|
|
537
|
-
result.backAmount = toSmall(result.group.backAmount,decimals)
|
|
538
|
-
result.buyAmount = toSmall(result.group.buyAmount,decimals)
|
|
539
|
-
result.change = toSmall(result.group.change,decimals)
|
|
540
|
-
result.win = result.group.win
|
|
541
|
-
|
|
542
|
-
result.feeRate = division(result.config.feeRate,this.pointMax)
|
|
543
|
-
result.reward = division(result.config.reward,this.pointMax)
|
|
544
|
-
result.rewardAmount = multiplication(result.reward,toSmall(outAmount,decimals))
|
|
545
|
-
result.outAmount = toSmall(outAmount,decimals)
|
|
546
|
-
result.inAmount = inAmount
|
|
547
|
-
}catch(err){
|
|
548
|
-
console.log(err)
|
|
549
|
-
result = {}
|
|
550
|
-
result.outAmount = toSmall(outAmount,decimals)
|
|
551
|
-
result.inAmount = inAmount
|
|
552
|
-
result.feeAmount = 0
|
|
553
|
-
result.outReal = 0
|
|
554
|
-
result.taxAmount = 0
|
|
555
|
-
result.buyAmount = 0
|
|
556
|
-
result.change = 0
|
|
557
|
-
result.win = false
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
console.log(result)
|
|
561
581
|
|
|
582
|
+
let outputAmount = await OToken.fromAmount(outAmount)
|
|
562
583
|
|
|
563
|
-
return
|
|
584
|
+
return outputAmount
|
|
564
585
|
}
|
|
565
586
|
|
|
566
587
|
|
|
@@ -652,6 +673,7 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
652
673
|
ethAmount = inAmount
|
|
653
674
|
}
|
|
654
675
|
|
|
676
|
+
|
|
655
677
|
let amountIn = await IToken.fromAmount(inAmount)
|
|
656
678
|
await IToken.tradeApprove(this.contract,amountIn)
|
|
657
679
|
|
|
@@ -661,7 +683,7 @@ ${JSON.stringify(data,null,2)}`)
|
|
|
661
683
|
deadline = deadline ? deadline : plus(multiplication(60, 30), now)
|
|
662
684
|
|
|
663
685
|
let parma_list = [
|
|
664
|
-
path,inAmount,
|
|
686
|
+
path,inAmount,side, deadline,point
|
|
665
687
|
]
|
|
666
688
|
console.log(parma_list)
|
|
667
689
|
let parmas = await this.buildTx("swapToken", parma_list, ethAmount)
|
package/src/index.js
CHANGED
|
@@ -3,16 +3,22 @@ let AgentSwap = require("./agent-swap")
|
|
|
3
3
|
let SwapFactory = require("./swap-factory")
|
|
4
4
|
let SwapRouter = require("./swap-router")
|
|
5
5
|
let SwapLP = require("./swap-pair")
|
|
6
|
+
let Poker = require("./poker")
|
|
7
|
+
let BERC20 = require("./BERC20")
|
|
6
8
|
if (window) {
|
|
7
9
|
window.AgentSwap = AgentSwap
|
|
8
10
|
window.SwapFactory = SwapFactory
|
|
9
11
|
window.SwapRouter = SwapRouter
|
|
10
12
|
window.SwapLP = SwapLP
|
|
13
|
+
window.Poker = Poker
|
|
14
|
+
window.BERC20 = BERC20
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
module.exports = {
|
|
14
18
|
AgentSwap,
|
|
15
19
|
SwapFactory,
|
|
16
20
|
SwapRouter,
|
|
17
|
-
SwapLP
|
|
21
|
+
SwapLP,
|
|
22
|
+
Poker,
|
|
23
|
+
BERC20
|
|
18
24
|
}
|
package/src/poker.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
let { HI, HERC20, HERC721 } = require("h-token-staking")
|
|
2
|
+
let { abi } = require("./abi/PancakePair.json")
|
|
3
|
+
|
|
4
|
+
let { plus, reduce, multiplication, division, saveNum, charCompare, longHandle, toSmall } = require("h-token-staking/src/utils")
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Poker extends HI {
|
|
8
|
+
constructor({ provider, account, rpcUrl, privateKey, contract }) {
|
|
9
|
+
super({ provider, account, rpcUrl, privateKey, contract, abi })
|
|
10
|
+
this.mainToken = "0x0000000000000000000000000000000000000000"
|
|
11
|
+
this.maxVal = "999000000000000000000000000000000000000000000000000"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async manage(method, param = []) {
|
|
15
|
+
|
|
16
|
+
let parmas = await this.buildTx(method, param)
|
|
17
|
+
let result = parmas && await this.broadTx(parmas)
|
|
18
|
+
return result
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async batchShuffleDeck() {
|
|
22
|
+
let result = await this.manage("batchShuffleDeck", [
|
|
23
|
+
[4, 9, ["BCN3flPvQG7WwA0QeJf6zQ==", "AyiTbgXKnzBBRL5k3RalkA==", "oNmVY+Hfd+AhCfIbWntkvA==", "LS1ntlTCXaCmNSddhA2UhQ==", "YmgD1T8gdEKPKCy40rAxww==", "K6k0LZ9Ccf9YaD4W1SyrUA==", "aQ+UMN31NIt+CGa5gggxzA==", "eX5FqgHkrdjDnPzr8aNwyQ==", "t3uWwv5pZ6cCNWdZGooCpw==", "gxmozokr7q2CNHRk/3Tn6w==", "0XwEbSmXDQoaumvC1Lxfxg==", "IuuC5ijJJU6YEh/GjGtr5g==", "fw50pD+WozmGqsCM39g3/Q==", "PsS+8aKEvtrKPr48q2Tblw==", "IJ+AJ9pOpRsIC60DPjbs5w==", "f5Q6mNRz+7bWeT4CdCNk8g==", "7AlL0l8qaH2nWAWK5VtLmg==", "d8dmOZvHEgzikh6C7PTGKw==", "izr8d/Ejgdq/SpO2BNrFIQ==", "j8GnE/dF0Zs4Mh8XUP68dg==", "0HnGukrdknUBDc4ZufwuRQ==", "95vYaGn/RHmOygp8ClvWfg==", "G7+iavf+Akm1sHiPQsm0TQ=="]],
|
|
24
|
+
[5, 9, ["ONczmRH95zmrfXTMtDyIsA==", "TM804gczm1uAcrK2ZVzbHA==", "QnfEXRsRwduSrTAzOgrRUA==", "IH56WOzJ8NRJXP79zUCWIw==", "GWxNo4EwLHc1lpeg5yCnoQ==", "3VcZqi5W47B6wcWsQxxNUQ==", "zE0cMG5ipNKX3bEUjpFsJA==", "SyDKRiDl+Rz5hg0HHE1PCQ==", "dirNT5ChBfPC0oZ8ctgw7A==", "xskDjAwxVOZkAIPMvUW5Zw==", "IgSv0F+ibJ9ErlwetUSv6w==", "pyWQcNmzIJ9UnxP3AhBo4A==", "WmU99woVsPCeOCP34k90gQ==", "Eu5+JU6/ePC7broKWAdJiQ==", "9COwh60lVtLnIEPZQGUuQA==", "yJxEDNvI4YOwsF45aYv9pw==", "iEPUJbpYkubUK6w1iJoQ+A==", "W/ktKxAKmW/rtP6PZCdCgg==", "SNJ7MlIbXg4zRCThzBlQqA==", "q6pnlFj1pw5E8l40gQ0tKw==", "25UjeQsif+UPUN1kweaJQA==", "WSVlQ2S6BhjCtST7EFGSgQ==", "UbNeaEmRW+p4LcLrwYXrFg=="]],
|
|
25
|
+
[6, 9, ["TTgHdcIPOQujo+F7xWe1Zw==", "uJ1ABPwWhGjrQJlkK+dTFA==", "cvLZwIjGLxGxG5DSSAUETg==", "VGHKdF0Tzcg7VeeLAHZstg==", "9ILIiwQotAnoYzVjv5uP0Q==", "vJb5KNoPn+oXg6t0asn5yw==", "VIfQbLiUBxx3R7ST6Eh5eg==", "gwSr3saCHQlvvgXNHuWgbw==", "HUqm1Mhy37wagPu/5wvsLw==", "lZ4+kbTK4LGqlf/Sy7OWeg==", "9EHrARME1VU32x/ut1cPbQ==", "etW9wU1SM44kwm1TUpt1lQ==", "Ck37jaaJNRicKIdyQE+k9w==", "AeQRDUsdIGZzb4NVeHeZyg==", "AxLm8wmsM64owMIB1u3gYg==", "SpbGHhdf9NX6QRo1plI8nw==", "9Jd+HHMW8DHTacnI84wBkQ==", "F8PG/m+HX+cAlgb9cvDDjQ==", "PwDw83D/pt5wF9x9ChJ6mw==", "kTOv28m/s7spI3A6Rib3rQ==", "ACJ4H18jt/G354z3wP+9Yg==", "hj50cQZQgjs5LHc5juDSXA==", "2GyE9ZOegwM43KT9dMCNtQ=="]]
|
|
26
|
+
])
|
|
27
|
+
return result
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = Poker
|
package/src/swap-router.js
CHANGED