Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escape special characters +-&|!(){}[]^"~*?:\ - e.g. \+ \* \!
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Answered
A problem with parsing the commentaries

For some reason I can't parse commentary that I receive in a transaction. This commentary is specified when sending ton coins from a wallet to a smart contract.

Here is the code of the contract:

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());
    }
}

When I call the testgetter I always get 0. I know about the unicode encoding, I've tried to load different size from in_msg.

What can cause the problem?

Votes Newest

Answers


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

В функции "recv_internal" вы загружаете первые 32 бита среза "in_msg" как целое число и сохраняете его в переменной "op". Затем вы загружаете следующие 8 битов как целое число и сохраняете его в переменной "kek".

Но после этого вы сохраняете значение "kek" в хранилище данных контракта с помощью функции "set_data" и метода "store_uint". Этот метод сохраняет целочисленное значение как ряд байт в ячейке, но он не сохраняет значение таким образом, что его можно легко получить или интерпретировать как целое число позже.

В функции "load_data" вы пытаетесь прочитать зна

  
  
Posted one year ago
Edited one year ago
19K Views
1 Answer
one year ago
one year ago
Tags