Coder Social home page Coder Social logo

disintar / toncli Goto Github PK

View Code? Open in Web Editor NEW
155.0 9.0 35.0 796 KB

TON Command Line Interface - easy smart contract manipulation

Home Page: https://disintar.io/

License: Apache License 2.0

Python 100.00%
blockchain ton cryptocurrency fift func disintar dton

toncli's People

Contributors

2ico avatar acadabus avatar aleksej-paschenko avatar aminrezaei0x443 avatar bminaiev avatar bormor avatar devonbernard avatar elderorb avatar emelyanenkok avatar expectfun avatar hiyorimi avatar hotid avatar isopen avatar miroslav-tashonov avatar programcrafter avatar qpwedev avatar stspbu avatar trinketer22 avatar tvorogme avatar xabbl4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

toncli's Issues

Error interpreting standard preamble file `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.

PS D:\demo\TonDemo-next\wallet> toncli run fift/data.f
[ 1][t 0][2022-05-21 01:31:21.4298882][fift-main.cpp:180] Error interpreting standard preamble file 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.

Improve `run_transaction` method.

  • Support all types of messages (empty body, body with comment, so on)
  • Auto-function selection
  • Gas calculation
  • New / prev state status (example set_code inited)
  • Display outgoing messages (print c5 user-friendly)
  • Add flags for debugging (stack trace, so on)

Add `func build` absolute path support

Steps to reproduce:

mkdir -p ~/work/toncli-test/
touch ~/work/toncli-test/test.fc
cd ~/work/toncli-test/
toncli func build ~/work/toncli-test/test.fc

Expected behavior:

INFO: ๐ŸฅŒ Build ['/home/user/work/toncli-test/test.fc'] successfully, check out .test.fif

What we got now:

fatal: cannot open source file /home/user/work/toncli-test/home/user/work/toncli-test/test.fc
Traceback [bla-bla-bla]

Toncli tests success on out-of-gas

Bug Type

Functional

Reproduction steps

Code example https://gist.github.com/Trinketer22/b511a8f7c3820a3b01e15b4b634224d6

thanks to @Trinketer22

Actual result

INFO: Test [__test_gas_limit] status: [SUCCESS] Test result: [[ 4949 ]] Total gas used (including testing code): [4949]

Expected result

Test status fail

Suggested Severity

Critical

Device

(base) tvorogme in ~/projects/nft_ultimate_sale on master โ— โ— โ— ฮป toncli --version
INFO: v0.0.43

Additional Context

No response

Unable to use toncli in directories containing Unicode characters in names

Bug Type

Functional

Reproduction steps

  1. Put some wallet contract directory inside directory with Unicode (for example, Russian) characters in name
  2. Try to use toncli run_tests

Actual result

INFO: Start tests
unknown-location: error: Wrong encoding

Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Program Files\Python39\Scripts\toncli.exe\__main__.py", line 7, in <module>
  File "C:\Program Files\Python39\lib\site-packages\toncli\main.py", line 65, in main
    CommandsExecuter(command, string_kwargs, parser)
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 39, in __init__
    self.command_mapper[command](self)
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 49, in run_tests_command
    return RunTestsCommand(self.string_kwargs, self.parser)
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\command_classes\run_tests_command.py", line 12, in __init__
    test_runner.run(args.contracts.split() if args.contracts else None,
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\tests.py", line 44, in run
    build_test(getcwd(), contracts=real_contracts, cwd=getcwd(), compile_tests_with_contract=not run_tests_old_way)
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 56, in build_test
    build_test_files([*func_and_test_files, *contract.func_files_locations, *contract.func_tests_files_locations],
  File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 87, in build_test_files
    get_output = check_output(build_command,
  File "C:\Program Files\Python39\lib\subprocess.py", line 420, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:\Program Files\Python39\lib\subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['...\\ton-win64-binaries\\func.exe', '-o', '...ั‚ะตัั‚_ั€ัƒััะบะธะน\\wallet\\build\\contract_tests.fif', '-SPA', '...\\toncli\\func-libs\\error_codes.func', '...\\toncli\\func-libs\\math.func', '...\\toncli\\func-libs\\stdlib.func', '...\\toncli\\test-libs\\1.address_helpers.func', '...\\toncli\\test-libs\\bad_messages_generator.func', '...\\toncli\\test-libs\\c5_parse_helpers.func', '...\\toncli\\test-libs\\message_helpers.func', '...\\toncli\\test-libs\\storage-test-helpers.func', '...\\toncli\\test-libs\\tests-helpers.func', '...\\toncli\\test-libs\\token-helpers.func', '...ั‚ะตัั‚_ั€ัƒััะบะธะน\\wallet\\func\\Untitled-1.fc', '...ั‚ะตัั‚_ั€ัƒััะบะธะน\\wallet\\tests\\tests.fc']' returned non-zero exit status 2.

Expected result

Compilation successful

Suggested Severity

Medium

Device

Desktop:

  • OS: Windows 10
  • toncli -v: INFO: v0.0.43
  • Hash of ton-win64-binaries without libcrypto (7-Zip, SHA256):
    • 2B90BB7F64269494EFC17069C9115399E3AF6A8BF77456FE137FA752DDD31806 - data hash
    • 4432D55FDBFE2B67CE051745779FB9BE050C986A33C007934533A989371BAA11 - data and names hash

Additional Context

No response

toncli deploy -n testnet -wc 0 Error

PS D:\demo\TonDemo-next\wallet> toncli deploy -n testnet -wc 0
INFO: ๐Ÿš€ You want to interact with your contracts ['contract'] in testnet - that's great!
Traceback (most recent call last):
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\Scripts\toncli.exe_main
.py", line 7, in
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\main.py", line 60, in main
CommandsExecuter(command, string_kwargs, parser)
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 40, in init
self.command_mappercommand
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 71, in deploy_command
return DeployCommand(self.string_kwargs, self.parser)
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\utils\commands\command_classes\deploy_command.py", line 12, in init
deployer = ContractDeployer(network=args.net, update_config=args.update,
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\deploy_contract.py", line 43, in init
self.deploy_contract = DeployWalletContract(network, workchain)
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\deploy_wallet_contract.py", line 68, in init
self.addresses = self.get_address()
File "C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\Programs\Python\Python310\lib\site-packages\toncli\modules\abstract\deployer.py", line 126, in get_address
raise ValueError(f"๐Ÿ˜ฅ No address_text found in {contract.address}")
ValueError: ๐Ÿ˜ฅ No address_text found in C:\Users\่ฎก็ฎ—ๆœบ\AppData\Local\toncli\toncli\wallet/build/contract_address

Can't deploy simple smart contract

Hi i am trying to complete this tutorial:
https://github.com/romanovichim/TonFunClessons_ru/blob/main/1lesson/firstlesson.md
I've run into a problem that I can't complete it for some reason
I asked the author:
romanovichim/TonFunClessons_ru#1
he could not help in any way, he advised me to contact you

in addition, I can say that my computer had a problem with myLocalTON
this was due to the fact that AVX2 instructions are not supported on my processor, and it was successfully fixed:
neodix42/MyLocalTon@2229004

I will duplicate here what the console outputs to me:

INFO: ๐Ÿ‘ป Your smart contract project [โ†[32mD:\PyCharm\ton_lesson1\walletโ†[0m] is now going to be โ†[32mdeployedโ†[0m, get ready!
INFO: ๐ŸŒˆ Start building:
INFO: ๐ŸŒฒ Func compiled
INFO: ๐Ÿค— Run tests on โ†[36m['D:\\PyCharm\\ton_lesson1\\wallet\\fift\\data.fif']โ†[0m
[ 1][t 0][2022-05-10 14:35:31.9943753][fift-main.cpp:180]       Error interpreting standard preamble file `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.
INFO: ๐ŸŒฒ Tests passed
INFO: ๐Ÿฅณ Start contract manipulation
[ 1][t 0][2022-05-10 14:35:32.0719421][fift-main.cpp:180]       Error interpreting standard preamble file `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.
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\PyCharm\ton_lesson1\venv\Scripts\toncli.exe\__main__.py", line 7, in <module>
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\main.py", line 60, in main
    CommandsExecuter(command, string_kwargs, parser)
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 40, in __init__
    self.command_mapper[command](self)
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 71, in deploy_command
    return DeployCommand(self.string_kwargs, self.parser)
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\utils\commands\command_classes\deploy_command.py", line 17, in __init__
    deployer.publish(real_args[2:])
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\deploy_contract.py", line 86, in publish
    self.build(real_contracts)
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\abstract\deployer.py", line 107, in build
    data.append(contract_manipulation(os.path.abspath(contract.to_save_location),
  File "d:\pycharm\ton_lesson1\venv\lib\site-packages\toncli\modules\utils\fift\commands.py", line 94, in contract_manipulation
    output = subprocess.check_output(command, cwd=getcwd() if not cwd else cwd)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['D:\\PyCharm\\toncli\\ton-win64-binaries\\fift.exe', '-I', 'C:\\Users\\user\\AppData\\Local\\toncli\\toncli\\fift-libs', '-s', 'C:\\Users\\user\\AppData\\Local\\Temp\\tmpsdh86lw6.boc', '']' returned non-zero exit status 2.

If it is not hard for you, will glad for help

When running tests with recent ton tools and tonclin of branch main: `contract_tests.fif ... PROC:<{:procedure already defined`

With previous versions of ton and toncli 0.0.38 I could run without issue tests like:

https://gitlab.com/pasosdeJesus/pruebas_mdc_func

With the current version of ton and toncli from branch main of repository, running that test produces:

toncli run_tests                                                                                                                                         [2/253]
INFO: ๐ŸŒˆ Start tests                                                                                                                                            
INFO: ๐ŸฅŒ Build successfully, check out ./build
[ 1][t 0][2022-09-09 19:51:58.855893][Fift.cpp:67]      top: abort
level 1: swap { <continuation 0x43a3ebce500> } if **HERE** drop 
level 2: [in @PROC:<{:] over @fail-ifdef **HERE** 2 { <continuation 0x43a540e4b00> } does null swap @doafter<{ 0 32 u, 
level 3: <text interpreter continuation> 
level 4: <continuation 0x43a540b32c0>
level 5: <text interpreter continuation> 
[ 1][t 0][2022-09-09 19:51:58.855985][fift-main.cpp:204]        Error interpreting file `/tmp/tmpezl103ve.fif`: contract_tests.fif:1508:        PROC:<{:procedur
e already defined                       

Error with toncli send --mode 64

I got a type error when I try to send a simple message with --mode specified. Without the mode flag the command works fine.

toncli send -a 0.1 --mode 64 --net testnet

Logs:

INFO: ๐Ÿš€ You want to interact with your contracts ['contract'] in testnet - that's great!
INFO: ๐Ÿฆ˜ Found existing deploy-wallet [address] (Balance: 1.390550483๐Ÿ’Ž, Is inited: True) in /Users/user/Library/Application Support/toncli
INFO: ๐Ÿค” You want to send internal message to [contract] from deploy-wallet with amount [0.1]
INFO: ๐Ÿฐ Getting seqno for transaction
Traceback (most recent call last):
  File "/opt/homebrew/bin/toncli", line 8, in <module>
    sys.exit(main())
  File "/opt/homebrew/lib/python3.9/site-packages/toncli/main.py", line 60, in main
    CommandsExecuter(command, string_kwargs, parser)
  File "/opt/homebrew/lib/python3.9/site-packages/toncli/modules/utils/commands/commands_executer.py", line 40, in __init__
    self.command_mapper[command](self)
  File "/opt/homebrew/lib/python3.9/site-packages/toncli/modules/utils/commands/commands_executer.py", line 56, in send_command
    return SendCommand(self.string_kwargs, self.parser)
  File "/opt/homebrew/lib/python3.9/site-packages/toncli/modules/utils/commands/command_classes/send_command.py", line 25, in __init__
    deployer.send([], args)
  File "/opt/homebrew/lib/python3.9/site-packages/toncli/modules/abstract/deployer.py", line 267, in send
    logger.info(f"Run command: {' '.join(args)}")
TypeError: sequence item 7: expected str instance, int found

My toncli version is 0.0.37

How to use new tests? What is the current situation over TON binaries?

You can be confused by installation process of toncli. We do our best to soften the corners.

Current situation is: for latest master version (it's not in PyPi right now) you need to install binary from toncli-local branch of SpyCheese repo. Pre-builds can be founded here

Is it safe?

Yes, @SpyCheese is active TON contributor. The toncli-local branch contains new TVM OP codes, and it's up-to-date with master branch.

New TVM OP present:

GASLIMITSTEMP
PRIVTOPUB
SIGN
RESETLOADEDCELLS

Why this is needed?

Those TVM OP needed for new toncli tests. Unlike the old version where you need to run TVM instant on each test - now you run only on TVM instant and run all tests inside it. This is a really cool improvement and the process now is smoother. The realization and idea is @BorysMinaiev (thanks for that).

Why we can't merge it to ton-blockchain/ton master branch?

According to @EmelyanenkoK - those TVM OP are used only for debug and tests, so it's better to have "developer" version of TVM and "production" version of TVM. You should keep in mind that these four TVM OP cannot be used in production.

How to simplify proccess?

Special thanks to @Trinketer22 we have a docker - you can create bash script which mount project to docker and there already binaries.

Also Disintar-related dev @tonthemoon (supported by TF) is creating auto-build version of TON source-code. I guess we will create one-line script of install toncli on any major system with auto-downloading binaries from package managers.

toncli run func/code.func Error

PS D:\demo\TonDemo-next\wallet> toncli run func/code.func
[ 1][t 0][2022-05-21 01:55:43.5564072][fift-main.cpp:180] Error interpreting standard preamble file 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.

Test libs import order

Need to fix tests libs import order. Currently it's not working correctly, so you need to rename files, because they sorted by python.

/home/tvorogme/.config/toncli/test-libs/message_helpers.func:404:18: error: undefined function `generate_empty_address`, defining a global function of unknown type
      slice ssrc = generate_empty_address();
                   ^
/home/tvorogme/.config/toncli/test-libs/message_helpers.func:87:39: error: undefined function `generate_internal_address`, defining a global function of unknown type
      slice ssrc  = null?( src_addr ) ? generate_internal_address() : src_addr;
                                        ^
/home/tvorogme/.config/toncli/test-libs/message_helpers.func:320:18: error: undefined function `generate_any_address`, defining a global function of unknown type
      slice ssrc = generate_any_address(typeOfAnyAddress);
                   ^
/home/tvorogme/.config/toncli/test-libs/message_helpers.func:366:18: error: undefined function `generate_external_address`, defining a global function of unknown type
      slice ssrc = generate_external_address(256);
                   ^
/home/tvorogme/.config/toncli/test-libs/message_helpers.func:404:18: error: undefined function `generate_empty_address`, defining a global function of unknown type
      slice ssrc = generate_empty_address();

toncli run_tests -> "Stack underflow. Last op-code consume more elements ..."

Bug Type

Functional

Reproduction steps

project.yaml

contract:
  func:
    - code.func
  tests:
    - test.func

code.func

() recv_internal (slice in_msg_body) {
}

int sum(int a, int b) {
    return a + b;
}

test.func

_ __test_sum() {
    var (_, stack) = invoke_method(sum, [1, 2]);
    [int data] = stack;
    throw_if(200, data != 3);
}
% toncli run_tests 
INFO: ๐ŸŒˆ Start tests
INFO: ๐ŸฅŒ Build successfully, check out ./build
[ 3][t 0][2022-12-09 11:49:01.925083][vm.cpp:558]	steps: 28 gas: used=2443, max=1000000000, limit=1000000000, credit=0
INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]

Final status: [SUCCESS] - 0 cases
Final status: [FAILED] - 1 cases

Actual result

INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]

Expected result

INFO: Test [__test_sum] status: [SUCCESS]

Suggested Severity

Low

Device

mac m1

toncli --version
INFO: v0.0.43

% ./func -V
FunC semantic version: v0.2.0
Build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]

./fift -V
Fift build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]

Additional Context

Attach build/contract_tests.fif
contract_tests.fif.txt

FIFT parameters are read as TONCLI parameters

.fif files can be configured via positional parameters + nominal parameters. Positional parameters work well.
Nominal parameters of FIFT dont work in toncli. Looking at the output, toncli thinks they're part of toncli nominal parameters while I want them to be FIFT parameters.
Example:
fift run .\fift\transaction.fif .\build\contract address 0 0 0.01 -C "test" Transaction
Gives
usage: toncli [-h] [-v] {start,deploy,get,send,tointeger,run_transaction,f,fc,lc,run,build,fift,lite-client,sendboc,wallet,run_tests,update_libs,func} ... toncli: error: unrecognized arguments: -C

Version: 0.0.22

  • Add sendboc command, so if .boc file pass - will send it via lite-cliente, if .fif file pass - will
    invoke tncli fift sendboc so fift script will be run, and then boc file on output will be sended
  • Add --data-params to build command, to auto-generate data cells
  • Update stdlib.fc to support nft
  • Critical fix: self.wait_for_deploy(contracts=real_contracts) instead of self.wait_for_deploy(contracts=contracts)
  • Add .gitignore to protect contract keys leaks
  • Add cell slice parser in lite-client
  • Add parse address to TonUtils.fif
  • Fix custom path to fift / func / lite-client on startup
  • Add command wallet to check wallets addresses
  • Force fift / func libs update
  • More stability in lite-client interaction
  • Send exteranal_message to contract without need to provide wrapper of external_message, just pass body bytes (
    with support of multiple contracts)
  • Send internal_message from deploy wallet in one command
  • NFT Example deploy
  • Add retry parameter to lite-client, try several times to do query
  • Add windows support
  • Func tests
  • Custom stdlib-tests.fc and asm-tests.fif for tests
  • Documentation update

Error during deploy with toncli from master

I've tried to use master branch toncli for new tests
According to documentation it has to be used with https://github.com/SpyCheese/ton/tree/toncli-local binaries

toncli start wallet
cd wallet/
toncli build
toncli deploy

But it produces error

INFO: ๐Ÿš€ You want to interact with your contracts ['contract'] in testnet - that's great!
INFO: โœ‹ Do not panic - i'm creating wallet in /root/.config/toncli, so you can easily manage your contracts
INFO: ๐Ÿ’ I'll create folder /root/.config/toncli/wallet with project wallet and all needed files
INFO: ๐Ÿ‘‘ Folder successfully created - happy blockchain hacking
INFO: ๐Ÿผ You now can do cd wallet and toncli deploy -n testnet
INFO: ๐Ÿค— Run tests on ['/root/.config/toncli/wallet/fift/data.fif']
Saved new private key to file build/contract.pk
INFO: Depth test pass ๐Ÿ
INFO: Type test pass ๐Ÿ
INFO: ๐Ÿฅณ Start contract manipulation
[ 1][t 0][2022-08-13 07:01:54.680287875][Fift.cpp:67]   top: <text interpreter continuation>
level 1: <continuation 0x55b003be1350>
level 2: <text interpreter continuation>
[ 1][t 0][2022-08-13 07:01:54.680300085][fift-main.cpp:204]     Error interpreting file `/toncli/src/toncli/modules/fift/contract_manipulation.fif`: contract.fif:15:   PROCINLINE:<{:-?
Traceback (most recent call last):
  File "/usr/local/bin/toncli", line 33, in <module>
    sys.exit(load_entry_point('toncli', 'console_scripts', 'toncli')())
  File "/toncli/src/toncli/main.py", line 60, in main
    CommandsExecuter(command, string_kwargs, parser)
  File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 39, in __init__
    self.command_mapper[command](self)
  File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 70, in deploy_command
    return DeployCommand(self.string_kwargs, self.parser)
  File "/toncli/src/toncli/modules/utils/commands/command_classes/deploy_command.py", line 12, in __init__
    deployer = ContractDeployer(network=args.net, update_config=args.update,
  File "/toncli/src/toncli/modules/deploy_contract.py", line 43, in __init__
    self.deploy_contract = DeployWalletContract(network, workchain)
  File "/toncli/src/toncli/modules/deploy_wallet_contract.py", line 53, in __init__
    data = self.build()
  File "/toncli/src/toncli/modules/abstract/deployer.py", line 107, in build
    data.append(contract_manipulation(os.path.abspath(contract.to_save_location),
  File "/toncli/src/toncli/modules/utils/fift/commands.py", line 101, in contract_manipulation
    output = subprocess.check_output(command, cwd=getcwd() if not cwd else cwd)
  File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.10/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/local/bin/fift', '-I', '/root/.config/toncli/fift-libs', '-s', '/toncli/src/toncli/modules/fift/contract_manipulation.fif', '/root/.config/toncli/wallet/build/contract.fif', '/tmp/tmpl_82u7g4.boc', '0', '/root/.config/toncli/wallet/build/boc/contract.boc', '/root/.config/toncli/wallet/build/contract_address']' returned non-zero exit status 2.

how to reproduce with docker

docker run --rm -it ubuntu:22.04 bash

apt-get update && apt-get install -y build-essential cmake clang-11 openssl libssl-dev zlib1g-dev openssl wget git python3 python3-pip
git clone --recurse-submodules --jobs 8 --depth 1 --branch toncli-local https://github.com/SpyCheese/ton.git /ton

mkdir /build && cd /build

cmake -DCMAKE_BUILD_TYPE=MinSizeRel /ton
cmake --build . --config MinSizeRel --target func fift lite-client -- -j $(nproc)

cp /build/lite-client/lite-client /build/crypto/fift /build/crypto/func /usr/local/bin/
cd /

git clone --depth 1 https://github.com/disintar/toncli.git
cd toncli
pip install -e .

#specify /usr/local/bin/func /usr/local/bin/fift /usr/local/bin/lite-client
toncli

toncli update_libs

cd /tmp/
toncli start wallet

cd wallet/
toncli deploy

broken with latest 4.x.x bitstring

Bug Type

Functional

Reproduction steps

  • use pip install toncli to install it
  • run it using toncli command

Actual result

it crashes with

    from bitstring import BitString
ImportError: cannot import name 'BitString' from 'bitstring' 

Expected result

it should not crash

Suggested Severity

Critical

Device

OS: Fedora

pip list | grep bitstr
bitstring          4.0.1

Additional Context

Fix is to downgrade bitstring pip module to 3.x.x version
for example
pip install bitstring==3.1.9 fixes the issue

Question: how to 'initialize' deploy-wallet on mainnet?

Bug Type

Other

Reproduction steps

What is the right way to 'initialize' deploy-wallet created with toncli? I've sent a few ton to it but it still uninitialized so I'm getting this on attempt to make any tx:

Please, send more TON for deployment to ....

How much exactly TON needs to be send to deploy-wallet (now it has 5) to finish initialization?

Actual result

toncli send -n mainnet -a 5 --address .....

fails with 'Please, send more TON for deployment' message

Expected result

toncli send -n mainnet -a 5 --address .....

should successfully send TONs

Suggested Severity

Medium

Device

Desktop (please complete the following information):

  • OS: Windows 11 [e.g. iOS]
  • TonCli - latest HEAD

Additional Context

No response

WARNING: ๐Ÿค– Can't find executable for fift, please specify it

I'm trying to install toncli on windows 10, I do everything as in the instructions https://github.com/disintar/toncli/blob/master/INSTALLATION.md at the last stage, when I open the ton-win64-binaries folder in powershell, I enter the toncli command, an error occurs:
PS C:\Users\Admin\Desktop\ton-win64-binaries> toncli INFO: ๐Ÿฅฐ First time run - i'll create config folder 4you and save some stuff there INFO: ๐Ÿค– Check all executables are installed... INFO: Adding path to executable func success! ERROR: Command '['C:\\Users\\Admin\\Desktop\\ton-win64-binaries\\fift.exe', '-V']' returned non-zero exit status 3221225501. WARNING: ๐Ÿค– Can't find executable for fift, please specify it, e.g.: /usr/bin/fift Path:
How to solve?

Migrate from `lite-client` to `tonlibjson`

  • Support 1 lite-server connection for multiple actions

In deploy process we connecting 3-4 times to lite-server, so the process is slow

  • Support json answer parse, not output of lite-client ๐Ÿคฆ

Toncli deploys into the same address every time

Bug Type

Functional

Reproduction steps

  1. toncli deploy
  2. toncli deploy again

Actual result

The contract gets deployed to the same address over and over again, but all the times except the first TON CLI does nothing (because the address is already initialized)

Expected result

The contract deploys to a new address every time

Suggested Severity

High

Device

OS: Arch Linux x86_64 
Host: MS-7D18 2.0 
Kernel: 6.0.12-arch1-1
CPU: 11th Gen Intel i5-11600 (12) @ 4.800GHz 
GPU: Intel RocketLake-S GT1 [UHD Graphics 750] 
Memory: 15823MiB

Additional Context

No response

Path to fift-libs works not correctly in Windows

Hi!
When I run toncli run_tests on windows I get this error after a successful built:

[ 1][t 0][2022-04-06 18:30:14.7424055][fift-main.cpp:180]       Error interpreting standard preamble file `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.

Any help?

bitstring library removed BitString class in the 4.x.x version

Bug Type

Functional

Reproduction steps

  1. Install toncli
  2. Try to run it

Actual result

You will get "import error"

Expected result

Not to get an error โ˜บ๏ธ

Suggested Severity

Low

Device

Desktop (please complete the following information):

  • OS: Linux Mint 21 x86_64

Additional Context

I see you specified in the requirements.txt 3.x.x version.
Not sure how my OS or Python bin chose to use 4.x.x version or it was there before, not much of Python guy ๐Ÿ˜…, but I had to by hand replace 4.x.x with 3.x.x in the ~/.local/lib/... dir

I set severity as Low, cause I'm not sure if others have the same problem and it's not because of my Python installation ๐Ÿค”

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.