hel 1 an în urmă
părinte
comite
c4bd0b6dfb

+ 1 - 0
package.json

@@ -43,6 +43,7 @@
     "randomTask": "yarn build && node build/src/onchain/randomTask.js",
     "finalTask": "yarn build && node build/src/onchain/finalTask.js",
     "mintJennie": "yarn build && node build/src/onchain/mintJennie.js",
+    "wrongTask": "yarn build && node build/src/onchain/wrongTask.js",
     "decode": "yarn build && node build/src/decodeFunction.js"
   },
   "license": "Apache-2.0",

+ 22 - 0
src/BaseClient.ts

@@ -125,12 +125,34 @@ export abstract class BaseClient {
     const usdc = tokens.filter(token => token.denom === 'uusdc')[0]
     return !!usdc
   }
+  async checkTiaSwaped() {
+    const tokens = await this.checkBalance()
+    const usdc = tokens.filter(token => token.denom === 'utia')[0]
+    return !!usdc
+  }
+  async checkEthSwaped() {
+    const tokens = await this.checkBalance()
+    const usdc = tokens.filter(token => token.denom === 'ueth')[0]
+    return !!usdc
+  }
 
   async getUsdcAmount() {
     const tokens = await this.checkBalance()
     const usdc = tokens.filter(token => token.denom === 'uusdc')[0]
     return usdc.amount
   }
+  async getTiaAmount() {
+    const tokens = await this.checkBalance()
+    const usdc = tokens.filter(token => token.denom === 'utia')[0]
+    return usdc.amount
+  }
+  //todo
+  async getEthAmount() {
+    const tokens = await this.checkBalance()
+    console.log(tokens)
+    const usdc = tokens.filter(token => token.denom === 'ueth')[0]
+    return usdc.amount
+  }
 
   async bridge() {
     const size = bcs.option(bcs.u64()).serialize(0).toBase64()

+ 158 - 2
src/InitiaTask.ts

@@ -7,7 +7,6 @@ import {
 } from '@initia/initia.js'
 import { validatorArray } from './validatorArray'
 import { generateRandomString, getAxiosClient } from './utils'
-import axios from 'axios'
 
 export abstract class InitiaTask extends JennieModule {
   protected constructor(mnemonic: string, useProxy: boolean = false) {
@@ -42,6 +41,53 @@ export abstract class InitiaTask extends JennieModule {
     )
     return await this.broadcast(msg)
   }
+  async swapTiaScript() {
+    const swaped = await this.checkTiaSwaped()
+    if (swaped) {
+      console.log(`swaped`)
+      return `done`
+    }
+    //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=","QEIPAAAAAAA=","AaY5AQAAAAAA"]
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      '0x1',
+      'dex',
+      'swap_script',
+      [],
+      [
+        'sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=', //liquidityTOken
+        'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', //offerCoin
+        'QEIPAAAAAAA=', //offerAmount
+        bcs
+          .option(bcs.u64())
+          .serialize(this.randomAmount(1000, 2000))
+          .toBase64(),
+      ],
+    )
+    return await this.broadcast(msg)
+  }
+  async swapEthScript() {
+    const swaped = await this.checkEthSwaped()
+    if (swaped) {
+      console.log(`swaped`)
+      return `done`
+    }
+    // ["orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=","jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=","QEIPAAAAAAA=","AeYAAAAAAAAA"]
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      '0x1',
+      'dex',
+      'swap_script',
+      [],
+      [
+        'orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=', //liquidityTOken
+        'jkczvavPfUr8PRTw3UbJv1L7D86eS5lsk54ZW4vIkdk=', //offerCoin
+        'QEIPAAAAAAA=', //offerAmount
+        bcs.option(bcs.u64()).serialize(this.randomAmount(0, 100)).toBase64(),
+      ],
+    )
+    return await this.broadcast(msg)
+  }
 
   async nameRegister() {
     const moduleAddress =
@@ -86,12 +132,23 @@ export abstract class InitiaTask extends JennieModule {
   }
 
   async stakeSingle() {
+    const res = await this.getDelegationInfo()
+    const flag = res.some((item: any) => {
+      return (
+        item.balance[0].denom ===
+        'move/dbf06c48af3984ec6d9ae8a9aa7dbb0bb1e784aa9b8c4a5681af660cf8558d7d'
+      )
+    })
+    if (flag) {
+      return `done`
+    }
     const usdcAmount = await this.getUsdcAmount()
 
     const randomValidator =
       validatorArray[Math.floor(Math.random() * validatorArray.length)]
     // console.log(bcs.u64().serialize(usdcAmount).toBase64())
     // console.log(bcs.string().serialize(randomValidator).toBase64())
+    //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=","QJwAAAAAAAA=","AQ5IAwAAAAAA","MmluaXR2YWxvcGVyMTlqNmF3M2xxczBxaDk3Zjl0bHZodmdldWZjcjgzYTN3aDBzeHRu"]
     const msg = new MsgExecute(
       this.key.accAddress,
       '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a',
@@ -114,8 +171,107 @@ export abstract class InitiaTask extends JennieModule {
     )
     return await this.broadcast(msg)
   }
+  async stakeTiaSingle() {
+    const res = await this.getDelegationInfo()
+    const flag = res.some((item: any) => {
+      return (
+        item.balance[0].denom ===
+        'move/b134ae6786f10ef74294e627d2519b63b7c742a6735f98682929fea9a84744d2'
+      )
+    })
+    if (flag) {
+      return `done`
+    }
+    //move/b134ae6786f10ef74294e627d2519b63b7c742a6735f98682929fea9a84744d2
+    const usdcAmount = await this.getTiaAmount()
+
+    const randomValidator =
+      validatorArray[Math.floor(Math.random() * validatorArray.length)]
+    // console.log(bcs.u64().serialize(usdcAmount).toBase64())
+    // console.log(bcs.string().serialize(randomValidator).toBase64())
+    //["sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=","rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=","QJwAAAAAAAA=","AQ5IAwAAAAAA","MmluaXR2YWxvcGVyMTlqNmF3M2xxczBxaDk3Zjl0bHZodmdldWZjcjgzYTN3aDBzeHRu"]
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a',
+      'dex_utils',
+      'single_asset_provide_stake',
+      [],
+      [
+        'sTSuZ4bxDvdClOYn0lGbY7fHQqZzX5hoKSn+qahHRNI=',
+        'rM6zskU5Kv4INGt5TPXE/4Xn6ajIL8r1ESrp1kulfMs=',
+        bcs
+          .u64()
+          .serialize(Math.floor(Number(usdcAmount) / 2))
+          .toBase64(), //amount
+        bcs
+          .option(bcs.u64())
+          .serialize(this.randomAmount(1000, 10000))
+          .toBase64(),
+        bcs.string().serialize(randomValidator).toBase64(), //validator
+      ],
+    )
+    return await this.broadcast(msg)
+  }
+  async stakeEthSingle() {
+    const res = await this.getDelegationInfo()
+    const flag = res.some((item: any) => {
+      return (
+        item.balance[0].denom ===
+        'move/a2b0d3c8e53e379ede31f3a361ff02716d50ec53c6b65b8c48a81d5b06548200'
+      )
+    })
+    if (flag) {
+      return `done`
+    }
+
+    const usdcAmount = await this.getEthAmount()
+
+    const randomValidator =
+      validatorArray[Math.floor(Math.random() * validatorArray.length)]
+    // console.log(bcs.u64().serialize(usdcAmount).toBase64())
+    // console.log(bcs.string().serialize(randomValidator).toBase64())
+    //     ["orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=","vg74SeQlyomDDB/w+YT1sLUStwyralrilMYlXD7kzQw=","ZAAAAAAAAAA=","AUy6AgAAAAAA","MmluaXR2YWxvcGVyMWs0N3kyM3Jla3RnY2FueTk3bDk3cWwzY2x1MzZ4ajJjY2dra2x1"]
+    const msg = new MsgExecute(
+      this.key.accAddress,
+      '0x42cd8467b1c86e59bf319e5664a09b6b5840bb3fac64f5ce690b5041c530565a',
+      'dex_utils',
+      'single_asset_provide_stake',
+      [],
+      [
+        'orDTyOU+N57eMfOjYf8CcW1Q7FPGtluMSKgdWwZUggA=',
+        'vg74SeQlyomDDB/w+YT1sLUStwyralrilMYlXD7kzQw=',
+        bcs
+          .u64()
+          .serialize(Math.floor(Number(usdcAmount) / 2))
+          .toBase64(), //amount
+        bcs
+          .option(bcs.u64())
+          .serialize(this.randomAmount(1000, 10000))
+          .toBase64(),
+        bcs.string().serialize(randomValidator).toBase64(), //validator
+      ],
+    )
+    return await this.broadcast(msg)
+  }
+
+  async getDelegationInfo() {
+    const axiosClient = getAxiosClient(true)
+
+    const data = await axiosClient.get(
+      `https://b545809c-5562-4e60-b5a1-22e83df57748.initiation-1.mesa-rest.ue1-prod.newmetric.xyz/initia/mstaking/v1/delegations/${this.key.accAddress}`,
+    )
+    // console.log(JSON.stringify(response))
+    return data.data.delegation_responses
+  }
 
   async stakeInit() {
+    const res = await this.getDelegationInfo()
+    const flag = res.some((item: any) => {
+      return item.balance[0].denom === 'uinit'
+    })
+    if (flag) {
+      return `done`
+    }
     const randomValidator =
       validatorArray[Math.floor(Math.random() * validatorArray.length)]
     const msg = new MsgDelegate(
@@ -134,7 +290,7 @@ export abstract class InitiaTask extends JennieModule {
     )
     const response = data.data.delegation_responses
     if (response.length === 0) {
-      return false
+      return `done`
     }
     // return false
     const msgs = []

+ 20 - 16
src/JennieModule.ts

@@ -77,20 +77,20 @@ export abstract class JennieModule extends BaseClient {
     // Broadcast the minting message
     return await this.broadcast(msg)
   }
-  // async mintPartApprovedAll() {
-  //   const axios = getAxiosClient(true)
-  //   const res = await axios.get(
-  //     `https://xp-api.initiation-1.initia.xyz/xp/mint_parts/${this.key.accAddress}`,
-  //   )
-  //   const data = res.data
-  //   console.log(data.length)
-  //   let undone = [1, 2, 3, 4, 5, 6]
-  //   for (const item of data) {
-  //     const task = Number(item.task_id) + 1
-  //     undone = undone.filter(value => value !== task)
-  //   }
-  //   return undone
-  // }
+  async mintPartApprovedAll() {
+    const axios = getAxiosClient(true)
+    const res = await axios.get(
+      `https://xp-api.initiation-1.initia.xyz/xp/mint_parts/${this.key.accAddress}`,
+    )
+    const data = res.data
+    let undone = [1, 2, 3, 4, 5, 6]
+    for (const item of data) {
+      const task = Number(item.task_id) + 1
+      undone = undone.filter(value => value !== task)
+    }
+    console.log(undone)
+    return undone
+  }
   async mintPart() {
     // 获取 'jennie' 的铸造进度
     const axios = getAxiosClient(true)
@@ -111,6 +111,8 @@ export abstract class JennieModule extends BaseClient {
     )
     const progresses = mintProgress.jennie_part_progresses
 
+    console.log(progresses)
+
     for (const item of progresses) {
       if (item.is_minted) {
         continue
@@ -142,7 +144,7 @@ export abstract class JennieModule extends BaseClient {
     }
     return await this.broadcast(msgs)
   }
-  async claimable() {
+  async claimableXp() {
     //https://xp-api.initiation-1.initia.xyz/xp/claimable/init1w6ftxlsv7y5putq955ymxh2kd0wru7nqshetka
     const res = getAxiosClient(true)
     const data = await res.get(
@@ -177,7 +179,9 @@ export abstract class JennieModule extends BaseClient {
             .toBase64(),
         ],
       )
-      await this.broadcast(msg)
+      return await this.broadcast(msg)
+    } else {
+      return `done`
     }
   }
 }

+ 7 - 7
src/onchain/fundChecker.ts

@@ -6,7 +6,7 @@ import { InitiaClient } from '../InitiaClient'
 async function startCheck(concurrency) {
   const count = await DBClient.instance.account.count({
     where: {
-      status: Status.Fauceted,
+      status: Status.FaucetFailed,
     },
   })
   if (count < 300) {
@@ -16,9 +16,9 @@ async function startCheck(concurrency) {
   }
   const accountsRaw = await DBClient.instance.account.findMany({
     where: {
-      status: Status.Fauceted,
+      status: Status.FaucetFailed,
     },
-    take: 4000,
+    take: 24000,
   })
   await forEachAsync(accountsRaw, concurrency, async (account, index) => {
     console.log(`${index}/${accountsRaw.length}: processing ${account.address}`)
@@ -42,10 +42,10 @@ async function startCheck(concurrency) {
       }
     } catch (e) {
       console.log(e.message)
-      // await DBClient.instance.account.update({
-      //   where: { id: account.id },
-      //   data: { status: Status.MayQueued, message: e.message },
-      // })
+      await DBClient.instance.account.update({
+        where: { id: account.id },
+        data: { status: Status.MayQueued, message: e.message },
+      })
     }
   })
 }

+ 2 - 2
src/onchain/mintJennie.ts

@@ -8,7 +8,7 @@ async function startCheck(concurrency) {
     where: {
       finish: 2,
     },
-    take: 1000,
+    take: 10000,
   })
   await forEachAsync(accountsRaw, concurrency, async (account, index) => {
     console.log(`${index}/${accountsRaw.length}: processing ${account.address}`)
@@ -39,4 +39,4 @@ async function startCheck(concurrency) {
   })
 }
 
-startCheck(20)
+startCheck(120)

+ 3 - 5
src/onchain/randomTask.ts

@@ -69,8 +69,7 @@ async function startCheck(concurrency) {
         console.log(`task4`)
         const bool = await client.stakeInit()
 
-        console.log(bool)
-        if (bool) {
+        if (bool == `done`) {
           await DBClient.instance.randomTask.update({
             where: { id: account.id },
             data: { task4: 1 },
@@ -81,7 +80,7 @@ async function startCheck(concurrency) {
         const bool = await client.stakeSingle()
 
         console.log(bool)
-        if (bool) {
+        if (bool == `done`) {
           await DBClient.instance.randomTask.update({
             where: { id: account.id },
             data: { task5: 1 },
@@ -90,8 +89,7 @@ async function startCheck(concurrency) {
       } else if (randomPick === 6) {
         console.log(`task6`)
         const bool = await client.claimReward()
-        console.log(bool)
-        if (bool) {
+        if (bool == `done`) {
           await DBClient.instance.randomTask.update({
             where: { id: account.id },
             data: { task6: 1 },

+ 2 - 2
src/swapTester.ts

@@ -31,9 +31,9 @@ const lcd = new LCDClient('https://api-initia-testnet.whispernode.com/', {
 // )
 
 async function main() {
-  const client = new InitiaClient(key.mnemonic)
+  const client = new InitiaClient(key.mnemonic,false)
   // await client.nameRegister()
-  await client.bridge2Ai(1.2)
+  await client.claimableXp()
   // await client.mintPart()
 }
 main()