Уровень обязательств

Я написал базовый клиент rpc, который опрашивает состояние учетной записи Solana для поиска определенного условия (т. е. записываемого в нее уникального идентификатора int64). Когда возникает условие, я вызываю смарт-контракт, который принимает ту же учетную запись, что и изменяемый аргумент.

Прежде чем что-либо делать, программа проверяет это же условие. Однако эта проверка не проходит. Я понимаю, что мы имеем дело с распределенной системой, и это состояние может быть непоследовательным в течение определенного периода времени, но я могу повторно вызывать более 30 секунд, и каждый раз это терпит неудачу, прежде чем в конечном итоге добиться успеха.

Я читал о концепции уровней обязательств, но всегда предполагал, что состояние учетной записи, переданное в смарт-контракт, будет последним состоянием мира (т.е. обработано)? То, что я, кажется, наблюдаю, это больше похоже на завершенное состояние.

Может ли кто-нибудь пролить свет на то, что здесь может происходить?

Я попытаюсь придумать минимальный пример кода, чтобы продемонстрировать проблему, но я просто хотел сначала задать вопрос, чтобы посмотреть, может ли кто-нибудь указать мне правильное направление.

Спасибо

2 ответа

Итак, если вы посмотрите на документы, которые вы связали, есть примечание:

the block may still be skipped by the cluster

Это очень важное примечание, если вы ищете только изменения состояния учетной записи и не хотите, чтобы некоторые из них могли быть ложными. Существует ряд причин, по которым слот может быть пропущен или транзакция может быть отклонена кластером.

Если произойдет что-либо из вышеперечисленного, то состояние аккаунта, которое принимается кластером в целом, может не отражаться в processed, но finalized.

В конце концов, моя конкретная проблема сводилась к предполетным проверкам с использованием «завершенного» уровня обязательства, когда моя логика для опроса учетной записи использовала «подтвержденный». Изменение preflightCommitmentаргумент на sendTransactionисправил проблему для меня.

Другие вопросы по тегам