TON Дев Чат
message_helpers.func:69:18: error: undefined function `generate_internal_address`, defining a global function of unknown type
slice ssrc = generate_internal_address();
undefined function `invoke_method`
было у кого нибудь такое?
int crc16(slice
s) {...}
int string_hash(slice s) asm "SHA256U";
/ ~/ и ^/?
x{6800.....690C_}
0xC >> 3
LITE_SERVER_UNKNOWN: cannot apply external message to current state : Failed to unpack account stateкто сталкивался с ней?
forall X -> int is_null(X x) asm "ISNULL";
forall X -> int is_int(X x) asm "<{ TRY:<{ 0 PUSHINT ADD DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_cell(X x) asm "<{ TRY:<{ CTOS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_slice(X x) asm "<{ TRY:<{ SBITS DROP -1 PUSHINT }>CATCH<{ 2DROP 0 PUSHINT }> }>CONT 1 1 CALLXARGS";
forall X -> int is_tuple(X x) asm "ISTUPLE";
держи сразу для всех типов
udict
или всё же idict
? Только по типу данных ключа? В func-contest1
в задании с хешмапой давали тип для ключа, в этот раз что-то не дают в func-contest2
. Выходит, что лучше юзать idict
?
CS{Cell{006430718b16c8736f026f0278c8caffc9746f02756f03208201cbe7ed43d8208201fd68ed43d802fe2030fe2030fe2030fe2030} bits: 28..36; refs: 0..0}
получилось это:CS{Cell{00026c} bits: 0..8; refs: 0..0}эти два cell'а равны?
CS{Cell{009fb9b0682383c3bc3a4a2f75c71c7fe20718d03c0000000000000000000000000000002736f026f0278c8caffc9746f02756f03208201cbe7ed43d8208201fd68ed43d802fe2030fe2030fe2030fe20308} bits: 150..274; refs: 0..0}и
CS{Cell{001f00000000000000000000000000000008} bits: 0..124; refs: 0..0}
если на эти посмотреть (я просто вместо числа кучу нулей вставил), то если bits это оффсет, выглядит как правда что они равны
apt install libssl-dev
, причем важно чтобы версия была 1.1.1. Версия 3.0 не подойдет
MessageRelaxed
? В том, что в таких сообщениях мы можем передать message_body?
-v 4
, он покажет трейс исполнения tvm, сравнив со скомпиленным кодом в fif файле как правило уже ясно где упало.
if( (a == b) & (b == c) )
В любом случае будут проверены оба условия и никакой оптимизации в зависимости от выполнения первого не будет?
if (op == 2) { ;; batch deploy of new nfts
int counter = 0;
cell deploy_list = in_msg_body~load_ref();
do {
var (item_index, item, f?) = deploy_list~udict::delete_get_min(64);
} until ( ~ f?);
}
что такое } until ( ~ f?);
?
if (x >= 0 && x <= 10) {...}Не могу в доке найти :(
ResponseAuctionInfo = requests.get("https : / / toncenter.com/api/v2/runGetMethod(91481, force=True)?account={}".format(AuctionAdress))
Кроме меня, конечно ))) Пробелы сам сюда добавил сейчас.
Either | Maybe | Any
err = job.wallet.provider.Send(worker.ctx, &wallet.Message{
Mode: 128,
InternalMessage: &tlb.InternalMessage{
IHRDisabled: true,
Bounce: false,
DstAddr: addr,
Amount: tlb.FromNanoTONU(0),
},
})
?
валидный символ в имени функции или переменной. Т.е. можно иметь переменную с именем x?44_a
(и даже хуже). Обычно функции и переменные с ?
на конце используют для булевых значений.
int key = -1;
do {
(key, slice dic2s, int f) = dict2.udict_get_next?(256, key);
(slice value, int success) = dict1.udict_get?(256, key);
if(~ success){
dict1~udict_set(256, key, dic2s);
dict2.udict_delete?(256, key);
}
} until(f)
return (dict1, dict2);
if and else branches should both return or both not return?
If(...){Нельзя?
if(...){return}
}else{...} return
if () {
return
}
...
Error interpreting file `/tmp/tmp6bgcphy3.fif`: contract_tests.fif:11: PROCINLINE:<{:-?
```
~impure_touch
к переменной. Эта функция говорит компилятору чтобы переменную до этого момента не выбрасывали.
var (_, stack) = invoke_method(gcd, [3 ,9]);
[int result] = stack;
throw_if(101, result != 3);
error: cannot apply function unpair : Forall (A B) [A, B] -> (A, B) to arguments of type tuple: cannot unify type tuple with [??78, ??79]
(cell a, cell b) = stack.unpair();
tuple
который может содержать 2 целла или что-то еще, а есть [cell, cell] тот же кортеж но содержать может только 2 целла(хотя на уровне твм это одно и то же). unpair - функция применимая только ко второму. Компилятор и ругается, что не может применить функцию для [A,B]
к tuple
.load_msg_addr()
addr_none ?if (addr.slice_bits() == 2)
, но мне кажется что можно по другому
error: undefined function `unsafe_tuple`, defining a global function of unknown type
чего подкрутить?
Forall X -> tuple unsafe_tuple(X x) asm "NOP";
decimals - Optional. If not specified, 9 is used by default. UTF8 encoded string with number from 0 to 255. The number of decimals the token uses - e.g. 8, means to divide the token amount by 1 0000 0000 to get its user representation, while 0 means that tokens are indivisible
...number from 0 to 255
", 2 можно)( slice, int, int ) validate ( slice ds ) inline { ... }
( int err, int delta ) = ds~validate( data )
error: cannot implicitly assign an expression of type (slice, int, int) to a variable or pattern of type (slice, ??50)
Что я делаю не так?
( slice, (int, int) ) ~validate ( slice ds ) inline { ... }
( int err, int delta ) = ds~validate( data )
должна работать норм
( slice ds, ( int err, int len ) )
a= b~f()
(b, a) = f(b)
(c,d) = b~f()
под капотом (b,(c,d)) = f(b);
(a,b,c)
это нотация для компилятора, на стеке оно лежит тремся отдельными элементами. А вот [a,b,c]
это кортеж из трех элементов и на стеке будет лежать один tuple
load_uintдаёт исключение 5?
integer out of expected range
load_uint( 32)и данные в слайсе есть. Мб бит знака где-то вылез? Хотя странно
tonweb
JS SDK). Код беру из примера использования SDK, только свой кошелек и API-токен подставляю.const channelInitState = {
balanceA: toNano('0'),
balanceB: toNano('1'),
seqnoA: new BN(0),
seqnoB: new BN(0)
};
const channelConfig = {
channelId: new BN(256),
...
};
const channelB = tonweb.payments.createChannel({
...channelConfig,
isA: false,
myKeyPair: keyPairB,
hisPublicKey: keyPairA.publicKey
});
await channelB
.fromWallet({ ... })
.deploy()
.send(toNano("0.05"));
forall X -> X get_tuple_element(tuple t, int pos) asm "INDEXVARQ";
а вообще tvm.pdf вам в помощь
execute DUP
[ BC{0000} () () ]
execute TLEN
handling exception code 7: not a tuple of valid size
default exception handler, terminating vm with exit code 7
addr_std$10 anycast:(Maybe Anycast) workchain_id:int8 address:bits256 = MsgAddressInt;
{X:Type}
вводится ради body:(Either X ^X)?
_ {X: Type} (Message X) = MessageAny;
toncli get <method> ...
передать cell
? и, если да, то как. метод в качестве аргумента принимает cell
init:(just
, можно как то через pytonlib вытащить эти данные?
TASK 3 - Message validation score is : 100/100
hme_empty$0
", вот и была проверка, если там 1 - то ошибка, в итоге добавил проверку на hme_root$1
и тесты прошли, снова подводные камни в условиях.
1 - 507
2 - 1167
3 - 9001
4 - 5164
5 - 2082
Maybe (Either StateInit ^StateInit)
?