algorand / algorand/go-algorand

circular transfers failing

Aperta
#1,575 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub
external contribution
Lingua principale
Go
Stelle
1.4k
Fork
537
Merge medio
1g 7h
PR unite (30g)
18

Descrizione

I have the following transaction group:

```
0: type: appl, from: A, amt: 0, fee: 1000,
1: type: pay, from: B, to: A, amt: 0, fee: 1000
2: type: pay, from: A, to: B, amt: 1000, fee: 1000
3: type: pay, from: A, to: C, amt: 0, fee: 1000
```

where A's balance is very large, but B and C have zero balances.

My expectation is that this succeeds, because txn 2 gives the B the funds it needs to pay its fee. But, when I run this I get an error:

```
{"message":"TransactionPool.Remember: transaction ODBLSF6JJZYAEVMDP7O2ON4BNMJLXGIZZW536O5SBTSGJ4WKFRHA: overspend (account 7RR22O4SJSENA2F6WYYMJIRM4RSSK2OKCECIKGDNTET66XZOPSXUZ6T2TQ, data {_struct:{} Status:Offline MicroAlgos:{Raw:0} Rewa
rdsBase:0 RewardedMicroAlgos:{Raw:0} VoteID:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] SelectionID:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] VoteFirstValid:0 VoteLastValid:0 VoteKeyDilution:0
AssetParams:map[] Assets:map[] AuthAddr:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ AppLocalStates:map[] AppParams:map[] TotalAppSchema:{_struct:{} NumUint:0 NumByteSlice:0}}, tried to spend {1000})"}
```

The documentation on atomic transfers claims it supports circular transfers --- https://developer.algorand.org/docs/features/atomic_transfers/ --- but this appears to not be the case.

I did some looking around in the code and I don't see anything that evaluate the fixed point of the transaction group and allow circular transfers like this. But maybe I'm missing something in the code.

My guess is that my group could be re-ordered to pay B first, but that just happens to work in this case. But the general feature of circular transfers needs to be able to solve any ordering.

My txns in base64:

```
gqNzaWfEQJRr8JuWIAp2sLhn1Q/eZZLXX0DTl31OEu0VYCpZrQucPtMjY8r9UVSUV0agyoHFFOXnWdwpF4G3h+PhcNnoPgijdHhuiaRhcGlkNaNmZWXNA+iiZnbNEC6jZ2VuqWRldm5ldC12MaJnaMQgVTBRy6LxQAy6OhrpOlFuNubh/E8MkOKgNpWtpT8fpwCjZ3JwxCABClFrQcdJRMBDxXijVXCCS4GPGNtuAgidzQJt34lkoKJsds0UFqNzbmTEIOjYBqx+8xsECneuVypovdQ4EOPrTv3noIne++0AKqoKpHR5cGWkYXBwbIKkbHNpZ4KjYXJnlcQgARtNA92MAfEEkUPPnEyBfksWfx0bg+XG8PENiboee87EILaAla3gUo/yLE9gSXeQ7pwdnPddboCBLR00HWeZPWenxAgAAAAAAAAAAMQIAAAAAAAAEC7ECAAAAAAATEtAoWzEygIgBQYBAAUEJgIIAAAAAAAAADUguJKvRAjx+j1K7K+bmHi84o9GT/pInMAMfmJ0vDAHA+0zABAiEkEAijMAGCgXEkEAgTMCECMSQQB5MwIHMQASQQBwMwIIMwEBEkEAZjMDECMSQQBeMwMHKRJBAFYxFiMSQQBPMRAjEkEASDEIJBJBAEExBzMCABJBADgxMSUSQQAxJBYCLRJBACkkMwMIEkEAISMWMwMAUCwEUAIuEkEAEi8XJBJBAAtCAAoyBCEEEkEAACRDI0OjdHhuiaNmZWXNA+iiZnbNEC6jZ2VuqWRldm5ldC12MaJnaMQgVTBRy6LxQAy6OhrpOlFuNubh/E8MkOKgNpWtpT8fpwCjZ3JwxCABClFrQcdJRMBDxXijVXCCS4GPGNtuAgidzQJt34lkoKJsds0UFqNyY3bEIOjYBqx+8xsECneuVypovdQ4EOPrTv3noIne++0AKqoKo3NuZMQg/GOtO5JMiNBovrYwxKIs5GUlacoRBIUYbZkn718ufK+kdHlwZaNwYXmCo3NpZ8RAwv/J8BLUsXeHMT9QL9uRWphYXM7vkEk2H6DQBvW9Lc5W58PsS1ptnBAE0qUZXjyUXcLEutkmieeCEfE6v3eWBaN0eG6Ko2FtdM0D6KNmZWXNA+iiZnbNEC6jZ2VuqWRldm5ldC12MaJnaMQgVTBRy6LxQAy6OhrpOlFuNubh/E8MkOKgNpWtpT8fpwCjZ3JwxCABClFrQcdJRMBDxXijVXCCS4GPGNtuAgidzQJt34lkoKJsds0UFqNyY3bEIPxjrTuSTIjQaL62MMSiLORlJWnKEQSFGG2ZJ+9fLnyvo3NuZMQg6NgGrH7zGwQKd65XKmi91DgQ4+tO/eegid777QAqqgqkdHlwZaNwYXmCo3NpZ8RANdDWIVG57C210s+jXbgrv529EQC52tjCMlZi4GoCeDb5q3dVo6oK4EIGRv77bf+ENdrMN19+ZkhgxZ4rQBb5D6N0eG6Jo2ZlZc0D6KJmds0QLqNnZW6pZGV2bmV0LXYxomdoxCBVMFHLovFADLo6Guk6UW425uH8TwyQ4qA2la2lPx+nAKNncnDEIAEKUWtBx0lEwEPFeKNVcIJLgY8Y224CCJ3NAm3fiWSgomx2zRQWo3JjdsQguJKvRAjx+j1K7K+bmHi84o9GT/pInMAMfmJ0vDAHA+2jc25kxCDo2AasfvMbBAp3rlcqaL3UOBDj607956CJ3vvtACqqCqR0eXBlo3BheQ==
```

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.