Skip to content

Commit

Permalink
feat: add bot filter by feature
Browse files Browse the repository at this point in the history
  • Loading branch information
hedi-edelbloute committed Jan 15, 2025
1 parent 04af7d7 commit ce9b984
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 5 deletions.
8 changes: 8 additions & 0 deletions .changeset/wicked-timers-sing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@ledgerhq/live-common": minor
"@ledgerhq/coin-framework": minor
"@ledgerhq/coin-bitcoin": patch
"@ledgerhq/coin-cosmos": patch
---

Bot feature : Add filter for features
1 change: 1 addition & 0 deletions .github/workflows/bot-nonreg-nitrogen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ jobs:
BOT_ENVIRONMENT: production
# We don't run these currencies daily because fees are expensive
BOT_DISABLED_CURRENCIES: bitcoin,ethereum,qtum,decred,cardano,axelar,cosmos,secret_network,avalanche_c_chain,bsc,filecoin,tron,cronos,fantom,boba,telos_evm,polygon_zk_evm,polkadot
BOT_FILTER_FEATURES: send
1 change: 1 addition & 0 deletions .github/workflows/bot-nonreg-oxygen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ jobs:
BOT_ENVIRONMENT: production
# We only run these currencies on a weekly basis because fees are expensive
BOT_FILTER_CURRENCIES: qtum,decred,cardano,axelar,cosmos,secret_network,avalanche_c_chain,bsc,filecoin,tron,cronos,fantom,boba,telos_evm,polygon_zk_evm,polkadot
BOT_FILTER_FEATURES: send
6 changes: 5 additions & 1 deletion .github/workflows/bot-testing-nitrogen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ on:
currencies:
description: currency ids to test, separated with commas (,)
required: false
features:
description: features to test(send,sendMax,tokens,staking)
required: false
speculos_websocket:
description: check to use speculos with Websocket
type: boolean
Expand Down Expand Up @@ -37,7 +40,7 @@ jobs:
token: ${{ steps.generate-token.outputs.token }}
path: coin-apps
- name: Run the bot
uses: LedgerHQ/ledger-live/tools/actions/composites/bot@develop
uses: LedgerHQ/ledger-live/tools/actions/composites/bot@feat/add-feature-filter-bot
id: bot
timeout-minutes: 120
with:
Expand All @@ -48,4 +51,5 @@ jobs:
BOT_ENVIRONMENT: testing
BOT_FILTER_FAMILIES: ${{github.event.inputs.families}}
BOT_FILTER_CURRENCIES: ${{github.event.inputs.currencies}}
BOT_FILTER_FEATURES: ${{github.event.inputs.features}}
SPECULOS_USE_WEBSOCKET: ${{inputs.speculos_websocket}}
6 changes: 5 additions & 1 deletion libs/coin-framework/src/bot/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ export type TransactionRes<T extends TransactionCommon> = {
export type MutationSpec<T extends TransactionCommon> = {
// Name what this mutation is doing
name: string;
// related feature to test
feature?: MutationFeatureType;
// The maximum number of times to execute this mutation for a given test run
maxRun: number;
// Express the transaction to be done
Expand Down Expand Up @@ -118,7 +120,7 @@ export type AppSpec<T extends TransactionCommon> = {
testTimeout?: number;
// how much should we retry scan accounts if an error occurs
scanAccountsRetries?: number;
// if define, will run the mutations {multipleRuns} times in order to cover 2 txs in the same run and detect possible issues at the "second tx time"
// if defined, will run the mutations {multipleRuns} times in order to cover 2 txs in the same run and detect possible issues at the "second tx time"
multipleRuns?: number;
// if the nano app depends on an app, name of this app
dependency?: string | undefined;
Expand Down Expand Up @@ -266,3 +268,5 @@ export type FlowDesc<T extends TransactionCommon> = {
steps: Array<Step<T>>;
fallback?: (arg0: DeviceActionArg<T, State<T>>) => Step<T> | null | undefined;
};

export type MutationFeatureType = "send" | "sendMax" | "tokens" | "staking";
2 changes: 2 additions & 0 deletions libs/coin-modules/coin-bitcoin/src/specs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ const bitcoinLikeMutations = ({
}: Arg = {}): MutationSpec<Transaction>[] => [
{
name: "move ~50%",
feature: "send",
maxRun: 1,
transaction: ({ account, siblings, bridge, maxSpendable }) => {
invariant(maxSpendable.gt(minimalAmount), "balance is too low");
Expand Down Expand Up @@ -282,6 +283,7 @@ const bitcoinLikeMutations = ({
},
{
name: "send max",
feature: "sendMax",
maxRun: 1,
transaction: ({ account, siblings, bridge, maxSpendable }) => {
invariant(maxSpendable.gt(minimalAmount), "balance is too low");
Expand Down
5 changes: 4 additions & 1 deletion libs/coin-modules/coin-cosmos/src/specs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ function cosmosLikeMutations(minimalTransactionAmount: BigNumber): MutationSpec<
return [
{
name: "send some",
maxRun: 2,
feature: "send",
maxRun: 1,
testDestination: genericTestDestination,
test: ({ account, accountBeforeTransaction, operation }) => {
expect(account.balance.toString()).toBe(
Expand Down Expand Up @@ -148,6 +149,7 @@ function cosmosLikeMutations(minimalTransactionAmount: BigNumber): MutationSpec<
},
{
name: "send max",
feature: "sendMax",
maxRun: 1,
testDestination: genericTestDestination,
transaction: ({ account, siblings, bridge, maxSpendable }) => {
Expand Down Expand Up @@ -381,6 +383,7 @@ function cosmosLikeMutations(minimalTransactionAmount: BigNumber): MutationSpec<
},
{
name: "claim rewards",
feature: "staking",
maxRun: 1,
transaction: ({ account, bridge, maxSpendable }) => {
const { cosmosResources } = account as CosmosAccount;
Expand Down
12 changes: 11 additions & 1 deletion libs/ledger-live-common/src/bot/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@ const {
BOT_FILTER_FAMILIES,
BOT_DISABLED_CURRENCIES,
BOT_DISABLED_FAMILIES,
BOT_FILTER_FEATURES,
} = process.env;

const arg: Partial<{
filter: Partial<{ currencies: string[]; families: string[]; mutation: string }>;
filter: Partial<{
currencies: string[];
families: string[];
mutation: string;
features: string[];
}>;
disabled: Partial<{ currencies: string[]; families: string[] }>;
}> = {};

Expand All @@ -34,4 +40,8 @@ if (BOT_DISABLED_FAMILIES) {
arg.disabled.families = BOT_DISABLED_FAMILIES.split(",");
}

if (BOT_FILTER_FEATURES) {
arg.filter.features = BOT_FILTER_FEATURES.split(",");
}

bot(arg);
15 changes: 15 additions & 0 deletions libs/ledger-live-common/src/bot/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,21 @@ describe("getSpecs", () => {
expect(specs.every(spec => spec.currency.family === "bitcoin")).toEqual(true);
});

it("should filter by feature correctly", () => {
setSupportedCurrencies(["bitcoin"]);
const specs = getSpecs({ disabled: {}, filter: { features: ["send"] } });
expect(specs[0].mutations.length).toBeGreaterThan(0);
expect(specs[0].mutations.every(spec => spec.feature === "send")).toEqual(true);
});

it("should filter multiple features correctly", () => {
setSupportedCurrencies(["bitcoin"]);
const currentFilter = ["send", "sendMax"];
const specs = getSpecs({ disabled: {}, filter: { features: currentFilter } });
expect(specs[0].mutations.length).toBeGreaterThan(0);
expect(specs[0].mutations.every(spec => currentFilter.includes(spec.feature))).toEqual(true);
});

it("should disable currencies correctly", () => {
setSupportedCurrencies(["bitcoin", "ethereum", "digibyte"]);
const specs = getSpecs({ disabled: { currencies: ["digibyte"] }, filter: {} });
Expand Down
15 changes: 14 additions & 1 deletion libs/ledger-live-common/src/bot/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ import { sha256 } from "../crypto";
import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName";

type Arg = Partial<{
filter: Partial<{ currencies: string[]; families: string[]; mutation: string }>;
filter: Partial<{
currencies: string[];
families: string[];
mutation: string;
features: string[];
}>;
disabled: Partial<{ currencies: string[]; families: string[] }>;
}>;
const usd = getFiatCurrencyByTicker("USD");
Expand Down Expand Up @@ -105,6 +110,7 @@ export function getSpecs({ disabled, filter }) {
const filteredCurrencies = filter?.currencies || [];
const filteredFamilies = filter?.families || [];
const filteredMutation = filter?.mutation;
const filteredFeatures = filter.features || [];
let disabledCurrencies = disabled?.currencies || [];
let disabledFamilies = disabled?.families || [];

Expand Down Expand Up @@ -155,6 +161,13 @@ export function getSpecs({ disabled, filter }) {
};
}

if (filteredFeatures) {
spec = {
...spec,
mutations: spec.mutations.filter(m => filteredFeatures.includes(m.feature)),
};
}

specs.push(spec);
}
}
Expand Down
4 changes: 4 additions & 0 deletions tools/actions/composites/bot/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ inputs:
BOT_FILTER_CURRENCIES:
description: "currencies to filter on"
required: false
BOT_FILTER_FEATURES:
description: "features to filter on"
required: false
BOT_DISABLED_FAMILIES:
description: "disabled families"
required: false
Expand Down Expand Up @@ -74,6 +77,7 @@ runs:
GITHUB_WORKFLOW: ${{ github.workflow }}
BOT_FILTER_FAMILIES: ${{ inputs.BOT_FILTER_FAMILIES }}
BOT_FILTER_CURRENCIES: ${{ inputs.BOT_FILTER_CURRENCIES }}
BOT_FILTER_FEATURES: ${{ inputs.BOT_FILTER_FEATURES }}
BOT_DISABLED_FAMILIES: ${{ inputs.BOT_DISABLED_FAMILIES }}
BOT_DISABLED_CURRENCIES: ${{ inputs.BOT_DISABLED_CURRENCIES }}
SHOW_LEGACY_NEW_ACCOUNT: ${{ inputs.SHOW_LEGACY_NEW_ACCOUNT }}
Expand Down

5 comments on commit ce9b984

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bot] Testing with 'Nitrogen' ($0.00) ⏲ 5ms

What is the bot and how does it work? Everything is documented here!

Details of the 0 mutations
Portfolio ($0.00) – Details of the 0 currencies
Spec (accounts) State Remaining Runs (est) funds?

Performance ⏲ 5ms

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL N/A N/A N/A N/A N/A N/A N/A N/A

What is the bot and how does it work? Everything is documented here!

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bot] Testing with 'Nitrogen' ($0.00) ⏲ 29.9s

What is the bot and how does it work? Everything is documented here!

1 critical spec errors

Spec osmosis failed!

Error: "Error during osmo synchronization: "API HTTP 429 https://osmosis-api.polkachu.com/cosmos/staking/v1beta1/delegations/osmo1hgyf054qztvmty3cayuw9nedftlhejv5r6kn0k
Details of the 0 mutations

Spec osmosis (failed)


Details of the 1 uncovered mutations

Spec osmosis (1)

  • send some:
Portfolio ($0.00) – Details of the 1 currencies
Spec (accounts) State Remaining Runs (est) funds?
osmosis (0) 0 ops , 🤷‍♂️ ``

Performance ⏲ 29.9s

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL 422ms N/A N/A N/A N/A N/A N/A N/A
osmosis (0) 422ms N/A N/A N/A N/A N/A N/A N/A

What is the bot and how does it work? Everything is documented here!

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bot] Testing with 'Nitrogen' 💰 1 miss funds ($0.15) ⏲ 18s

💰 1 specs may miss funds: cosmos

What is the bot and how does it work? Everything is documented here!

⚠️ 1 spec hints
  • Spec cosmos:
    • No mutation were found possible. Yet there are funds in the accounts, please investigate.
Details of the 0 mutations

Spec cosmos (10)

Spec cosmos found 10 Cosmos accounts (preload: 233ms). Will use Cosmos 2.36.0 on nanoS 2.1.0
undefined: 0.003586 ATOM (34ops) (cosmos1rs97j43nfyvc689y5rjvnnhrq3tes6ghmug9rd on 44'/118'/0'/0/0) #0 js:2:cosmos:cosmos1rs97j43nfyvc689y5rjvnnhrq3tes6ghmug9rd:
undefined: 0 ATOM (18ops) (cosmos1qvtnzptp30maznnhdg30xl2jtdq2shpn8u9ktm on 44'/118'/1'/0/0) #1 js:2:cosmos:cosmos1qvtnzptp30maznnhdg30xl2jtdq2shpn8u9ktm:
undefined: 0 ATOM (11ops) (cosmos1vvzwc6l3wfdaqa9rncex8k2uwtpwztswcqdxq7 on 44'/118'/2'/0/0) #2 js:2:cosmos:cosmos1vvzwc6l3wfdaqa9rncex8k2uwtpwztswcqdxq7:
undefined: 0 ATOM (15ops) (cosmos1hgyf054qztvmty3cayuw9nedftlhejv5tp9rey on 44'/118'/3'/0/0) #3 js:2:cosmos:cosmos1hgyf054qztvmty3cayuw9nedftlhejv5tp9rey:
undefined: 0 ATOM (9ops) (cosmos1vc7s929uh2yxyhau4wsg5th9jzedvkurrussma on 44'/118'/4'/0/0) #4 js:2:cosmos:cosmos1vc7s929uh2yxyhau4wsg5th9jzedvkurrussma:
undefined: 0.00466 ATOM (9ops) (cosmos1qgrd8srhvald995uvpeyncvwg7afgkmr0ur3xu on 44'/118'/5'/0/0) #5 js:2:cosmos:cosmos1qgrd8srhvald995uvpeyncvwg7afgkmr0ur3xu:
undefined: 0.004609 ATOM (8ops) (cosmos1n6vccpa77x7xyhnk98jy6gg3rmgjkazx5l9696 on 44'/118'/6'/0/0) #6 js:2:cosmos:cosmos1n6vccpa77x7xyhnk98jy6gg3rmgjkazx5l9696:
undefined: 0.006491 ATOM (10ops) (cosmos1v283e7h2plllyjwgqrexv2ge5e4z252uzpmlkn on 44'/118'/7'/0/0) #7 js:2:cosmos:cosmos1v283e7h2plllyjwgqrexv2ge5e4z252uzpmlkn:
undefined: 0.004927 ATOM (1ops) (cosmos1g9t7sv8y0mvu2qd0xguc40xujnu94rh5rz9vul on 44'/118'/8'/0/0) #8 js:2:cosmos:cosmos1g9t7sv8y0mvu2qd0xguc40xujnu94rh5rz9vul:
undefined: 0 ATOM (0ops) (cosmos1jgk668h53gd9wn09mndq7uzgk80nr5d8zssx7x on 44'/118'/9'/0/0) #9 js:2:cosmos:cosmos1jgk668h53gd9wn09mndq7uzgk80nr5d8zssx7x:

Details of the 1 uncovered mutations

Spec cosmos (1)

  • send some: balance is too low for send (10)
Portfolio ($0.15) – Details of the 1 currencies
Spec (accounts) State Remaining Runs (est) funds?
cosmos (10) 115 ops , 0.024273 ATOM ($0.15) ⚠️ 1 cosmos1rs97j43nfyvc689y5rjvnnhrq3tes6ghmug9rd
undefined: 0.003586 ATOM (34ops) (cosmos1rs97j43nfyvc689y5rjvnnhrq3tes6ghmug9rd on 44'/118'/0'/0/0) #0 js:2:cosmos:cosmos1rs97j43nfyvc689y5rjvnnhrq3tes6ghmug9rd:
undefined: 0 ATOM (18ops) (cosmos1qvtnzptp30maznnhdg30xl2jtdq2shpn8u9ktm on 44'/118'/1'/0/0) #1 js:2:cosmos:cosmos1qvtnzptp30maznnhdg30xl2jtdq2shpn8u9ktm:
undefined: 0 ATOM (11ops) (cosmos1vvzwc6l3wfdaqa9rncex8k2uwtpwztswcqdxq7 on 44'/118'/2'/0/0) #2 js:2:cosmos:cosmos1vvzwc6l3wfdaqa9rncex8k2uwtpwztswcqdxq7:
undefined: 0 ATOM (15ops) (cosmos1hgyf054qztvmty3cayuw9nedftlhejv5tp9rey on 44'/118'/3'/0/0) #3 js:2:cosmos:cosmos1hgyf054qztvmty3cayuw9nedftlhejv5tp9rey:
undefined: 0 ATOM (9ops) (cosmos1vc7s929uh2yxyhau4wsg5th9jzedvkurrussma on 44'/118'/4'/0/0) #4 js:2:cosmos:cosmos1vc7s929uh2yxyhau4wsg5th9jzedvkurrussma:
undefined: 0.00466 ATOM (9ops) (cosmos1qgrd8srhvald995uvpeyncvwg7afgkmr0ur3xu on 44'/118'/5'/0/0) #5 js:2:cosmos:cosmos1qgrd8srhvald995uvpeyncvwg7afgkmr0ur3xu:
undefined: 0.004609 ATOM (8ops) (cosmos1n6vccpa77x7xyhnk98jy6gg3rmgjkazx5l9696 on 44'/118'/6'/0/0) #6 js:2:cosmos:cosmos1n6vccpa77x7xyhnk98jy6gg3rmgjkazx5l9696:
undefined: 0.006491 ATOM (10ops) (cosmos1v283e7h2plllyjwgqrexv2ge5e4z252uzpmlkn on 44'/118'/7'/0/0) #7 js:2:cosmos:cosmos1v283e7h2plllyjwgqrexv2ge5e4z252uzpmlkn:
undefined: 0.004927 ATOM (1ops) (cosmos1g9t7sv8y0mvu2qd0xguc40xujnu94rh5rz9vul on 44'/118'/8'/0/0) #8 js:2:cosmos:cosmos1g9t7sv8y0mvu2qd0xguc40xujnu94rh5rz9vul:
undefined: 0 ATOM (0ops) (cosmos1jgk668h53gd9wn09mndq7uzgk80nr5d8zssx7x on 44'/118'/9'/0/0) #9 js:2:cosmos:cosmos1jgk668h53gd9wn09mndq7uzgk80nr5d8zssx7x:
Performance ⏲ 18s

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL 233ms 10.5s 1.20ms N/A N/A N/A N/A N/A
cosmos (9) 233ms 10.5s 1.20ms N/A N/A N/A N/A N/A

What is the bot and how does it work? Everything is documented here!

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bot] Testing with 'Nitrogen' ✅ 1 txs ($4.89) ⏲ 15.5s

✅ 1 specs are successful: crypto_org

What is the bot and how does it work? Everything is documented here!

Details of the 1 mutations

Spec crypto_org (12)

Spec crypto_org found 12 Cronos POS Chain accounts (preload: 412ms). Will use CronosPOSChain 2.18.0 on nanoS 2.1.0
undefined: 0 CRO (13ops) (cro14zpaxs3msrdnx5ch3m3y3yue0wwwevrf2hmwra on 44'/394'/0'/0/0) #0 js:2:crypto_org:cro14zpaxs3msrdnx5ch3m3y3yue0wwwevrf2hmwra:
undefined: 2.99927 CRO (18ops) (cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl on 44'/394'/1'/0/0) #1 js:2:crypto_org:cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl:
undefined: 3.31883 CRO (5ops) (cro1uxjd9r5yz6muu5fzhf8gj9dzvevpyzcc822je2 on 44'/394'/2'/0/0) #2 js:2:crypto_org:cro1uxjd9r5yz6muu5fzhf8gj9dzvevpyzcc822je2:
undefined: 0.296213 CRO (20ops) (cro1w58ly7vcu7a57pfa25zt3kdvt89z38690aedcd on 44'/394'/3'/0/0) #3 js:2:crypto_org:cro1w58ly7vcu7a57pfa25zt3kdvt89z38690aedcd:
undefined: 0 CRO (15ops) (cro17dv59jpz5tfk54sj9cdwqzjj8e22hp7g5a4v4l on 44'/394'/4'/0/0) #4 js:2:crypto_org:cro17dv59jpz5tfk54sj9cdwqzjj8e22hp7g5a4v4l:
undefined: 14.5779 CRO (19ops) (cro1zfhcf2htapdkjlw4ffqzce7yfe6mhscd2su05p on 44'/394'/5'/0/0) #5 js:2:crypto_org:cro1zfhcf2htapdkjlw4ffqzce7yfe6mhscd2su05p:
undefined: 0 CRO (11ops) (cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h on 44'/394'/6'/0/0) #6 js:2:crypto_org:cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h:
undefined: 2.58269 CRO (7ops) (cro1e2gxhqvvdhxnwd4k4txhegngcpudus6xq4jerk on 44'/394'/7'/0/0) #7 js:2:crypto_org:cro1e2gxhqvvdhxnwd4k4txhegngcpudus6xq4jerk:
undefined: 7.44954 CRO (6ops) (cro1rsl6f6zw3ygj4a0dj6ks8e72c0na4d2djzjfer on 44'/394'/8'/0/0) #8 js:2:crypto_org:cro1rsl6f6zw3ygj4a0dj6ks8e72c0na4d2djzjfer:
undefined: 3.49274 CRO (3ops) (cro1hguy0m603wmgs73m4ya68946e9ym392npqjt64 on 44'/394'/9'/0/0) #9 js:2:crypto_org:cro1hguy0m603wmgs73m4ya68946e9ym392npqjt64:
undefined: 0.0316096 CRO (1ops) (cro1un0mqythaxtt8eegq5ycqhry33fwk873dmxlu9 on 44'/394'/10'/0/0) #10 js:2:crypto_org:cro1un0mqythaxtt8eegq5ycqhry33fwk873dmxlu9:
undefined: 0 CRO (0ops) (cro1e4x938jzzfdjt37f9vlwj005ay0x2l8r8yknfd on 44'/394'/11'/0/0) #11 js:2:crypto_org:cro1e4x938jzzfdjt37f9vlwj005ay0x2l8r8yknfd:
necessary accounts resynced in 0.15ms
▬ CronosPOSChain 2.18.0 on nanoS 2.1.0
→ FROM undefined: 2.99927 CRO (18ops) (cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl on 44'/394'/1'/0/0) #1 js:2:crypto_org:cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl: (! sum of ops 2.37927786 CRO) 2.95439574 CRO spendable. 0.04195297 CRO delegated. 0.00293075 CRO unbonding. 
DELEGATIONS
  to crocncl10mfs428fyntu296dgh5fmhvdzrr2stlaekcrp9 0.0000777 CRO  (claimable 0.0000777)
  to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.02288115 CRO  (claimable 0.02288115)
  to crocncl1cjh9ltwrtsmhhn3y46yd4v93vepemx4h2896p8 0.01899412 CRO  (claimable 0.01899412)
UNDELEGATIONS
  from crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.00293075 CRO
REDELEGATIONS
  from crocncl1zkmqc6jwq3609uwsucwzps4vtdy5k2069hslf0 to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.00053515 CRO
  from crocncl15xphw2m025acwnjd2ucq9t5ku4ggaqyecekzqa to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.01723784 CRO

max spendable ~2.95436
★ using mutation 'send some'
→ TO undefined: 0 CRO (11ops) (cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h on 44'/394'/6'/0/0) #6 js:2:crypto_org:cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h:
✔️ transaction 
SEND  1.02239064 CRO
TO cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h

with fees=0.00002489
  memo=LedgerLiveBot
STATUS (608ms)
  amount: 1.02239064 CRO
  estimated fees: 0.00002489 CRO
  total spent: 1.02241553 CRO
errors: 
warnings: 
✔️ has been signed! (2817ms) 
✔️ broadcasted! (83ms) optimistic operation: 
  -1.02241553 CRO    OUT        336566A35FC7285E54AD02846ED8077C3D72F695A4B5BC048701A7558B954AA6 2025-01-15T16:52
✔️ operation confirmed (1.02ms): 
  -1.02241553 CRO    OUT        336566A35FC7285E54AD02846ED8077C3D72F695A4B5BC048701A7558B954AA6 2025-01-15T16:52
✔️ undefined: 2.99927 CRO (18ops) (cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl on 44'/394'/1'/0/0) #1 js:2:crypto_org:cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl: (! sum of ops 2.37927786 CRO) 2.95439574 CRO spendable. 0.04195297 CRO delegated. 0.00293075 CRO unbonding. 
DELEGATIONS
  to crocncl10mfs428fyntu296dgh5fmhvdzrr2stlaekcrp9 0.0000777 CRO  (claimable 0.0000777)
  to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.02288115 CRO  (claimable 0.02288115)
  to crocncl1cjh9ltwrtsmhhn3y46yd4v93vepemx4h2896p8 0.01899412 CRO  (claimable 0.01899412)
UNDELEGATIONS
  from crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.00293075 CRO
REDELEGATIONS
  from crocncl1zkmqc6jwq3609uwsucwzps4vtdy5k2069hslf0 to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.00053515 CRO
  from crocncl15xphw2m025acwnjd2ucq9t5ku4ggaqyecekzqa to crocncl1sqdy4mctg3nq54vsg2ty076xawqv0lp86rprze 0.01723784 CRO
✔️ destination operation 
  ? -102241553       OUT        336566A35FC7285E54AD02846ED8077C3D72F695A4B5BC048701A7558B954AA6 2025-01-15T16:52


Portfolio ($4.89) – Details of the 1 currencies
Spec (accounts) State Remaining Runs (est) funds?
crypto_org (12) 118 ops , 33.9959 CRO ($4.89) 💪 999+ cro14zpaxs3msrdnx5ch3m3y3yue0wwwevrf2hmwra
undefined: 0 CRO (13ops) (cro14zpaxs3msrdnx5ch3m3y3yue0wwwevrf2hmwra on 44'/394'/0'/0/0) #0 js:2:crypto_org:cro14zpaxs3msrdnx5ch3m3y3yue0wwwevrf2hmwra:
undefined: 2.99927 CRO (18ops) (cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl on 44'/394'/1'/0/0) #1 js:2:crypto_org:cro1h95uwv25le8rd0fl80qyp0438kn57xl4cp64dl:
undefined: 3.31883 CRO (5ops) (cro1uxjd9r5yz6muu5fzhf8gj9dzvevpyzcc822je2 on 44'/394'/2'/0/0) #2 js:2:crypto_org:cro1uxjd9r5yz6muu5fzhf8gj9dzvevpyzcc822je2:
undefined: 0.296213 CRO (20ops) (cro1w58ly7vcu7a57pfa25zt3kdvt89z38690aedcd on 44'/394'/3'/0/0) #3 js:2:crypto_org:cro1w58ly7vcu7a57pfa25zt3kdvt89z38690aedcd:
undefined: 0 CRO (15ops) (cro17dv59jpz5tfk54sj9cdwqzjj8e22hp7g5a4v4l on 44'/394'/4'/0/0) #4 js:2:crypto_org:cro17dv59jpz5tfk54sj9cdwqzjj8e22hp7g5a4v4l:
undefined: 14.5779 CRO (19ops) (cro1zfhcf2htapdkjlw4ffqzce7yfe6mhscd2su05p on 44'/394'/5'/0/0) #5 js:2:crypto_org:cro1zfhcf2htapdkjlw4ffqzce7yfe6mhscd2su05p:
undefined: 0 CRO (11ops) (cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h on 44'/394'/6'/0/0) #6 js:2:crypto_org:cro1gfrsr7eerpuc0zpl4j6wp3aj55gqahtls2hj9h:
undefined: 2.58269 CRO (7ops) (cro1e2gxhqvvdhxnwd4k4txhegngcpudus6xq4jerk on 44'/394'/7'/0/0) #7 js:2:crypto_org:cro1e2gxhqvvdhxnwd4k4txhegngcpudus6xq4jerk:
undefined: 7.44954 CRO (6ops) (cro1rsl6f6zw3ygj4a0dj6ks8e72c0na4d2djzjfer on 44'/394'/8'/0/0) #8 js:2:crypto_org:cro1rsl6f6zw3ygj4a0dj6ks8e72c0na4d2djzjfer:
undefined: 3.49274 CRO (3ops) (cro1hguy0m603wmgs73m4ya68946e9ym392npqjt64 on 44'/394'/9'/0/0) #9 js:2:crypto_org:cro1hguy0m603wmgs73m4ya68946e9ym392npqjt64:
undefined: 0.0316096 CRO (1ops) (cro1un0mqythaxtt8eegq5ycqhry33fwk873dmxlu9 on 44'/394'/10'/0/0) #10 js:2:crypto_org:cro1un0mqythaxtt8eegq5ycqhry33fwk873dmxlu9:
undefined: 0 CRO (0ops) (cro1e4x938jzzfdjt37f9vlwj005ay0x2l8r8yknfd on 44'/394'/11'/0/0) #11 js:2:crypto_org:cro1e4x938jzzfdjt37f9vlwj005ay0x2l8r8yknfd:
Performance ⏲ 15.5s

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL 412ms 6.5s 2.83ms 608ms 2817ms 83ms 1.02ms N/A
crypto_org (11) 412ms 6.5s 2.83ms 608ms 2817ms 83ms 1.02ms N/A

What is the bot and how does it work? Everything is documented here!

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bot] Testing with 'Nitrogen' 💰 1 miss funds ($400.38) ⏲ 21s

💰 1 specs may miss funds: Casper

What is the bot and how does it work? Everything is documented here!

⚠️ 1 spec hints
  • Spec Casper:
    • No mutation were found possible. Yet there are funds in the accounts, please investigate.
Details of the 0 mutations

Spec Casper (8)

Spec Casper found 8 Casper accounts. Will use Casper 2.6.8 on nanoSP 1.1.2
undefined: 6 CSPR (78ops) (02026b93627ed2f76551e7cef0466468b12db8fab806266107b69947d9c95ced9e7c on 44'/506'/0'/0/0) casper_wallet#0 js:2:casper:02026b93627ed2f76551e7cef0466468b12db8fab806266107b69947d9c95ced9e7c:casper_wallet
undefined: 0 CSPR (76ops) (02034a7c5519d553bc282f768dca044e18746b7be9b711f2f310c190f33b3cbc4a4f on 44'/506'/0'/0/1) casper_wallet#1 js:2:casper:02034a7c5519d553bc282f768dca044e18746b7be9b711f2f310c190f33b3cbc4a4f:casper_wallet
undefined: 3,124.98 CSPR (59ops) (0203b56bc181780f8fb173bafd8d483d6911282ec46d72692d0a5bbbb29ea242ed76 on 44'/506'/0'/0/2) casper_wallet#2 js:2:casper:0203b56bc181780f8fb173bafd8d483d6911282ec46d72692d0a5bbbb29ea242ed76:casper_wallet
undefined: 3,122.33 CSPR (75ops) (0203d14bf1367769813e9c7233db26dc2208ca211532a0c2b1189992dc01d4bc098e on 44'/506'/0'/0/3) casper_wallet#3 js:2:casper:0203d14bf1367769813e9c7233db26dc2208ca211532a0c2b1189992dc01d4bc098e:casper_wallet
undefined: 0 CSPR (60ops) (02039ae761a635a37868cf35e6de9799cba9fc4cdb9a3afbba6ab5c83291f13bbec8 on 44'/506'/0'/0/4) casper_wallet#4 js:2:casper:02039ae761a635a37868cf35e6de9799cba9fc4cdb9a3afbba6ab5c83291f13bbec8:casper_wallet
undefined: 0 CSPR (35ops) (02033ceac656c99270c432fd59a60102b4e807977f67c429298ea3436f2ce41a1b1b on 44'/506'/0'/0/5) casper_wallet#5 js:2:casper:02033ceac656c99270c432fd59a60102b4e807977f67c429298ea3436f2ce41a1b1b:casper_wallet
undefined: 18,731.6 CSPR (39ops) (02035addb3ef3863b0b44054e638f7c61f74319d5da70b8e98fef9ea984f7db6edac on 44'/506'/0'/0/6) casper_wallet#6 js:2:casper:02035addb3ef3863b0b44054e638f7c61f74319d5da70b8e98fef9ea984f7db6edac:casper_wallet
undefined: 0 CSPR (0ops) (0202b75fd56f06b03e675b33b0a136b6c87810c5a0435281dfe567c79596e0876fa4 on 44'/506'/0'/0/7) casper_wallet#7 js:2:casper:0202b75fd56f06b03e675b33b0a136b6c87810c5a0435281dfe567c79596e0876fa4:casper_wallet

Portfolio ($400.38) – Details of the 1 currencies
Spec (accounts) State Remaining Runs (est) funds?
Casper (8) 422 ops , 24,985 CSPR ($400.38) 02026b93627ed2f76551e7cef0466468b12db8fab806266107b69947d9c95ced9e7c
undefined: 6 CSPR (78ops) (02026b93627ed2f76551e7cef0466468b12db8fab806266107b69947d9c95ced9e7c on 44'/506'/0'/0/0) casper_wallet#0 js:2:casper:02026b93627ed2f76551e7cef0466468b12db8fab806266107b69947d9c95ced9e7c:casper_wallet
undefined: 0 CSPR (76ops) (02034a7c5519d553bc282f768dca044e18746b7be9b711f2f310c190f33b3cbc4a4f on 44'/506'/0'/0/1) casper_wallet#1 js:2:casper:02034a7c5519d553bc282f768dca044e18746b7be9b711f2f310c190f33b3cbc4a4f:casper_wallet
undefined: 3,124.98 CSPR (59ops) (0203b56bc181780f8fb173bafd8d483d6911282ec46d72692d0a5bbbb29ea242ed76 on 44'/506'/0'/0/2) casper_wallet#2 js:2:casper:0203b56bc181780f8fb173bafd8d483d6911282ec46d72692d0a5bbbb29ea242ed76:casper_wallet
undefined: 3,122.33 CSPR (75ops) (0203d14bf1367769813e9c7233db26dc2208ca211532a0c2b1189992dc01d4bc098e on 44'/506'/0'/0/3) casper_wallet#3 js:2:casper:0203d14bf1367769813e9c7233db26dc2208ca211532a0c2b1189992dc01d4bc098e:casper_wallet
undefined: 0 CSPR (60ops) (02039ae761a635a37868cf35e6de9799cba9fc4cdb9a3afbba6ab5c83291f13bbec8 on 44'/506'/0'/0/4) casper_wallet#4 js:2:casper:02039ae761a635a37868cf35e6de9799cba9fc4cdb9a3afbba6ab5c83291f13bbec8:casper_wallet
undefined: 0 CSPR (35ops) (02033ceac656c99270c432fd59a60102b4e807977f67c429298ea3436f2ce41a1b1b on 44'/506'/0'/0/5) casper_wallet#5 js:2:casper:02033ceac656c99270c432fd59a60102b4e807977f67c429298ea3436f2ce41a1b1b:casper_wallet
undefined: 18,731.6 CSPR (39ops) (02035addb3ef3863b0b44054e638f7c61f74319d5da70b8e98fef9ea984f7db6edac on 44'/506'/0'/0/6) casper_wallet#6 js:2:casper:02035addb3ef3863b0b44054e638f7c61f74319d5da70b8e98fef9ea984f7db6edac:casper_wallet
undefined: 0 CSPR (0ops) (0202b75fd56f06b03e675b33b0a136b6c87810c5a0435281dfe567c79596e0876fa4 on 44'/506'/0'/0/7) casper_wallet#7 js:2:casper:0202b75fd56f06b03e675b33b0a136b6c87810c5a0435281dfe567c79596e0876fa4:casper_wallet
Performance ⏲ 21s

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL 1.00ms 19s 1.05ms N/A N/A N/A N/A N/A
Casper (7) 1.00ms 19s 1.05ms N/A N/A N/A N/A N/A

What is the bot and how does it work? Everything is documented here!

Please sign in to comment.