Проблема с разбором комментариев
-
По какой-то причине я не могу разобрать комментарий, который получаю в транзакции. Этот комментарий указывается при отправке монет ton с кошелька на смарт-контракт.
Вот код контракта:
int balance() inline_ref method_id { return get_balance().pair_first(); } (int) load_data() inline { var ds = get_data().begin_parse(); return (ds~load_uint(8)); } int test() method_id { var (test) = load_data(); return test; } () recv_internal (int msg_value, cell in_msg_full, slice in_msg) impure { int op = in_msg~load_uint(32); if (op == 0) { int kek = in_msg~load_uint(8); set_data(begin_cell().store_uint(kek, 8).end_cell()); } }
Когда я вызываю `test' getter, я всегда получаю 0. Я знаю о кодировке unicode, я пытался загрузить другой размер из in_msg.
Что может вызвать проблему?
-
Проблема, кажется, заключается в том, что вы пытаетесь разобрать комментарий транзакции как целое число, но оно не сохраняется как целое число в хранилище данных вашего контракта.
В функции "recv_internal" вы загружаете первые 32 бита среза "in_msg" как целое число и сохраняете его в переменной "op". Затем вы загружаете следующие 8 битов как целое число и сохраняете его в переменной "kek".
Но после этого вы сохраняете значение "kek" в хранилище данных контракта с помощью функции "set_data" и метода "store_uint". Этот метод сохраняет целочисленное значение как ряд байт в ячейке, но он не сохраняет значение таким образом, что его можно легко получить или интерпретировать как целое число позже.
В функции "load_data" вы пытаетесь прочитать зна