CLI tool to develop StarkNet projects written in Cairo

Overview

OpenZeppelin Nile β›΅

Navigate your StarkNet projects written in Cairo.

Getting started

Create a folder for your project and cd into it:

mkdir myproject
cd myproject

Create a virtualenv and activate it:

python3 -m venv env
source env/bin/activate

Install nile:

pip install cairo-nile

Use nile to quickly set up your development environment:

nile init
...
✨  Cairo successfully installed!
...
βœ… Dependencies successfully installed
πŸ—„  Creating project directory tree
⛡️ Nile project ready! Try running:

This command creates the project directory structure and installs cairo-lang, pytest, and pytest-asyncio for you. The template includes a makefile to build the project (make build) and run tests (make test).

Usage

compile

Compile Cairo contracts. Compilation articacts are written into the artifacts/ directory.

nile compile # compiles all contracts under contracts/
nile compile contracts/MyContract.cairo # compiles single contract

Example output:

$ nile compile
Creating artifacts/abis/ to store compilation artifacts
πŸ€– Compiling all Cairo contracts in the contracts/ directory
πŸ”¨ Compiling contracts/Account.cairo
πŸ”¨ Compiling contracts/Initializable.cairo
πŸ”¨ Compiling contracts/Ownable.cairo
βœ… Done

clean

Deletes the artifacts/ directory for a fresh start ❄️

nile clean

install

Install the latest version of the Cairo language

nile install

version

Print out the Nile version

nile version

Hacking on Nile

Nile uses tox to manage development tasks, you can get a list of available task with tox -av.

  • Install a development version of the package with python -m pip install .
  • Run tests with tox
  • Build the package with tox -e build
  • Format all files with tox -e format
  • Check files formatting with tox -e lint

License

Nile is released under the MIT License.

Comments
  • nile setup fails

    nile setup fails

    Hello team. I am trying to setup a private key alias as described in the README. but I get an error.

    I am on a working installation of Nile on macOS (I followed the macOS specific installations) and I am able to compile and deploy. I created the venv, installed cairo-nile with pip, inited the project. I also create a .env file in the root directory with the YOLO=123 key.

    > nile setup YOLO    
    
    Traceback (most recent call last):
      File "/opt/homebrew/bin/nile", line 8, in <module>
        sys.exit(cli())
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/opt/homebrew/lib/python3.9/site-packages/nile/cli.py", line 84, in setup
        Account(signer, network)
      File "/opt/homebrew/lib/python3.9/site-packages/nile/core/account.py", line 20, in __init__
        self.signer = Signer(int(os.environ[signer]))
      File "/opt/homebrew/Cellar/[email protected]/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
        raise KeyError(key) from None
    KeyError: 'YOLO'
    

    I have no idea what is going wrong

    opened by clacladev 17
  • Error installing Cairo on M1 chip (gmp.h)

    Error installing Cairo on M1 chip (gmp.h)

    image

    As you can see, when I try to compile the cairo file, it show with these error. I tried to search on Google but can't find with any ideas. I think it's out of my knowledge, anyone know how to solve this? Thank you.

    opened by howardpen9 17
  • Plugin support

    Plugin support

    Fixes #53

    Plugin support for Nile

    In this PR I present a methodology for extending CLI functionality for Nile in a Pythonic manner to ease Nile extensibility with plugins.

    How is this implemented?

    This implementation takes advantage of the native extensibility features of click. Using click and leveraging the Python entrypoints we have a simple manner of handling extension natively on Python environments through dependencies. The plugin implementation on Nile looks for specific Python entrypoints constraints for adding commands.

    In order for this implementation to be functional, it is needed by the plugin developer to follow some development guidelines defined in this simple plugin example I've implemented extending Nile for a dummy greet extension. In a brief explanation the guidelines are as follows:

    1. Define a Python module that implement a click command or group:
    # First, import click dependency
    import click
    
    # Decorate the method that will be the command name with `click.command` 
    @click.command()
    # You can define custom parameters as defined in `click`: https://click.palletsprojects.com/en/7.x/options/
    def my_command():
        # Help message to show with the command
        """
        Subcommand plugin that does something.
        """
        # Done! Now implement your custom functionality in the command
        click.echo("I'm a plugin overiding a command!")
    
    1. Define the plugin entrypoint. In this case using Poetry features in the pyproject.toml file:
    # We need to specify that click commands are Poetry entrypoints of type `nile_plugins`. Do not modify this
    [tool.poetry.plugins."nile_plugins"]
    # Here you specify you command name and location <command_name> = <package_method_location>
    "greet" = "nile_greet.main.greet"
    
    1. Done!

    How to decide if I want to use a plugin or not? Just install / uninstall the plugin dependency :)

    Cheers.

    opened by franalgaba 14
  • nile init: Greenlet error using python3.10

    nile init: Greenlet error using python3.10

    I have python 3.10 installed with conda (conda create --name py310 python=3.10; conda activate py310) After installing nile and running nile init, I get

      Running setup.py install for greenlet ... error
      error: subprocess-exited-with-error
      
      Γ— Running setup.py install for greenlet did not run successfully.
      β”‚ exit code: 1
      ╰─> [17 lines of output]
          running install
          running build
          running build_ext
          building 'greenlet' extension
          creating build
          creating build/temp.linux-x86_64-3.10
          gcc -pthread -B /home/samlaf/anaconda3/envs/py310/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/samlaf/anaconda3/envs/py310/include -fPIC -O2 -isystem /home/samlaf/anaconda3/envs/py310/include -fPIC -I/home/samlaf/devel/starkware/nile-test/env/include -I/home/samlaf/anaconda3/envs/py310/include/python3.10 -c greenlet.c -o build/temp.linux-x86_64-3.10/greenlet.o
          greenlet.c: In function β€˜g_calltrace’:
          greenlet.c:566:10: error: β€˜PyThreadState’ {aka β€˜struct _ts’} has no member named β€˜use_tracing’; did you mean β€˜tracing’?
            566 |  tstate->use_tracing = 0;
                |          ^~~~~~~~~~~
                |          tracing
          greenlet.c:569:10: error: β€˜PyThreadState’ {aka β€˜struct _ts’} has no member named β€˜use_tracing’; did you mean β€˜tracing’?
            569 |  tstate->use_tracing = (tstate->tracing <= 0 &&
                |          ^~~~~~~~~~~
                |          tracing
          error: command '/usr/bin/gcc' failed with exit code 1
          [end of output]
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
    error: legacy-install-failure
    
    Γ— Encountered error while trying to install package.
    ╰─> greenlet
    
    note: This is an issue with the package mentioned above, not pip.
    hint: See above for output from the failure.
    Traceback (most recent call last):
      File "/home/samlaf/devel/starkware/nile-test/env/bin/nile", line 8, in <module>
        sys.exit(cli())
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/cli.py", line 61, in init
        init_command()
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/core/init.py", line 19, in init
        install()
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/core/install.py", line 10, in install
        subprocess.check_call(
      File "/home/samlaf/anaconda3/envs/py310/lib/python3.10/subprocess.py", line 369, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/home/samlaf/devel/starkware/nile-test/env/bin/python3', '-m', 'pip', 'install', 'cairo-lang', 'starknet-devnet']' returned non-zero exit status 1.
    
    opened by samlaf 12
  • Big picture view

    Big picture view

    I've spent some more time thinking how to organize cairo projects and what I'd like to see. I think we should leverage the python ecosystem as much as possible:

    • nile init could use cookiecutter to create the project
    • pypi to distribute cairo packages
    • users should be able to configure nile (for example the contracts directory) from their setup.cfg file like other python tools

    I think cairo projects should use the same folder structure as python projects, this has the added benefit that library developers can distribute the cairo files together with an sdk to interact with it (like @uniswap/core and @uniswap/sdk).

    .
    β”œβ”€β”€ src
    β”‚  └── cairoswap
    β”‚     β”œβ”€β”€ __init__.py
    β”‚     β”œβ”€β”€ cairo
    β”‚     β”‚  β”œβ”€β”€ __init__.py
    β”‚     β”‚  β”œβ”€β”€ pool.cairo
    β”‚     β”‚  └── router.cairo
    β”‚     β”œβ”€β”€ pool.py
    β”‚     └── router.py
    β”œβ”€β”€ tests
    β”‚  β”œβ”€β”€ pool.test.cairo
    β”‚  β”œβ”€β”€ test_pool.py
    β”‚  └── test_router.py
    β”œβ”€β”€ pyproject.toml
    β”œβ”€β”€ setup.cfg
    └── tox.in
    

    Developers can then create a tox task than runs python tests with pytest and cairo tests with nile test.

    If users don't need/want to setup a full blown project they can revert to a minimal setup and use nile to build and test.

    .
    └── src
       β”œβ”€β”€ pool.cairo
       └── pool.test.cairo
    
    design 
    opened by fracek 11
  • add `status` command and chaining.

    add `status` command and chaining.

    Fixes #98. This PR implements the status command to fetch the status of a StarkNet transaction and the ability to wait for its settlement before initiating another transaction.

    See discussion in #98. Follow up of #70, #90.

    The PR splits features currently available in nile debug and implements them in other functions to be used in different cases:

    • From any transaction hash, query its result. nile status <transaction_hash>.
    • If the transaction may not be settled at calling time and the user wishes to wait (and get that status) before continuing, the --track flag can be added. status will then retry on pending transactions until they are REJECTED or ACCEPTED IN L2.Β°
    • If users would like to debug the transaction message in case of rejection, use the --debug flag.
      Note that --debug implies --track. The debugcommand keeps the same functionality and is effectively an alias for status --debug.

    Furthermore, nile invoke, nile deploy, nile declare Account.send, and Account.deploy can now also use --track and --debug. In that case, the process (terminal or within run) will not return before the transaction is settled (helping the fight against "nonce").

    status, as well as nile invoke and account.send when these flags are used, returns a TransactionStatus, named tuple holding the transaction hash, the transaction status, and the eventual error message. Currently, deploys return value is kept unchanged.

    Β° An additional flag --wait-for-l1 was also on my mind but I didn't think it was necessary for now.

    opened by trevis-dev 10
  • Can't run nile node in macOS

    Can't run nile node in macOS

    Hi,

    I'm on macOS Big Sur, and there is some system process running at port 5000. Cause of which, nile node fails to run.

    Is there a way to specify the port in nile node ?

    enhancement 
    opened by kanishkatn 10
  • Add `nile-account` flag to set Nile artifacts path

    Add `nile-account` flag to set Nile artifacts path

    This PR proposes to add the nile-account flag to account.declare which will create an overriding_path to Nile's precompiled artifacts. This will remove the need to manually set the path for Account declarations.

    Nile account declarations will look like this:

    out = await account.declare("Account", nile_account=True)
    

    as opposed to something like:

    overriding_path = ("env/lib/python3.9/site-packages/nile/artifacts", "env/lib/python3.9/site-packages/nile/artifacts/abis")
    
    out = await account.declare("Account", overriding_path=overriding_path)
    

    Resolves #309.

    Update

    In the event that an issue arises from the Account contract itself, the PR will now find the artifact in Nile's own artifacts directory. In most cases where errors occur from the contract(s) called from an account, Debug will return the underlined code where the error is coming from in the contracts. The errors referenced specifically in Account will not return the underlined Cairo code because Debug needs the actual .cairo contract to reference.

    This PR also proposes to:

    • Improve the triggered account deployments for methods requiring an account such as deploy, declare, and send. Previously, these deployments would fail but the account would still be registered. This is because the CLI only passed watch_mode to the account method and not the account initialization/deployment.
    • unregister failed account deployments. Though, it may be useful to keep the account information, I think it's possible that confusion may arise from having the account information when its deployment failed. If it's preferred to leave the data, we can remove the unregister quite easily.
    opened by andrew-fleming 8
  • Fix network handling

    Fix network handling

    Resolves #297.

    The current flow of network handling creates the awkward issue of an unresolved query in perpetuity when the node.json exists but the network key does not. This PR, therefore, proposes to add goerli2 and integration gateways to the node.json in the nile node command. This means that the goerli2 and integration gateways will be accessible irrespective of the node.json file's existence.

    opened by andrew-fleming 8
  • Update Nile to work with Cairo 0.9.0

    Update Nile to work with Cairo 0.9.0

    Fixes #130

    Still WIP update of nile for cairo 0.9.0

    • Registers class hash declarations in a declarations.txt file
    • Add max_fee param to both nre and cli as per this PR
    • Add --accounts param to node command

    Let me know what else should be added.

    opened by EvolveArt 8
  • run 'nile node' prompt error

    run 'nile node' prompt error

    After run `nile node', it will display a lot of error:

    ....... File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/nile/cli.py", line 193, in node node_command(host, port) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/nile/core/node.py", line 21, in node subprocess.check_call(["starknet-devnet", "--host", host, "--port", str(port)]) File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['starknet-devnet', '--host', '127.0.0.1', '--port', '5000']' returned non-zero exit status 1.

    OS: macOS 12.3.1 (m1)

    opened by acche 8
  • Auto calculate max_fee

    Auto calculate max_fee

    Resolves #284.

    This PR proposes to automatically estimate the max_fee when the max_fee isn't explicitly passed (which would be interpreted as 0). The fee estimation logic lies in estimate_fee_when_zero.

    Some notes:

    CLI

    • estimate_fee_when_zero precedes tx.execute in the run_transaction function.

    NRE

    • The NRE includes a new method execute_tx which estimates the fee (if zero) and executes the transaction. If accepted, the proposed changes will then offer users two ways to script account txs:
        await nre.execute_tx(
            account.send(ETH_TOKEN_ADDRESS, "transfer", [recipient, *amount])
        )
    
        OR:
    
        tx = await account.send(ETH_TOKEN_ADDRESS, "transfer", [recipient, *amount])
        max_fee = await tx.estimate_fee()
        await tx.update_fee(max_fee).execute()
    
    opened by andrew-fleming 0
  • Registering duplicate deployment address will delete deployment from json

    Registering duplicate deployment address will delete deployment from json

    The StarkNet network will correctly reject an attempted deployment of a duplicate contract address. account.deploy unregisters deployments upon tx rejections; therefore, if account.deploy rejects a duplicate deployment, it will unregister the successful deployment as well. This occurs because the to_delete variable looks for the address or class hash of the entry.

    A potential fix might include checking if the address or class hash already exists in register. Currently, it only checks for duplicate aliases. See https://github.com/OpenZeppelin/nile/blob/main/src/nile/deployments.py#L13-L15

    Another idea might consist of waiting for the tx status before registering contracts.

    Maybe both?

    opened by andrew-fleming 1
  • Handle Exceptions in CLI scope

    Handle Exceptions in CLI scope

    Currently, we are handling some exceptions in code shared between CLI and NRE as if they were used only in CLI (logging and returning empty output). For example:

    https://github.com/OpenZeppelin/nile/blob/6643bcd31d1826fb777a2d52c9ce5b7aef67ffa0/src/nile/core/call_or_invoke.py#L42-L65

    When account.send is called from scripts, if an exception occurs, the call will return an empty response, and the exception won't be raised. This can make the user confused about what is happening, as he probably won't be checking the logging output in a script.

    I think we should, as a general rule, avoid try-catching and logging outside the CLI.

    Also, I think it would be helpful to implement a class handling exceptions for the CLI as a centralized entity instead of different try/catches in multiple places.

    This is helpful for UX and code maintainability and extensibility.

    EDIT: The code preview is not showing all the lines I wanted, but if you go to that section, and check the catch block, you will see the empty return.

    EDIT 2: I think this could relate to handling watch_mode in NRE (see this issue).

    enhancement 
    opened by ericnordelo 0
Releases(v0.12.0)
  • v0.12.0(Dec 16, 2022)

    What's Changed

    • Fix account invariant by @martriay in https://github.com/OpenZeppelin/nile/pull/302
    • Support overriding_path for account's deploy and declare by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/310
    • Allow hex params in calldata for deployments through Account by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/318
    • Return address, tx_hash from Account.deploy_contract by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/311
    • Remove accounts.json from nile init by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/324
    • Update goerli2 chain id by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/327
    • Fix network handling by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/303
    • Add nile-account flag to set Nile artifacts path by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/315

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.11.0...v0.12.0

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Nov 21, 2022)

    What's Changed

    • Refactor tests and change network in tests to localhost by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/270
    • Support hex parameters in Account.send by @martriay in https://github.com/OpenZeppelin/nile/pull/253
    • Update universal deployer address by @martriay in https://github.com/OpenZeppelin/nile/pull/255
    • Create .env with nile init and remove example.env by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/265
    • Support mainnet chain_id by @martriay in https://github.com/OpenZeppelin/nile/pull/275
    • Add support for goerli2 and integration testnets by @martriay in https://github.com/OpenZeppelin/nile/pull/272
    • Add cairo_path to compile command (CLI and NRE) by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/241
    • Support starknet token for mainnet deployments by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/263
    • Set default max_fee in account functions by @ericglau in https://github.com/OpenZeppelin/nile/pull/262
    • Make get_hash return hex by @martriay in https://github.com/OpenZeppelin/nile/pull/257
    • Add status command and chaining. by @trevis-dev in https://github.com/OpenZeppelin/nile/pull/122
    • Add hex int pattern entry to CONTRIBUTING by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/279
    • Separate CLI and NRE scopes when integrating plugins by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/273
    • Small update to hex/int pattern. by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/282
    • Change register_class_hash to take int by @ericglau in https://github.com/OpenZeppelin/nile/pull/288
    • Log address as hex in update_abi by @ericglau in https://github.com/OpenZeppelin/nile/pull/290
    • Update README.md by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/286
    • Log as alias or address in update_abi by @ericglau in https://github.com/OpenZeppelin/nile/pull/292
    • Replace subprocess by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/236
    • Deploy through Accounts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/276
    • Support Cairo 0.10.1 by @martriay in https://github.com/OpenZeppelin/nile/pull/268

    New Contributors

    • @trevis-dev made their first contribution in https://github.com/OpenZeppelin/nile/pull/122

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.10.0...v0.11.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Oct 24, 2022)

    What's Changed

    • Add function to update registered deployment ABI by @ericglau in https://github.com/OpenZeppelin/nile/pull/211
    • Remove invoke command by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/227
    • Update account artifacts from cairo-contracts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/224
    • Add Account.declare by @martriay in https://github.com/OpenZeppelin/nile/pull/207
    • Improve project setup description by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/240
    • Fix dependency management by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/233
    • Add simulation and fee estimation to CLI and Account interface by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/230

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.9.1...v0.10.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Oct 3, 2022)

    What's Changed

    • Update invoke to execute by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/190
    • Fix: typos by @omahs in https://github.com/OpenZeppelin/nile/pull/208
    • Devnet predeployed accounts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/192
    • Add short strings from CLI by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/210
    • Add abi parameter to deploy by @ericglau in https://github.com/OpenZeppelin/nile/pull/206
    • Add get-nonce to CLI and NRE by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/197
    • Update Account.send API by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/218

    New Contributors

    • @ericnordelo made their first contribution in https://github.com/OpenZeppelin/nile/pull/190
    • @omahs made their first contribution in https://github.com/OpenZeppelin/nile/pull/208
    • @ericglau made their first contribution in https://github.com/OpenZeppelin/nile/pull/206

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.9.0...v0.9.1

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Sep 9, 2022)

    What's Changed

    • Create RELEASING by @martriay in https://github.com/OpenZeppelin/nile/pull/177
    • Support Cairo 0.10 by @martriay in https://github.com/OpenZeppelin/nile/pull/184

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.2...v0.9.0

    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Aug 29, 2022)

    What's Changed

    • Move utils.py from Contracts to Nile by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/163
    • Sanitize call/invoke params by @martriay in https://github.com/OpenZeppelin/nile/pull/162
    • Temp fix for nile init by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/166
    • Fix CLI param handling by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/168
    • add --seed option to nile node command by @kevinhalliday in https://github.com/OpenZeppelin/nile/pull/147
    • Add get-accounts command by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/119

    New Contributors

    • @kevinhalliday made their first contribution in https://github.com/OpenZeppelin/nile/pull/147

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.0...v0.8.2

    Source code(tar.gz)
    Source code(zip)
  • v0.8.1b(Aug 11, 2022)

    Beta release adding a utils module and params sanitization for better scripting through nile run scripts/my_script.py

    What's Changed

    • Move utils.py from Contracts to Nile by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/163
    • Sanitize call/invoke params by @martriay in https://github.com/OpenZeppelin/nile/pull/162

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.0...v0.8.1b

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Aug 5, 2022)

    Highlights ✨

    • Added support for Cairo v0.9.1
    • Added --lite_mode for nile node
    • Improve overall error/exception handling and messages

    What's Changed

    • Fix passing optional args in _compile_contract by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/150
    • Fix failing build deps in python3.7 by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/156
    • Add CONTRIBUTING.md by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/152
    • Add support for cairo v0.9.1 with --no_wallet by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/154
    • Add lite-mode by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/153
    • Add no-wallet to account command by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/160
    • Improve error handling of account init with invalid key by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/158
    • Reduce subprocess verbosity on call, or invoke, error by @ca11ab1e in https://github.com/OpenZeppelin/nile/pull/126

    New Contributors

    • @ca11ab1e made their first contribution in https://github.com/OpenZeppelin/nile/pull/126

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.7.1...v0.8.0

    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Jul 13, 2022)

    This release updates the Account artifact related to the https://github.com/OpenZeppelin/cairo-contracts/pull/387 bug fix.

    What's Changed

    • Fix Account artifact by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/145

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.7.0...v0.7.1

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Jul 7, 2022)

    What's Changed

    • Pin marshmallow-dataclass to non-breaking version, gitignore node.json by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/110
    • Automate account flag during compilation by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/112
    • Added standalone_mode injection for command return value. by @franalgaba in https://github.com/OpenZeppelin/nile/pull/113
    • Fix alias in debug by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/114
    • Fix readme formatting by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/121
    • Update to cairo-lang v0.9.0 by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/135
    • Update Account implementation by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/140
    • Update README.md by @JulissaDantes in https://github.com/OpenZeppelin/nile/pull/139

    New Contributors

    • @JulissaDantes made their first contribution in https://github.com/OpenZeppelin/nile/pull/139

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.6.1...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Apr 21, 2022)

    What's Changed

    • Remove Python3.10 from CI by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/104

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Apr 14, 2022)

    What's Changed

    • Fix werkzeug version by @martriay in https://github.com/OpenZeppelin/nile/pull/92
    • Add --disable-hint-validation flag to nile by @LucasLvy in https://github.com/OpenZeppelin/nile/pull/82
    • feat: add .gitignore to src/nile/base_project by @kootsZhin in https://github.com/OpenZeppelin/nile/pull/97
    • Add debug command by @trevis-dev and @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/90
    • Plugin support by @franalgaba in https://github.com/OpenZeppelin/nile/pull/86
    • Test Account class and commands by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/99
    • Update account artifacts and signer, add signer test by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/94

    New Contributors

    • @LucasLvy made their first contribution in https://github.com/OpenZeppelin/nile/pull/82
    • @kootsZhin made their first contribution in https://github.com/OpenZeppelin/nile/pull/97
    • @franalgaba made their first contribution in https://github.com/OpenZeppelin/nile/pull/86
    • @trevis-dev made their first contribution in https://github.com/OpenZeppelin/nile/pull/90

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.5.2...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Mar 27, 2022)

    What's Changed

    • Fix linting by @martriay in https://github.com/OpenZeppelin/nile/pull/88

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.5.1...v0.5.2

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Mar 21, 2022)

    This release comes with a few bugfixes, as well as support for Cairo 0.8.0 and a new Signer to work with the latest Account contract implementation.

    What's Changed

    • fix(docs): typo by @rootulp in https://github.com/OpenZeppelin/nile/pull/64
    • Add directory option to compile command by @martriay in https://github.com/OpenZeppelin/nile/pull/66
    • Update account version to cairo-contracts' 5731e71 by @martriay in https://github.com/OpenZeppelin/nile/pull/65
    • docs: fix typos by @tserg in https://github.com/OpenZeppelin/nile/pull/67
    • Fix deployment issue with default gateway url by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/74
    • Fix localhost, update readme by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/80
    • Fix signer <> account interaction by @martriay in https://github.com/OpenZeppelin/nile/pull/77
    • Add account compilation check by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/79

    New Contributors

    • @rootulp made their first contribution in https://github.com/OpenZeppelin/nile/pull/64
    • @tserg made their first contribution in https://github.com/OpenZeppelin/nile/pull/67
    • @andrew-fleming made their first contribution in https://github.com/OpenZeppelin/nile/pull/74

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.4.0...v0.5.0

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Feb 15, 2022)

    What's Changed

    • Add end-to-end tests for "compile" and "clean" commands by @TimNooren in https://github.com/OpenZeppelin/nile/pull/45
    • Add host and port options for "node" command by @ftupas in https://github.com/OpenZeppelin/nile/pull/46
    • Fix deployment load by @martriay in https://github.com/OpenZeppelin/nile/pull/51
    • Scripting API prototype by @martriay in https://github.com/OpenZeppelin/nile/pull/55
    • Remove no longer needed %builtins directive by @sambarnes in https://github.com/OpenZeppelin/nile/pull/57
    • Refactor account module and expose it through NRE by @martriay in https://github.com/OpenZeppelin/nile/pull/56
    • Simplify send reusing call_or_invoke by @martriay in https://github.com/OpenZeppelin/nile/pull/58
    • feat(cli): improved --network option by @milancermak in https://github.com/OpenZeppelin/nile/pull/60
    • Fix None arguments to deploy, call, and invoke by @fracek in https://github.com/OpenZeppelin/nile/pull/62

    New Contributors

    • @ftupas made their first contribution in https://github.com/OpenZeppelin/nile/pull/46
    • @sambarnes made their first contribution in https://github.com/OpenZeppelin/nile/pull/57

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.3.0...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 25, 2021)

    What's Changed

    • Added support for signer by @exp-table in https://github.com/OpenZeppelin/nile/pull/33
    • Change command output on compilation error by @milancermak in https://github.com/OpenZeppelin/nile/pull/38
    • Add mainnet compatibility by @martriay in https://github.com/OpenZeppelin/nile/pull/39
    • Handle short tx hash on localhost by @perama-v in https://github.com/OpenZeppelin/nile/pull/42
    • Add tests for "compile" and "clean" CLI commands by @TimNooren in https://github.com/OpenZeppelin/nile/pull/40
    • Prevent truncation of 2 trailing characters by @perama-v in https://github.com/OpenZeppelin/nile/pull/43

    New Contributors

    • @exp-table made their first contribution in https://github.com/OpenZeppelin/nile/pull/33
    • @TimNooren made their first contribution in https://github.com/OpenZeppelin/nile/pull/40

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.2.1...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Nov 8, 2021)

    The 0.2.0 release comes with:

    • Cairo 0.5.0 support
    • starknet-devnet by Shard Labs as the default local network through nile node!
    • Deployments management. Nile now handles addresses and artifacts for both local and remote networks.
    • New deploy, invoke and call commands to interact with your deployments.

    See the README for documentation.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.15(Nov 6, 2021)

  • v0.0.14(Oct 13, 2021)

  • v0.0.13(Oct 4, 2021)

  • v0.0.12(Oct 3, 2021)

    • fix import importlib metadata bug (#17)
    • install Cairo using pip instead of wget (#16)
    • add init command (#15)
    • fixes and updates on README (#14 and more)

    thanks @marcellobardus and @franciscod for their contributions to this release!

    Source code(tar.gz)
    Source code(zip)
  • v0.0.7(Oct 1, 2021)

Owner
OpenZeppelin
The standard for secure blockchain applications
OpenZeppelin
Phishing-Detective is a command line application for Windows 10 built to detect a phishing site from two url's

Phishing-Detective Phishing-Detective is a command line application for Windows 10 built to detect a phishing site from two url's How it works A simpl

2 Jun 23, 2022
ICMP Reverse Shell written in Python 3 and with Scapy (backdoor/rev shell)

icmpdoor - ICMP Reverse Shell icmpdoor is an ICMP rev shell written in Python3 and scapy. Tested on Ubuntu 20.04, Debian 10 (Kali Linux), and Windows

Jeroen van Kessel 206 Dec 29, 2022
Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process of them.

Task Manager Automation Tool (TMAT) CLI Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process

Tiamat 5 Apr 12, 2022
A Tempmail Tool for Terminal and Termux.

A Tempmail Tool for Terminal and Termux.

MAO-COMMUNITY 8 Oct 19, 2022
Detect secret in source code, scan your repo for leaks. Find secrets with GitGuardian and prevent leaked credentials. GitGuardian is an automated secrets detection & remediation service.

GitGuardian Shield: protect your secrets with GitGuardian GitGuardian shield (ggshield) is a CLI application that runs in your local environment or in

GitGuardian 1.2k Jan 06, 2023
A command line interface to interact with the Hypixel api allowing the user to get stats, leaderboards, etc

HyConsole is a way to get data on players and leaderboards from the Hypixel Minecraft server from the command line. Keep in mind I have no a

1 Feb 14, 2022
Simple CLI tool to track your cryptocurrency portfolio in real time.

Simple tool to track your crypto portfolio in realtime. It can be used to track any coin on the BNB network, even obscure coins that are not listed or trackable by major portfolio tracking applicatio

Trevor White 69 Oct 24, 2022
Command Line Based Todo Script

Todo-CLI Features Full-Fledged Command Line Based Todo List with the following features planned: Interactive Interface OS Notifications Save and Remov

DSC IIEST 5 Nov 17, 2021
A command line application to analyse reports from TBC Warcraft Logs.

README A command line application to analyse reports from TBC Warcraft Logs. The application was written and tested with Python 3.9. Features Dumps an

2 Dec 17, 2021
A multipurpose discord bot with more than 220 commands

Welcome WM Bot A advanced bot with more than 220 commands to fit your needs Explore the commands Β» View Demo Β· Report Bug Β· Request Feature Table of C

Wasi Master 12 Dec 16, 2022
Python command line tool and python engine to label table fields and fields in data files.

Python command line tool and python engine to label table fields and fields in data files. It could help to find meaningful data in your tables and data files or to find Personal identifable informat

APICrafter 22 Dec 05, 2022
A tool to automatically convert old string literal formatting to f-strings

flynt - string formatting converter flynt is a command line tool to automatically convert a project's Python code from old "%-formatted" and .format(.

Elijah K 551 Jan 06, 2023
pwy - A simple weather tool.

A simple weather tool. I made this as a way for me to learn Python, API, and PyPi packaging. Name changed from wwy to pwy.

Clint 105 Dec 31, 2022
Synchronization tool for external devices which does not support time stamps, e.g. over MTP.

MTP-Sync Tool to synchronize data to a slow device, e.g. a smartphone which is connected over MTP. A state file (.mtp_sync_state.json) is created in t

2 Jul 22, 2022
pyGinit is a command line tools that help you to initialize your current project a local git repo and remote repo

pyGinit pyGinit is a command line tools that help you to initialize your current project a local git repo and remote repo Requirements Requirements be

AlphaBeta 15 Feb 26, 2022
Python3 command-line tool for the inference of Boolean rules and pathway analysis on omics data

BONITA-Python3 BONITA was originally written in Python 2 and tested with Python 2-compatible packages. This version of the packages ports BONITA to Py

1 Dec 22, 2021
The WalletsNet CLI helps you connect to WalletsNet

WalletsNet CLI The WalletsNet CLI helps you connect to WalletsNet. With the CLI, you can: Trigger webhook events or resend events for easy testing Tai

WalletsClub 8 Dec 22, 2021
Chat In Terminal - Chat-App in python

Chat In Terminal Hello all. πŸ˜‰ Sockets and servers are vey important for connection and importantly chatting with others. πŸ˜‚ 😁 I have thought of maki

Shreejan Dolai 5 Nov 17, 2022
A simple script to make the operation of AltServer-Linux more easier with cli

A simple script to make the operation of AltServer-Linux more easier with cli

powen 23 Dec 13, 2022
Zecwallet-Python is a simple wrapper around the Zecwallet Command Line LightClient written in Python

A wrapper around Zecwallet Command Line LightClient, written in Python Table of Contents About Installation Usage Examples About Zecw

Priveasy 2 Sep 06, 2022