ape-starknet: An ape plugin for the StarkNet networks
Project description
Ape StarkNet
Plugins for the StarkNet Ethereum L2 networks.
Dependencies
- python3 version 3.7 or greater, python3-dev
Installation
via pip
You can install the latest release via pip
:
pip install ape-starknet
via setuptools
You can clone the repository and use setuptools
for the most up-to-date version:
git clone https://github.com/ApeWorX/ape-starknet.git
cd ape-starknet
python3 setup.py install
Quick Usage
Account Management
Deploy a new account:
ape starknet accounts create <ALIAS> --network starknet:testnet
You can deploy the same account to multiple networks.
ape starknet accounts create <ALIAS> --network starknet:mainnet
See your accounts and all of their deployment addresses:
ape starknet accounts list
shows:
Alias - <ALIAS>
Public key - 0x123444444d716666dd88882bE2e99991555DE1c7
Contract address (testnet) - 0x6b7111AA4111e5B2229c3332B66696888164440A773333143333B383333a183
Contract address (mainnet) - 0x7873113A4111e5B2229c3332B66696388163440A373333143333B3833332122
Import an existing account:
ape starknet accounts import <ALIAS> --address 0x6b7111AA4111e5B2229c3332B66696888164440A773333143333B383333a183 --network starknet:testnet
You can also import an account by key-file, including a key-file you exported from your Argent-X browser wallet:
ape starknet accounts import <ALIAS> --keyfile path/to/keyfile.json
You can also delete accounts:
ape starknet accounts delete <ALIAS> --network starknet:testnet
NOTE: You don't have to specify the network if your account is only deployed to a single network.
Contract Interaction
First, deploy your contract:
from ape import project
contract = project.MyContract.deploy()
The deploy
method returns a contract instance from which you can call methods on:
receipt = contract.my_mutable_method(123)
value = contract.my_view_method()
You can access the return data from a mutable method's receipt:
receipt = contract.my_mutable_method(123)
result = receipt.return_value
Include a sender to delegate the transaction to an account contract:
from ape import accounts
account = accounts.load("my_account")
receipt = contract.my_mutable_method(123, sender=account)
NOTE: Currently, to pass in arrays as arguments, you have to also include the array size beforehand:
receipt = contract.store_my_list(3, [1, 2, 3])
Mainnet Alpha Whitelist Deployment Token
You can deploy contracts by doing:
from ape import project
my_contract = project.MyContract.deploy()
Paying Fees
Starknet fees are currently paid in ETH, which is an ERC-20 on the Starknet chain.
To check your account balance (in ETH), use the balance
property on the account:
from ape import accounts
acct = accounts.load("Alias")
print(acct.balance)
If your account has a positive balance, you can begin paying fees!
To pay fees, you can either manually set the max_fee
kwarg on an invoke-transaction:
receipt = contract.my_mutable_method(123, max_fee=2900000000000)
NOTE: By not setting the max_fee
, it will automatically get set to the value returned from the provider estimate_gas_cost()
call.
You do not need to call estimate_gas_cost()
explicitly.
Currently, for local
networks, the estimated gas is always 0
as it is not yet required.
Mainnet Alpha Whitelist Deployment Token
Currently, to deploy to Alpha-Mainnet, your contract needs to be whitelisted. You can provide your WL token in a variety of ways.
Via Python code:
from ape import project
my_contract = project.MyContract.deploy(token="MY_TOKEN")
Via an Environment Variable:
export ALPHA_MAINNET_WL_DEPLOY_TOKEN="MY_TOKEN"
Or, via the --token
flag when deploying an account:
ape starknet accounts create MY_ACCOUNT --token MY_TOKEN
Development
This project is in development and should be considered a beta. Things might not be in their final state and breaking changes may occur. Comments, questions, criticisms and pull requests are welcomed.
License
This project is licensed under the Apache 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ape-starknet-0.2.0a2.tar.gz
.
File metadata
- Download URL: ape-starknet-0.2.0a2.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.4 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df704582c411233ce62816a4728698b374842a575f57221adadaef0920262b96 |
|
MD5 | 007be276aa496cab0758cc1949c5980a |
|
BLAKE2b-256 | 9778474e75777a51c32c58ad92e4c05019f1092195a22ce09d0c27ed8c0c9dd6 |
File details
Details for the file ape_starknet-0.2.0a2-py3-none-any.whl
.
File metadata
- Download URL: ape_starknet-0.2.0a2-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/35.0 requests/2.28.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.11.4 keyring/23.6.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f611ec7b4d1906181b0cc558e3cf1ac3cfc63e9337a3772129affee99bd456a |
|
MD5 | 7261840ecafabc3725f828f41ee820e0 |
|
BLAKE2b-256 | 254683429624e14028f0744df1eed0ce1d5398e1e76a6869b803f4803fa0e69b |