TON Дев Чат
recv_external
и recv_internal
модификатор impure
на что-либо влияет?impure
:() recv_external(slice in_msg) impure {
recv_external
и recv_internal
?
() recv_external (slice in_msg_body) {
() recv_internal(int balance, int msg_value, cell in_msg_full, slice in_msg_body) {
() recv_internal (int balance, int msg_value, cell in_msg_full, slice in_msg_body) {
() recv_internal (int balance, int msg_value, cell in_msg_full, slice in_msg_body) {
impure
:() recv_internal(slice in_msg) impure {
[ 1][t 0][2022-04-10 19:32:26.4653330][Fift.cpp:67] top: untuple
level 1: [in get-test:] <literal of type 11> @ <literal of type 11> @ untuple **HERE** <literal of type 11> @ 1 - dup 0> { <continuation 000001A5E5D83F30> } { <continuation 000001A5E5D83E40> } cond <literal of type 11> @ <literal of type 11> @ untuple <literal of type 11> @ ...
level 2: drop <literal of type 11> @ <literal of type 11> @ get-test **HERE** run-test <literal of type 11> @ swap <literal of type 11> ! swap <literal of type 11> !
level 3: <while loop condition:> { dup 0> }
level 4: <text interpreter continuation>
[ 1][t 0][2022-04-10 19:32:26.4655432][fift-main.cpp:204] Error interpreting file `C:\Users\nns20\AppData\Local\Temp\tmp7cwyork2.fif`: tmp7cwyork2.fif:195: while:tuple size mismatch
message$_ {X:Type} info:CommonMsgInfo
init:(Maybe (Either StateInit ^StateInit))
body:(Either X ^X) = Message X;
_ split_depth:(Maybe (## 5)) special:(Maybe TickTock)4) А где тут подпись, которая бы подтверждала, что все эти данные действительно идут от владельца приватного ключа?
code:(Maybe ^Cell) data:(Maybe ^Cell)
library:(Maybe ^Cell) = StateInit;
split_depth
и special
?code
- это те зашитые в tonweb, boc-строки скомпилированных контрактов?data
- обычное хранилище контракта? Без дополнительных премудростей и мета-полей?
hash(stateInit) == address
?
not accepted
? Error : 0 : cannot apply external message to current state : External message was not accepted
"TonUtil.fif" include
"Asm.fif" include
"build/contract" =: file-base
file-base +".addr"
load-address
2dup 2constant contract_addr
<b
1 32 u,
b> =: body
<b
b{1000100} s, // wtf?
contract_addr addr,
0 Gram,
b{00} s,
body <s s,
b>
2 boc+>B
saveboc
toncli sendboc fift/data_external_msg.fif
ext_in_msg_info$10 src:MsgAddressExt dest:MsgAddressInt
import_fee:Grams = CommonMsgInfo;
ext_out_msg_info$11 src:MsgAddressInt dest:MsgAddressExt
created_lt:uint64 created_at:uint32 = CommonMsgInfo;
Log messages, or messages to nowhere.
` out - это вот эти логи я так понимаю?
Client got error [PosixError : Connection refused : 111 : Error on [fd:5]]
https://newton-blockchain.github.io/testnet-global.config.json
из доки не актуальный или чо.
toncli lc --net testnet
завершает процесс через полсекунды/секунду. Если успеваю last написать, то реагирует)
Get methods are executed by a stand-alone instance of TVM with the account’s code and data loaded into it.
freeze_due_limit:100000000 delete_due_limit:1000000000
toncli deploy
и готово.INFO: 🧐 Output: [ [ 97881 ]Бгг, или нельзя методом чекать >_<
external_data
проект из toncli, там ок всё =/
options.code = Cell.oneFromBoc("B5EE9C724101010100710000DEFF0020DD2082014C97BA218201339CBAB19F71B0ED44D0D31FD31F31D70BFFE304E0A4F2608308D71820D31FD31FD31FF82313BBF263ED44D0D31FD31FD3FFD15132BAF2A15144BAF2A204F901541055F910F2A3F8009320D74A96D307D402FB00E8D101A4C8CB1FCB1FCBFFC9ED5410BD6DAD");
initState.bits.writeBit(true); // code: (Maybe ^Cell)
initState.refs.push(code);
initState.bits.writeBit(true); // data: (Maybe ^Cell)
initState.refs.push(code);
Your tentative result is 5 tasks
toncli run_tests -c contest-5 -o
вылетает с такой ошибкой
prerare_storage_result
ton-compile-source
из репозитория ton-k8s
, там используется python 3.7, а для toncli нужен минимум 3.8, поэтому создал второй докер и просто скопировал из первого скомпилированные файлы.
FROM python:3.8
WORKDIR /var
RUN git clone https://github.com/disintar/toncli.git
RUN cd toncli && pip install -e .
RUN mkdir /var/contest1
WORKDIR /var/contest1
RUN git clone --recursive https://github.com/ton-blockchain/func-contest1-tests.git
WORKDIR /var/contest1/func-contest1-tests
COPY funct-contest1.tar /var/contest1/func-contest1-tests/submitions
COPY --from=ton-base-testnet /usr/local/bin/lite-client /usr/bin/
COPY --from=ton-base-testnet /usr/local/bin/fift /usr/bin/
COPY --from=ton-base-testnet /usr/local/bin/func /usr/bin/
RUN mkdir /usr/lib/fift
ENV FIFTPATH /usr/lib/fift
COPY --from=ton-base-testnet /usr/local/lib/fift/* /usr/lib/lift/
mass_second_sign_10_77
if (now() - ctx_last_attempt > 60) {
ctx_cnt_attempts = 0;
}
ctx_cnt_attempts += 1;
throw_if(63, ctx_cnt_attempts > 10);
ctx_last_attempt = now();
[mass_first_sign_1] #DEBUG#: s0 = 945
[mass_first_sign_2] #DEBUG#: s0 = 945
[mass_first_sign_3] #DEBUG#: s0 = 945
[mass_second_sign_4] #DEBUG#: s0 = 948
[mass_second_sign_5] #DEBUG#: s0 = 948
[mass_second_sign_6] #DEBUG#: s0 = 948
[mass_second_sign_7_251] #DEBUG#: s0 = 951
[mass_second_sign_8_251] #DEBUG#: s0 = 951
[mass_second_sign_9_77] #DEBUG#: s0 = 1000
[mass_first_cosign_9_77] #DEBUG#: s0 = 1000
[mass_second_sign_10_77] #DEBUG#: s0 = 1000
[mass_second_sign_11_77] #DEBUG#: s0 = 1011
[mass_second_sign_12_77] #DEBUG#: s0 = 1011
[mass_second_sign_13_77] #DEBUG#: s0 = 1011
[mass_second_sign_14_77] #DEBUG#: s0 = 1011
[mass_second_sign_15_77] #DEBUG#: s0 = 1011
[mass_second_sign_16_251] #DEBUG#: s0 = 1011
Task 5: submitted True, accepted True, score: 5.43
throw_if
чуть похуже:Task 5: submitted True, accepted True, score: 5.41
😃
{
"ok": false,
"error": "render_tvm_element() missing 2 required positional arguments: 'element_type' and 'element'",
"code": 503
}
() op_controller_withdraw_unowned(int value, slice in_msg) impure {
...
;; Send message to controller
send_empty_std_message(
ctx_controller,
0,
send_mode::carry_remaining_balance(),
op::withdraw_unowned::response(),
ctx_query_id
);
}
{ '@type': 'ok', '@extra': '1649937563.9380102:0:0.5591557017312829' }
, что за цифры?
(отправляющая транзакция) => (сообщение) => (получающая траназкция)
без собственного индексирования всего блокчейна
(сообщение) => (получающая траназкция)
без индекса, к сожалению не сделать (ну или эвристиками, зная примерное lt и адрес назначения)
(получающая траназкция) => (сообщение) => (отправляющая транзакция)
absent
в boc нужен? В исходниках тона там просто захардкожено 0
всегда
result: {
gas_used: 0,
stack: [ [ 'num', '0x17b02' ] ],
exit_code: -13,
'@extra': '1649947699.91854:5:0.706219289033982'
}
tonweb.wallet.create({publicKey})
` - та же ошибка.tonweb.wallet.create({publicKey})
new JettonWallet(tonweb.provider, {
address: JETTON_WALLET_ADDRESS
});
calculate_user_jetton_wallet_address
slice get_wallet_address(slice owner_address)
get_wallet_address(slice owner_address)
- этот метод не имплиментирован
{"address":"...","method":"get_wallet_address","stack":[["tvm.Slice","..."]]}точно не работает?
curl -X 'POST' \
'https://testnet.toncenter.com/api/v2/runGetMethod' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"address": "EQAqp9nCXMxmoHc_XCn-KhisLN2G5gHLAYL08UdKJM2TNaFf",
"method": "get_wallet_address",
"stack": [
[
"tvm.Slice", "EQBvI0aFLnw2QbZgjMPCLRdtRHxhUyinQudg6sdiohIwg5jL"
]
]
}'
curl -X 'POST' \Ответ ожидаемый невалидный, т.е. такой, как писали выше:
'https://testnet.toncenter.com/api/v2/runGetMethod' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"address": "EQAhIf-c3jZUHQeGfvzg4RckLOydYaGDBxIGsyMn41rgl9Cu",
"method": "get_wallet_address",
"stack": [
[
"tvm.Slice", "EQBXo0ZZj6xqKUPkDsEK4PKcv22Fo77LnMq7XbMqxzHjOZNb"
]
]
}'
{"ok":true,"result":{"@type":"error","code":0,"message":"cannot deserialize bag-of-cells: invalid header, error 0","@extra":"1650008588.2969987:4:0.07631449416469416"}}