bosnet / bosnet/sebak

Requesting operations for an account sometimes returns a different amount of results for the same request

Open
#925 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
44
Forks
12
PR merge metrics
No merged PRs in 30d

Description

When calling `https://mainnet.blockchainos.org/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAABgnJAAAAAAAAAAA3MDNjNTYxMC0wNDIyLTExZTktYjFlYi0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=true`, _embedded.records sometimes contain a different amount of records.

The bug can be reproduced, but the behavior is inconsistent. I had to perform the request multiple times to get the different responses below.

I'm not sure if this is a bug related to the operations for an account endpoint, or if it relates to all other endpoints as well.

Call 1 (the desired response) containing 4 records
``` json
{
"_embedded": {
"records": [
{
"_links": {
"self": {
"href": "/api/v1/transactions/B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ/operations/223"
},
"transaction": {
"href": "/api/v1/transactions/B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ"
}
},
"block_height": 348545,
"body": {
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"amount": "27976564374"
},
"confirmed": "2018-12-17T13:10:33.279197406Z",
"hash": "5nunt3dhp3Fodv9Ppk6nSqcNGJtVJimoji7DaWnz16Nq-B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ",
"index": 223,
"proposed_time": "2018-12-17T13:10:33.265373938Z",
"source": "GCD2K7NFW6IBLSLYX5IZMYVVN2ETASI674Q4V4VAPHBIHRXXBTUWKTXT",
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"tx_hash": "B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ",
"type": "payment"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF/operations/0"
},
"transaction": {
"href": "/api/v1/transactions/Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF"
}
},
"block_height": 35604,
"body": {
"target": "GCAP52WC7SJZXPNWCSSBJVD55PE2VBHBPQOW3PAOAJNIEXKYZFPLHTOO",
"amount": "229180000000"
},
"confirmed": "2018-11-29T09:44:25.759358708Z",
"hash": "GWUKgUP99afpYfA18w9VCTNY4PQmbqAULBD3VDheWwFb-Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF",
"index": 0,
"proposed_time": "2018-11-29T09:25:12.950735722Z",
"source": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"target": "GCAP52WC7SJZXPNWCSSBJVD55PE2VBHBPQOW3PAOAJNIEXKYZFPLHTOO",
"tx_hash": "Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF",
"type": "payment"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E/operations/0"
},
"transaction": {
"href": "/api/v1/transactions/3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E"
}
},
"block_height": 35357,
"body": {
"target": "GAFCGKMUQ34ZDD3I2NS2RFBOGIQEUUHREH5WRPCGBSOWYUUJJUEWPRMO",
"amount": "1400000000000",
"linked": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR"
},
"confirmed": "2018-11-29T09:43:55.418548352Z",
"hash": "Ho5aGJURVpj8USEGDgj2GJjcQEYc1JGZdqdAmi9m2Vht-3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E",
"index": 0,
"proposed_time": "2018-11-29T08:59:37.764130154Z",
"source": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"target": "GAFCGKMUQ34ZDD3I2NS2RFBOGIQEUUHREH5WRPCGBSOWYUUJJUEWPRMO",
"tx_hash": "3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E",
"type": "create-account"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8/operations/798"
},
"transaction": {
"href": "/api/v1/transactions/CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8"
}
},
"block_height": 230,
"body": {
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"amount": "1629189227504"
},
"confirmed": "2018-11-27T07:48:10.883635297Z",
"hash": "92fW1T9nVt9WKrr1Y6sDyLfH6SutFGedNCK3hqPzTVDM-CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8",
"index": 798,
"proposed_time": "2018-11-27T07:48:10.817828899Z",
"source": "GAMX6BVPNPWWRGGAUZGT57YG4ZYNI3FO5UHXYSGYBODQVFWIEBWVFDRX",
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"tx_hash": "CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8",
"type": "create-account"
}
]
},
"_links": {
"next": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAABVGBAAAAAAAAAAAyMzc5OGNkYy0wMWZkLTExZTktYjFlYi0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=false"
},
"prev": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAAAADmAAAAAAAAAAFjZDhhYjYzYy1mMjE4LTExZTgtODk0YS0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=true"
},
"self": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAABgnJAAAAAAAAAAA3MDNjNTYxMC0wNDIyLTExZTktYjFlYi0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=true"
}
}
}
```

Call 2 (the faulty response) containing 5 records
``` json
{
"_embedded": {
"records": [
{
"_links": {
"self": {
"href": "/api/v1/transactions/HL52XFujFJa6jDpMVeD5ZkFziGf52qjjtYmknXitpMXb/operations/542"
},
"transaction": {
"href": "/api/v1/transactions/HL52XFujFJa6jDpMVeD5ZkFziGf52qjjtYmknXitpMXb"
}
},
"block_height": 395721,
"body": {
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"amount": "10000000000"
},
"confirmed": "2018-12-20T06:42:33.250196235Z",
"hash": "7t9DEpV2BczwAzVfhNafenAxqV4EL7abkkQLhwE2BDWi-HL52XFujFJa6jDpMVeD5ZkFziGf52qjjtYmknXitpMXb",
"index": 542,
"proposed_time": "2018-12-20T06:42:33.240223454Z",
"source": "GAKHZ2O6CUSYACJEPUIGDXH6I554QLIQV5QOX7EKPFOAVP7KNHUV2OW2",
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"tx_hash": "HL52XFujFJa6jDpMVeD5ZkFziGf52qjjtYmknXitpMXb",
"type": "payment"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ/operations/223"
},
"transaction": {
"href": "/api/v1/transactions/B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ"
}
},
"block_height": 348545,
"body": {
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"amount": "27976564374"
},
"confirmed": "2018-12-17T13:10:33.272188506Z",
"hash": "5nunt3dhp3Fodv9Ppk6nSqcNGJtVJimoji7DaWnz16Nq-B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ",
"index": 223,
"proposed_time": "2018-12-17T13:10:33.265373938Z",
"source": "GCD2K7NFW6IBLSLYX5IZMYVVN2ETASI674Q4V4VAPHBIHRXXBTUWKTXT",
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"tx_hash": "B2LPnAkctZVsrPVazgAn2SuM8WDy84pk1ReEVkopGGkZ",
"type": "payment"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF/operations/0"
},
"transaction": {
"href": "/api/v1/transactions/Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF"
}
},
"block_height": 35604,
"body": {
"target": "GCAP52WC7SJZXPNWCSSBJVD55PE2VBHBPQOW3PAOAJNIEXKYZFPLHTOO",
"amount": "229180000000"
},
"confirmed": "2018-11-29T09:36:57.789949439Z",
"hash": "GWUKgUP99afpYfA18w9VCTNY4PQmbqAULBD3VDheWwFb-Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF",
"index": 0,
"proposed_time": "2018-11-29T09:25:12.950735722Z",
"source": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"target": "GCAP52WC7SJZXPNWCSSBJVD55PE2VBHBPQOW3PAOAJNIEXKYZFPLHTOO",
"tx_hash": "Edaup5W5DK1catNcgFwTwyDFZDiNtq6nuQwmzSdqTXiF",
"type": "payment"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E/operations/0"
},
"transaction": {
"href": "/api/v1/transactions/3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E"
}
},
"block_height": 35357,
"body": {
"target": "GAFCGKMUQ34ZDD3I2NS2RFBOGIQEUUHREH5WRPCGBSOWYUUJJUEWPRMO",
"amount": "1400000000000",
"linked": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR"
},
"confirmed": "2018-11-29T09:36:27.516757818Z",
"hash": "Ho5aGJURVpj8USEGDgj2GJjcQEYc1JGZdqdAmi9m2Vht-3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E",
"index": 0,
"proposed_time": "2018-11-29T08:59:37.764130154Z",
"source": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"target": "GAFCGKMUQ34ZDD3I2NS2RFBOGIQEUUHREH5WRPCGBSOWYUUJJUEWPRMO",
"tx_hash": "3cx4G5L8h6p8eAAbcbtY7SDCmQ8PA6WWbfs9hWG8er7E",
"type": "create-account"
},
{
"_links": {
"self": {
"href": "/api/v1/transactions/CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8/operations/798"
},
"transaction": {
"href": "/api/v1/transactions/CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8"
}
},
"block_height": 230,
"body": {
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"amount": "1629189227504"
},
"confirmed": "2018-11-27T07:48:10.883635297Z",
"hash": "92fW1T9nVt9WKrr1Y6sDyLfH6SutFGedNCK3hqPzTVDM-CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8",
"index": 798,
"proposed_time": "2018-11-27T07:48:10.817828899Z",
"source": "GAMX6BVPNPWWRGGAUZGT57YG4ZYNI3FO5UHXYSGYBODQVFWIEBWVFDRX",
"target": "GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR",
"tx_hash": "CvbUf2gNzJZFsKkkFbwHQsuVv97aKd8jpGTf7iCgjKi8",
"type": "create-account"
}
]
},
"_links": {
"next": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAABgnJAAAAAAAAAAA3MDFmODg4NC0wNDIyLTExZTktOTNlZi0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=false"
},
"prev": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAAAADmAAAAAAAAAAFjZDhhYjYzYy1mMjE4LTExZTgtODk0YS0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=true"
},
"self": {
"href": "/api/v1/accounts/GA7ABBCSLF6OPK6BON43CSVW6H5WMXZEKIJ4372OP3R43EDPTP25IGOR/operations?cursor=JEdBN0FCQkNTTEY2T1BLNkJPTjQzQ1NWVzZINVdNWFpFS0lKNDM3Mk9QM1I0M0VEUFRQMjVJR09SLQAAAAAABgnJAAAAAAAAAAA3MDNjNTYxMC0wNDIyLTExZTktYjFlYi0wMjQyYWMxMjAwMDI%3D&limit=20&reverse=true"
}
}
}
```

Contributor guide

Open the contributing guide

Research direction

Start by repeatedly running the account operations endpoint shown in the issue with the same cursor, limit, and reverse parameters, and compare the returned records. Trace the endpoint's pagination and ordering behavior; done means identical requests consistently return the same records and count.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.