Skip to content

Commit

Permalink
chore(trustchain): on removeMember, closeStream with the device for b…
Browse files Browse the repository at this point in the history
…etter UX (#7357)
  • Loading branch information
gre authored Jul 18, 2024
1 parent 95fdef0 commit 31171ce
Show file tree
Hide file tree
Showing 9 changed files with 453 additions and 476 deletions.
160 changes: 80 additions & 80 deletions libs/trustchain/mocks/scenarios/removedMemberEjectedOnGetMembers.json

Large diffs are not rendered by default.

188 changes: 81 additions & 107 deletions libs/trustchain/mocks/scenarios/removedMemberEjectedOnRestore.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

266 changes: 133 additions & 133 deletions libs/trustchain/mocks/scenarios/success.json

Large diffs are not rendered by default.

142 changes: 71 additions & 71 deletions libs/trustchain/mocks/scenarios/userRefusesRemoveMember.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions libs/trustchain/src/mockSdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,10 @@ export class MockSDK implements TrustchainSDK {
// simulate device interaction
callbacks?.onEndRequestUserInteraction();

callbacks?.onStartRequestUserInteraction();
// simulate device interaction
callbacks?.onEndRequestUserInteraction();

const currentMembers = (trustchainMembers.get(trustchain.rootId) || []).filter(
m => m.id !== member.id,
);
Expand Down
19 changes: 9 additions & 10 deletions libs/trustchain/src/sdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ export class SDK implements TrustchainSDK {

const newPath = streamTree.getApplicationRootPath(applicationId, 1);

// We close the current trustchain with the hardware wallet in order to get a user confirmation of the action
const sendCloseStreamToAPI = await remapUserInteractions(
closeStream(streamTree, applicationRootPath, trustchainId, withJwt, hw),
callbacks,
);

// derive a new branch of the tree on the new path
streamTree = await remapUserInteractions(
pushMember(streamTree, newPath, trustchainId, withJwt, hw, {
Expand All @@ -249,14 +255,8 @@ export class SDK implements TrustchainSDK {
memberCredentials,
);

// close the previous stream
streamTree = await closeStream(
streamTree,
applicationRootPath,
trustchainId,
withJwt,
softwareDevice,
);
// we send the close stream to the API only after the new stream is created in case user cancelled the process in the middle.
await sendCloseStreamToAPI();

// deviceJwt have changed, proactively refresh it
this.deviceJwt = await withJwt(api.refreshAuth);
Expand Down Expand Up @@ -480,8 +480,7 @@ async function closeStream(
path,
blocks: [crypto.to_hex(commandStream)],
};
await withJwt(jwt => api.putCommands(jwt, trustchainId, request));
return streamTree;
return () => withJwt(jwt => api.putCommands(jwt, trustchainId, request));
}

export function convertKeyPairToLiveCredentials(keyPair: CryptoKeyPair): MemberCredentials {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export async function scenario(transport: Transport, { sdkForName }: ScenarioOpt
await sdk1.addMember(trustchain, member1creds, member2);

await sdk1.removeMember(transport, trustchain, member1creds, member2, callbacks);
expect(totalInteractionCounter).toBe(3); // there are 1 interaction for trustchain addition
expect(totalInteractionCounter).toBe(4); // there are 2 interactions for trustchain addition

// destroy the trustchain
await sdk1.destroyTrustchain(trustchain, member1creds);
Expand Down
2 changes: 1 addition & 1 deletion libs/trustchain/tests/scenarios/userRefusesRemoveMember.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export async function scenario(transport: Transport, { sdkForName }: ScenarioOpt
sdk1.removeMember(transport, trustchain, member1creds, member2, callbacks),
).rejects.toThrow(UserRefusedOnDevice);
expect(interactionCounter).toBe(0);
expect(totalInteractionCounter).toBe(1);
expect(totalInteractionCounter).toBe(2);

// make sure the member2 is still there
expect(await sdk2.getMembers(trustchain, member2creds)).toEqual([member1, member2]);
Expand Down

1 comment on commit 31171ce

@github-actions
Copy link

Choose a reason for hiding this comment

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

[Bot] Testing with 'Nitrogen' ✅ 3 txs ❌ 1 txs ($3.53) ⏲ 2min

❌ 1 specs have problems: Algorand

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

❌ 1 mutation errors
necessary accounts resynced in 0.25ms
▬ Algorand 2.1.11 on nanoS 2.1.0
→ FROM undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ: 2.174998 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Exodus: 0 EXIT (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Opulous: 0 OPUL (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)
max spendable ~2.17399
★ using mutation 'opt-In ASA available'
→ TO undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ:
✔️ transaction 
    OPT_IN 0 ALGO
    TO RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ
    with fees=0.001 ALGO
STATUS (330ms)
  amount: 0 ALGO
  estimated fees: 0.001 ALGO
  total spent: 0.001 ALGO
errors: 
warnings: 
⚠️ TEST deviceAction confirm step 'Asset ID'
Error: expect(received).toMatchObject(expected)

- Expected  - 1
+ Received  + 1

  Object {
-   "Asset ID": "GP (#403499324)",
+   "Asset ID": "NEXUS (#403499324)",
  }
(totally spent 2325ms – ends at 2024-07-18T10:11:22.227Z)
⚠️ 1 spec hints
  • Spec Algorand:
    • mutations should define a testDestination(): opt-In ASA available
Details of the 4 mutations

Spec Algorand (6)

Spec Algorand found 6 Algorand accounts. Will use Algorand 2.1.11 on nanoS 2.1.0
undefined: 4.42777 ALGO (464ops) (TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4 on 44'/283'/0'/0/0) #0 js:2:algorand:TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4:
undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ:
undefined: 2.7 ALGO (465ops) (YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE on 44'/283'/2'/0/0) #2 js:2:algorand:YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE:
undefined: 6.68521 ALGO (512ops) (WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA on 44'/283'/3'/0/0) #3 js:2:algorand:WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA:
undefined: 3.84762 ALGO (421ops) (GEPEPFCOO7TRQ3HKU5IKQPARS7DDXDHH6Y2VNMUJWH7TMLLOZ3Z6JKRQAI on 44'/283'/4'/0/0) #4 js:2:algorand:GEPEPFCOO7TRQ3HKU5IKQPARS7DDXDHH6Y2VNMUJWH7TMLLOZ3Z6JKRQAI:
undefined: 0 ALGO (0ops) (X3TNYJCHUW6UBWVEN5K2ULWMLRWRGBEUWZLR4V2XR3UDN4TWNZP3Q6EAQU on 44'/283'/5'/0/0) #5 js:2:algorand:X3TNYJCHUW6UBWVEN5K2ULWMLRWRGBEUWZLR4V2XR3UDN4TWNZP3Q6EAQU:
necessary accounts resynced in 0.21ms
▬ Algorand 2.1.11 on nanoS 2.1.0
→ FROM undefined: 4.42777 ALGO (464ops) (TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4 on 44'/283'/0'/0/0) #0 js:2:algorand:TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4: 1.427778 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Exodus: 0 EXIT (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)
max spendable ~1.42677
★ using mutation 'move ~50%'
→ TO undefined: 2.7 ALGO (465ops) (YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE on 44'/283'/2'/0/0) #2 js:2:algorand:YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE:
✔️ transaction 
    SEND 0.731467 ALGO
    TO YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE
    with fees=0.001 ALGO
STATUS (433ms)
  amount: 0.731467 ALGO
  estimated fees: 0.001 ALGO
  total spent: 0.732467 ALGO
errors: 
warnings: 
✔️ has been signed! (4.8s) 
✔️ broadcasted! (66ms) optimistic operation: 
  -0.732467 ALGO     OUT        BISJOIP2LPCPVAZVRYCK4WMLXVCIGD5JQW5QLLOC2HMSNFNP5QQA 2024-07-18T10:09
✔️ operation confirmed (30.2s): 
  -0.732467 ALGO     OUT        BISJOIP2LPCPVAZVRYCK4WMLXVCIGD5JQW5QLLOC2HMSNFNP5QQA 2024-07-18T10:09 REWARDS : 0 ALGO          
✔️ undefined: 3.69531 ALGO (465ops) (TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4 on 44'/283'/0'/0/0) #0 js:2:algorand:TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4: 0.695311 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Exodus: 0 EXIT (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)(in 30.2s)
✔️ destination operation 
  +0.731467 ALGO     IN         BISJOIP2LPCPVAZVRYCK4WMLXVCIGD5JQW5QLLOC2HMSNFNP5QQA 2024-07-18T10:09 REWARDS : 0 ALGO          
(in 10.2s)

necessary accounts resynced in 0.25ms
▬ Algorand 2.1.11 on nanoS 2.1.0
→ FROM undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ: 2.174998 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Exodus: 0 EXIT (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Opulous: 0 OPUL (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)
max spendable ~2.17399
★ using mutation 'opt-In ASA available'
→ TO undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ:
✔️ transaction 
    OPT_IN 0 ALGO
    TO RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ
    with fees=0.001 ALGO
STATUS (330ms)
  amount: 0 ALGO
  estimated fees: 0.001 ALGO
  total spent: 0.001 ALGO
errors: 
warnings: 
⚠️ TEST deviceAction confirm step 'Asset ID'
Error: expect(received).toMatchObject(expected)

- Expected  - 1
+ Received  + 1

  Object {
-   "Asset ID": "GP (#403499324)",
+   "Asset ID": "NEXUS (#403499324)",
  }
(totally spent 2325ms – ends at 2024-07-18T10:11:22.258Z)
necessary accounts resynced in 0.26ms
▬ Algorand 2.1.11 on nanoS 2.1.0
→ FROM undefined: 3.43146 ALGO (466ops) (YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE on 44'/283'/2'/0/0) #2 js:2:algorand:YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE: 0.731467 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)
max spendable ~0.730467
★ using mutation 'move ~50%'
→ TO undefined: 6.68521 ALGO (512ops) (WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA on 44'/283'/3'/0/0) #3 js:2:algorand:WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA:
✔️ transaction 
    SEND 0.383414 ALGO
    TO WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA
    with fees=0.001 ALGO
STATUS (342ms)
  amount: 0.383414 ALGO
  estimated fees: 0.001 ALGO
  total spent: 0.384414 ALGO
errors: 
warnings: 
✔️ has been signed! (4.7s) 
✔️ broadcasted! (101ms) optimistic operation: 
  -0.384414 ALGO     OUT        5AZTLFOMAJGRQI2CEMNWXBCYJBCJVKMP6QALYFPSFOQ7VDK3JAEA 2024-07-18T10:10
✔️ operation confirmed (10.2s): 
  -0.384414 ALGO     OUT        5AZTLFOMAJGRQI2CEMNWXBCYJBCJVKMP6QALYFPSFOQ7VDK3JAEA 2024-07-18T10:10 REWARDS : 0 ALGO          
✔️ undefined: 3.04705 ALGO (467ops) (YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE on 44'/283'/2'/0/0) #2 js:2:algorand:YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE: 0.347053 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount Yieldly: 0 YLDY (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)(in 10.2s)
✔️ destination operation 
  +0.383414 ALGO     IN         5AZTLFOMAJGRQI2CEMNWXBCYJBCJVKMP6QALYFPSFOQ7VDK3JAEA 2024-07-18T10:10 REWARDS : 0 ALGO          
(in 10.2s)

necessary accounts resynced in 0.27ms
▬ Algorand 2.1.11 on nanoS 2.1.0
→ FROM undefined: 7.06862 ALGO (513ops) (WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA on 44'/283'/3'/0/0) #3 js:2:algorand:WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA: 4.268627 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)
max spendable ~4.26762
★ using mutation 'send max'
→ TO undefined: 5.27499 ALGO (451ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ:
✔️ transaction 
    SEND MAX
    TO RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ
    with fees=0.001 ALGO
STATUS (597ms)
  amount: 4.267627 ALGO
  estimated fees: 0.001 ALGO
  total spent: 4.268627 ALGO
errors: 
warnings: 
✔️ has been signed! (4.7s) 
✔️ broadcasted! (112ms) optimistic operation: 
  -4.268627 ALGO     OUT        FXZ6PB6KOZ366CVXOWJ6QL2NE2BZWGWK3KTGZ2BVVT2FK7BZJK3A 2024-07-18T10:11
✔️ operation confirmed (10.2s): 
  -4.268627 ALGO     OUT        FXZ6PB6KOZ366CVXOWJ6QL2NE2BZWGWK3KTGZ2BVVT2FK7BZJK3A 2024-07-18T10:11 REWARDS : 0 ALGO          
✔️ undefined: 2.8 ALGO (514ops) (WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA on 44'/283'/3'/0/0) #3 js:2:algorand:WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA: 0 ALGO spendable. 
  TokenAccount Asia Reserve Currency Coin: 0 ARCC (0 ops)
  TokenAccount MESE USD Exchange Token: 0 USD-MESE (0 ops)
  TokenAccount MESE Index Fund: 0 MESX (0 ops)
  TokenAccount Micro-Microsoft: 0 M-MSFT (0 ops)
  TokenAccount Micro-Amazon: 0 M-AMZN (0 ops)
  TokenAccount Micro-Twitter: 0 M-TWTR (0 ops)
  TokenAccount Micro-Netflix: 0 M-NFLX (0 ops)
  TokenAccount Micro-Google: 0 M-GOOGL (0 ops)
  TokenAccount Micro-Apple: 0 M-AAPL (0 ops)
  TokenAccount Micro-Tesla: 0 M-TSLA (0 ops)
  TokenAccount Realio Token: 0 RIO (0 ops)
  TokenAccount realioUSD: 0 RUSD (0 ops)
  TokenAccount Liquid Mining Fund I: 0 RHO 1 (0 ops)
  TokenAccount Credit Opportunities Fund I: 0 VAL 1 (0 ops)
  TokenAccount Meld Gold: 0 MCAU (0 ops)
  TokenAccount Meld Silver: 0 MCAG (0 ops)
  TokenAccount PLANET: 0 PLANETS (0 ops)
  TokenAccount USDC: 0 USDC (0 ops)
  TokenAccount HEADLINE: 0 HDL (0 ops)
  TokenAccount AlgoGems: 0 GEMS (0 ops)
  TokenAccount Choice Coin: 0 CHOICE (0 ops)
  TokenAccount Smile Coin: 0 SMILE (0 ops)
  TokenAccount goBTC: 0 goBTC (0 ops)
  TokenAccount goETH: 0 goETH (0 ops)
  TokenAccount goMINT: 0 goMINT (0 ops)
  TokenAccount Nimble: 0 NIMBLE (0 ops)
  TokenAccount CollecteursX: 0 CLTR (0 ops)(in 10.2s)
✔️ destination operation 
  +4.267627 ALGO     IN         FXZ6PB6KOZ366CVXOWJ6QL2NE2BZWGWK3KTGZ2BVVT2FK7BZJK3A 2024-07-18T10:11 REWARDS : 0 ALGO          
(in 10.3s)


Details of the 2 uncovered mutations

Spec Algorand (2)

  • send ASA ~50%: no subAccount with ASA (1), Spendable balance is too low (1)
  • claim rewards: No pending rewards (2)
Portfolio ($3.53) – Details of the 1 currencies
Spec (accounts) State Remaining Runs (est) funds?
Algorand (6) 2319 ops (+6), 9.13561 ALGO ($3.53) 💪 999+ TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4
undefined: 3.69531 ALGO (465ops) (TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4 on 44'/283'/0'/0/0) #0 js:2:algorand:TM4WJOS4MZ2TD775W7GSXZMBUF74YT6SKSBXCZY3N7OUIAPXE54MZ5FCD4:
undefined: 9.54262 ALGO (452ops) (RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ on 44'/283'/1'/0/0) #1 js:2:algorand:RWYWVHL3QJSTOLJTM6TIQ65LZX5IUJMHRMSEISS5FGJ7CRLTJSH3S5UAQQ:
undefined: 3.04705 ALGO (467ops) (YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE on 44'/283'/2'/0/0) #2 js:2:algorand:YHPWECPNX7OU2AS5NGEC6JUFZRUZWKXKO5RK267DEMQZ2R7IBCE2MAAYNE:
undefined: 2.8 ALGO (514ops) (WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA on 44'/283'/3'/0/0) #3 js:2:algorand:WNBXHLRE6IL5W5S3UO2FUWW7DJ6NUBVIVCYV2K66MFE3ABLAPDVEJX5ILA:
undefined: 3.84762 ALGO (421ops) (GEPEPFCOO7TRQ3HKU5IKQPARS7DDXDHH6Y2VNMUJWH7TMLLOZ3Z6JKRQAI on 44'/283'/4'/0/0) #4 js:2:algorand:GEPEPFCOO7TRQ3HKU5IKQPARS7DDXDHH6Y2VNMUJWH7TMLLOZ3Z6JKRQAI:
undefined: 0 ALGO (0ops) (X3TNYJCHUW6UBWVEN5K2ULWMLRWRGBEUWZLR4V2XR3UDN4TWNZP3Q6EAQU on 44'/283'/5'/0/0) #5 js:2:algorand:X3TNYJCHUW6UBWVEN5K2ULWMLRWRGBEUWZLR4V2XR3UDN4TWNZP3Q6EAQU:
Performance ⏲ 2min

Time spent for each spec: (total across mutations)

Spec (accounts) preload scan re-sync tx status sign op broadcast test destination test
TOTAL 1.12ms 16.1s 1.46ms 1702ms 14.3s 279ms 50.6s 30.7s
Algorand (5) 1.12ms 16.1s 1.46ms 1702ms 14.3s 279ms 50.6s 30.7s

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

Please sign in to comment.