TON Дев Чат
const int error::not_authorized = 101;
const int error::seqno_regress = 108;
ton_rawSign
``` кажется очень опасным и хотелось бы его вообще не поддерживать.const session: TonhubSessionAwaited = await connector.awaitSessionReady(sessionId, 5 * 60 * 1000); // 5 min timeout
awaitSessionReady = async (sessionId: string, timeout: number, lastUpdated?: number): Promise<TonhubSessionAwaited> => {
let expires = Date.now() + timeout;
let res: TonhubSessionStateReady | TonhubSessionStateExpired | TonhubSessionStateRevoked = await backoff(async () => {
while (Date.now() < expires) {
let existing = await this.waitForSessionState(sessionId, lastUpdated);
if (existing.state !== 'initing') {
if (existing.state === 'ready') {
return existing;
} else if (existing.state === 'revoked') {
return existing;
}
}
await delay(1000);
}
return { state: 'expired' };
});
return res;
}
const session: TonhubSessionAwaited = await connector.awaitSessionReady(sessionId, 5 * 60 * 1000); // 5 min timeout
if (session.state === 'revoked' || session.state === 'expired') {
// Handle revoked or expired session
} else if (session.state === 'ready') {
./node_modules/tonweb/src/contract/payments/PaymentChannel.js 91:60
Module parse failed: Unexpected token (91:60)
File was processed with these loaders:
* ./node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
|
| const closingConfig = new Cell();
> closingConfig.bits.writeUint(this.options.closingConfig?.quarantineDuration || 0, 32); // quarantin_duration
|
| closingConfig.bits.writeCoins(this.options.closingConfig?.misbehaviorFine || new BN(0)); // misbehavior_fine
this.options.closingConfig
?.
misbehaviorFine.
А именно на "?." Чем собираешь? Webpack?
tonweb.wallet.create({ publicKey: keyPair.publicKey });
async def send_money_async(to_address, amount, message):Поскольку функция асинхронная, в коде вызываю её так:
try:
client = TonlibClient()
await client.init_tonlib(cdll_path = cdll_folder + "tonlibjson.amd64.dll")
wallet = await client.import_wallet(seed)
await wallet.transfer(to_address, amount_nano, comment=message)
loop1 = asyncio.new_event_loop()Но проблема в том, что каждое нажатие кнопки в боте вызывает создание новой задачи в loop, и они так и висят в памяти, несмотря на то, что принудительно в цикле делаю cancel.
asyncio.set_event_loop(loop1)
loop1.run_until_complete(send_money_async(to_address, amount, message))
for task in asyncio.all_tasks(loop=loop1):
if not task.cancelled() and not task.done():
task.cancel()
loop1.stop()
2022-07-05 21:23:55,799 | asyncio | ERROR | Task was destroyed but it is pending!Кто может подсказать, как сделать, чтобы после совершения платежа задачи закрывались и не множились после каждого нажатия кнопки?
task: <Task pending name='Task-11' coro=<TonLib.read_results() done, defined at ...tonlibjson.py:108> wait_for=<Future pending cb=[Task.task_wakeup()]>>
2022-07-05 21:23:55,799 | asyncio | ERROR | Task was destroyed but it is pending!
task: <Task pending name='Task-12' coro=<TonLib.del_expired_futures() done, defined at ....tonlibjson.py:134> wait_for=<Future pending cb=[Task.task_wakeup()]>>
2022-07-05 21:23:55,801 | asyncio | ERROR | Task was destroyed but it is pending!
asyncio.run(send_money_async(to_address, amount, message))
EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N
smc.runGetMethod id:int53 method:smc.MethodId stack:vector<tvm.StackEntry> = smc.RunResult;Никакого способа передать BlockId нет и выглядит так, что это не специфично для JNI-либы, а особенности tonlib в целом.
for {
w, err := wallet.FromSeed(api, wallet.NewSeed(), wallet.
V3)
if err != nil {
log.Fatalln("FromPrivateKey err:", err.Error())
return
}
if strings.HasSuffix(w.Address().String(), "lp85d") {
println("FOUND", w.Address().String())
}
}
[ 0][t 1][2022-07-06 12:31:25.760624378][ActorExecutor.cpp:228][!Tonlib] Check `Unreachable` failedlibtonlibjson.aarch64.so
Aborted
/python/nft_auction_bot/lib/libtonlibjson.aarch64.so: cannot open shared object file: No such file or directory
Exception ignored in: <function TonLib.__del__ at 0x7f4038d4a310>
Traceback (most recent call last):
File "/python/nft_auction_bot/venv_nft_auction_bot/lib/python3.9/site-packages/ton/tonlibjson.py", line 61, in __del__
asyncio.ensure_future(self.restart_hook(), loop=self.loop)
AttributeError: 'TonLib' object has no attribute 'restart_hook'
Убил кучу времени, но не понимаю, как это добро запустить (((
pip install -U ./ton-http-api/
из корня репо
cannot apply external message to current state : Failed to unpack account state
/getTransactions?address=EQA8784-qz3WrVYVo6YpjNxvMBu1UfBn3pmdFvfYnDRUEOk0&limit=10<=26722131000001&hash=B352D2E03F537F09AAB7FF1758DA9EB89675B7F1ACD928919E18E62FEEA5C351&archival=trueвот
bc6cc93fa1e9b179ff0d4e4cf17c4dad8bba1320a177b407b21b449462069bf9
X - fee
, то транзакция "отскочит" и сожрет fee
. Хотелось бы заранее прикинуть fee
, чтобы знать, насколько можно разгуляться при трансфере 🙂
{тоже своего же ЛК. ЛК и апи находятся на одном сервере, почему он ловит таймауты? И как этого избежать?
"ok": false,
"error": "Liteserver timeout",
"code": 504
}
"ip": -1307380867
4DED0C83
{
"address": "EQB9W1-EPtPW0Q1rVVwoW4nm_lu-ePwaoQ2kcx3pZSfimLAC",
"method": "get_nft_data",
"stack": []
}
{
"ok": true,
"result": {
"@type": "smc.runResult",
"gas_used": 570,
"stack": [
[
"num",
"0x18fcf"
]
],
"exit_code": 11,
"@extra": "1657309290.9109347:3:0.7861520002386836"
}
}
nft sale
git submodule update --init
, выдаёт fatal: not a git repository (or any of the parent directories): .git
Что делать, в чём проблема?
git submodule update --init
fatal: could not get a repository handle for submodule 'third-party/rocksdb'
smc.runResult
?'object': {'data': {'b64': 'gB4JsG02ap1zQz404sXQ7Z7ZBGvLlL7xYU3g5WuuoX0tIA==', 'len': 267}
smc.runResult
?'object': {'data': {'b64': 'gB4JsG02ap1zQz404sXQ7Z7ZBGvLlL7xYU3g5WuuoX0tIA==', 'len': 267}Но у меня ни один онлайн декодер не деколдирует base64 из этого в что-то читаемое
addr_std$10 anycast:(Maybe Anycast) workchain_id:int8 address:bits256 = MsgAddressInt;
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejectКто знает, с чем связана ошибка 33. Делаю payments-channel ровно по примеру https://github.com/toncenter/tonweb/blob/master/src/test-payments.js
ing a promise which was not handled with .catch(). The promise rejected with the reason "LITE_SERVER_UNKNOWN: cannot apply external
message to current state : External message was not accepted
Cannot run message on account: inbound external message rejected by transaction 8FD4AD85F9C40DB9227D9E19454F366AAC0CC5F907401B4AC5F3
82CBEFDA18B8:
exitcode=33, steps=23, gas_used=0
VM Log (truncated):
...te NOW
execute LEQ
execute THROWIF 36
execute PUSH c4
execute CTOS
execute LDU 32
execute LDU 32
execute LDU 256
execute LDDICT
execute ENDS
execute XCPU s4,s3
execute EQUAL
execute THROWIFNOT 33
default exception handler, terminating vm with exit code 33
".] {
code: 'ERR_UNHANDLED_REJECTION'
}
sudo toncli deploy -n testnet
```