algorand / algorand/go-algorand

circular transfers failing

オープン
#1,575 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る
external contribution
主要言語
Go
スター
1.4k
フォーク
537
平均マージ
1日 7時間
マージ済み PR(30日)
18

説明

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==
```

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。