TON Дев Чат
window.ton
(это который TonProvider
). Подскажите плиз.ton.send('ton_sendTransaction', {value: string, to: string, data: string}) - send TON coins.
payload
, собранный из TonWeb.boc.Cell
?
dataType: 'text'
- какие dataType могут быть? Подскажите где почитать плиз.text
boc
, скорее всего это мне поможет from tonsdk.provider import parse_response
seqno = parse_response(client.seqno(wallet.address.to_string())[0])
А дальше при создании запроса на отправку НФТ нужно 0 заменить на seqno: #create NFT transfer query
query = wallet.create_transfer_message(
to_addr="XXX",
amount=to_nano(0.05, "ton"),
seqno=seqno, # в примере тут стоит 0
payload=body
)
tonweb =
new TonWeb();
const Wallet = tonweb.wallet.all.v3R1;
const keypair = tonweb.utils.nacl.sign.keyPair.fromSecretKey(Buffer.from(key));
const wallet =
new Wallet(tonweb.provider, {
publicKey: keypair.publicKey,
wc: 0,
});
const transfer = wallet.methods.transfer({
secretKey: keypair.secretKey,
toAddress:
new tonweb.Address(address),
amount: tonweb.utils.toNano('0.1'),
seqno: 0,
sendMode: 3,
});
await transfer.send();
nacl.sign.keyPair.fromSeed()
или либу tonweb-mnemonic
.
tonweb-mnemonic
и последующего создания ключей через nacl.sign.keyPair.fromSeed()
при попытке деплоя теперь получаю ошибку: LITE_SERVER_UNKNOWN: cannot apply external message to current state : Failed to unpack account state
tonweb.getBalance(address)
tweetnacl
осуществляется генерация ключей.
fromStatic
of that class.
HttpProvider.getTransactions
есть этот параметр, а в TonWeb.getTransactions
- не поддерживается. Запутался.const TonWeb = require("tonweb");
const tonMnemonic = require("tonweb-mnemonic");
const words = ["first_word", "second_word", ...];
const seed = await tonMnemonic.mnemonicToSeed(words);
const keyPair = TonWeb.utils.nacl.sign.keyPair.fromSeed(seed);
const hex_secret_key = TonWeb.utils.bytesToHex(keyPair.secretKey);
const hex_public_key = TonWeb.utils.bytesToHex(keyPair.publicKey);
deployTransaction.send()
const tonweb = new TonWeb();
const WalletClass = tonweb.wallet.all.v4R2;
const wallet = new WalletClass(tonweb.provider, {
publicKey: keyPair.publicKey
});
const deploy = wallet.deploy(keyPair.secretKey);
const deployFee = await deploy.estimateFee();
// убедиться, что на кошельке есть deployFee + 0.002
const deploy_result = await deploy.send();
Fift.fif
: cannot locate file Fift.fif
parseFriendly
рандомной строки просто падают из-за недостатка бит (что логично).
(int) get_counter () method_id {
return get_data().begin_parse().preload_uint(32);
}
в коде тестов:_ empty_tuple () inline asm "NIL";
() __test_1 () {
set_data(begin_cell().store_uint(0, 32).end_cell());
var (_, stack) = invoke_method(get_counter, empty_tuple());
;;[int data] = stack;
}
выдает:execute XCHG s1,s3
handling exception code 2: stack underflow
default exception handler, terminating vm with exit code 2
[ 3][t 0][2022-12-02 09:40:02.1897273][vm.cpp:558] steps: 22 gas: used=2670, max=1000000000, limit=1000000000, credit=0
INFO: Test [__test_1] status: [FAIL], code: [2] Total gas used (including testing code): [2670]
INFO: Test [__test_1] status: [SUCCESS] Test result: [[]] Total gas used (including testing code): [5082]
Final status: [SUCCESS] - 1 cases
Final status: [FAILED] - 0 cases
(int) get_counter () method_id {
return get_data().begin_parse().preload_uint(32);
}
() recv_internal () {
}
() __test_1 () {вот весь код тестов
set_data(begin_cell().store_uint(0, 32).end_cell());
var (_, stack) = invoke_method(get_counter, []);
;;[int data] = stack;
}
task1:
data: fift/data.fif
func:
- func/code.func
tests:
- tests/test1.func
toncli-local run_tests -c task1 -v3
INFO:
🌈 Start tests
INFO:
🥌 Build successfully, check out ./build
Loading private key from file build/contract.pk
INFO:
🤳 Tests: [ [ "__test_1" 18 ] ]
execute SETCP 0
execute DICTPUSHCONST 19 (xC_,1)
<……>
execute 2DROP
execute implicit RET
[ 3][t 0][2022-12-02 09:55:25.625298298][vm.cpp:558] steps: 92 gas: used=5082, max=1000000000, limit=1000000000, credit=0
INFO: Test [__test_1] status: [SUCCESS] Test result: [[]] Total gas used (including testing code): [5082]
Final status: [SUCCESS] - 1 cases
Final status: [FAILED] - 0 cases
testnet
?RuntimeError: No working liteservers with ls_index=None, archival=False
mnemonicToKeyPair
по массиву из 24-х слов и паролю получаю пару ключей (этот кошелек уже существует). Далее создаю кошелек, но при попытке получить его адрес получаю вообще другой адрес. С версией кошелька при создании игрался, адрес конвертирую в человекочитаемый и ничего не помогает. Получаю адрес совершенного другого кошелька. В чем может быть проблема?
const keyPair = await tonMnemonic.mnemonicToKeyPair(mnemonic);
const WalletClass = tonweb.wallet.all['v4R2'];
const wallet = new WalletClass(tonweb.provider, {
publicKey: keyPair.publicKey,
wc: 0
});
const walletAddress = await wallet.getAddress();
console.log('My B address:', walletAddress.toString(true, true, true));
console.log('My NB address:', walletAddress.toString(true, true, false));
await wallet.deploy(keyPair.secretKey).send();
http://localhost/getConsensusBlock
получаю{
"ok": true,
"result": {
"consensus_block": 0,
"timestamp": 0
}
}
kQBdEPCIroWRZfBRJrWo2mAXjCEcefdXZZM_VjJKhcFgjM9X
compute_data_size
из stdlib.fc как-то странно работает?compute_data_size
выдает мне вот такое: (2, 2032, 4). Я так понимаю, что это 2 уровня, 2032 бита данных и 4 ячейки. Хотя я ожидал (2, 5080, 5).() __test_heavy() {И в основном файле
invoke_method(recv_internal, [...]);
~dump("ok");
}
() recv_internal(slice in_msg) {Тест выводит ячейку от "ok", а потом фейлится.
set_data(<огромная ячейка на 30 КБ>);
...
}
automatic commit failed (new data or action cells too deep)
[Deployer] STARTED
[Deployer] Deploying new collection
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "LITE_SERVER_UNKNOWN: cannot apply external message to current state : Failed to get account state".] {
code: 'ERR_UNHANDLED_REJECTION'
}
Есть идеи?
LAST
, only get value;
forall X -> (X) last(tuple t) asm "LAST"
6F8B
- LAST
main.fc
:
tuple tup = empty_tuple();
tup~tpush(0);
tup~tpush(1);
var (int r) = last(tup);
~dump(r); ;; should be 1 there
forall X -> X tlen(tuple t) asm "TLEN";
main.fc
:
var (int r) = tlen(tup);
~dump(r);
kQAiKsspt1ZcULQfISw9P3HIw8vfnNfpTeVhCVqb6GqSP_9X
ERROR:
👻 There is a problem when trying to run get method of contract
ERROR: using liteserver 1 with addr [65.108.204.54:29296]
zerostate set to -1:823F81F306FF02694F935CF5021548E3CE2B86B529812AF6A12148879E95A128:67E20AC184B9E039A62667ACC3F9C00F90F359A76738233379EFA47604980CE8
ERROR:
😢 Error in lite-client execution: /usr/local/bin/lite-client -v 3 --timeout 3 -C /root/.config/toncli/testnet.json -v 0 -c runmethod kQA9gET3CHF1zIbQmFbTrh0WqsMW5nc6oEI59PiETTThK5EK get_total
ERROR:
👻 There is a problem when trying to run get method of contract
ERROR: No output
apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev
{
alphaNftCollectionStats(address: "EQC3dNlesgVD8YbAazcauIrXBPfiVhMMr5YYk2in0Mtsz0Bz") {
floorPrice
totalVolume
}
}
Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени, принятая в Unix и других POSIX-совместимых операционных системах. Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг)
-n ownnet
EQCBau6J2YufKxNflXNvQj6mNB4OfUyCPhhPWFh0UBkIoRpv
Fift.fif
: cannot locate file Fift.fif
Check that correct include path is set by -I or by FIFTPATH environment variable, or disable standard preamble by -n.asm
.