Python package to automate MultiversX smart contracts deployment and contract interactions in general
Project description
MxOps
MxOps is a tool created to facilitate and automate MultiversX interactions: be it smart contracts deployments, calls, queries or just simple transfers. Inspired from DevOps tools, it aims to ease and make reproducible any set of interactions with the blockchain.
MxOps is built to be especially useful in these situations:
- smart-contract deployment automation
- on-chain integration tests (chain simulator, localnet, testnet or devnet)
- smart-contract interaction automation
The vision of MxOps is that interacting with the blockchain should be straight forward and that even non-technical users should be able to interact with the blockchain at will. For this reason, MxOps will handle all the hassle for you so that you can focus on the core of your activities.
Sponsors
MxOps is an open-source tool dedicated to enhancing the MultiversX ecosystem, and its development and maintenance rely on the generous support of our sponsors.
We extend our heartfelt thanks to Astrarizon, the first sponsor of MxOps! (announcement on X)
If MxOps has been beneficial in your projects or professional endeavors, we invite you to join our community of sponsors. Your support will ensure the continued maintenance and future development of MxOps, helping to keep this tool at the forefront of the MultiversX ecosystem.
Interested? Reach out to us at contact@catenscia.com.
How does it works?
MxOps is built in python, on top of mx-sdk-py, but you don't need to know python nor to be a programmer to be able to benefit from MxOps. Indeed, you only have to write yaml files (aka formated text files) to describe what you want to to.
Snippets
To give you an idea of how simple it is to use MxOps, you will find below a few yaml snippets for some of its capacities.
Token Issuance
Here, MxOps is used to issue a fungible token from an account named by the user as alice:
- type: FungibleIssue
sender: alice
token_name: AliceToken
token_ticker: ATK
initial_supply: 1000000000 # 1,000,000.000 ATK
num_decimals: 3
can_add_special_roles: true
Contract Query
MxOps is used below to fetch information from the live Onedex contract on mainnet. We specifically query the state of the pool n°9, which is the pool ONE/WEGLD.
- type: ContractQuery
contract: onedex-swap
endpoint: viewPair
arguments:
- 9 # id of the pair to get the details of
:class-title: normal-title
:color: light
```json
[
{
"pair_id": 9,
"state": {
"__discriminant__": 1,
"__name__": "Active"
},
"enabled": true,
"owner": "erd1xkflzkx3hp52szy26zh9m5ts3v3j4dxhqkpxzj9npzp7wyp6qeysfpqz2m",
"first_token_id": "ONE-f9954f",
"second_token_id": "WEGLD-bd4d79",
"lp_token_id": "ONEWEGLD-892244",
"lp_token_decimal": 18,
"first_token_reserve": 1372071779861493216032911,
"second_token_reserve": 4820163353587346912393,
"lp_token_supply": 1301904634411268529384,
"lp_token_roles_are_set": true,
"unkown": 0,
"fees": 100
}
]
Contract Call with Payments
Here, MxOps is used to call a contract while sending tokens. This example shows what it would look like to add some liquidity to a pool.
- type: ContractCall
sender: thomas
contract: pair-contract
endpoint: addLiquidity
esdt_transfers:
- identifier: TOKENA-abcdef
amount: 894916519846515
nonce: 0
- identifier: TOKENB-abcdef
amount: 710549841216484
nonce: 0
gas_limit: 12000000
Account cloning
Let's say the contract you are developing in dependent of a third party contract for which you don't have the code. MxOps allows you to simply copy entirely this contract, including its code, its storage values and its tokens, so that you can run your tests in mainnet condition but locally on your machine.
- type: AccountClone
address: egld_wrapper_shard_1
source_network: mainnet
Cloning accounts necessits to directly write arbitrary values to the blockchain states, so it is only possible on the chain-simulator
Getting Started
You have seen above some basic use-cases but MxOps has much more avaible features! Heads up to the documentation to get started! You will find tutorials, user documentation and examples 🚀
Contribution
This tool is an humble proposal by Catenscia to have a standard way of writing deployment files, integration tests and others. If you want this tool to improve, please tell us your issues and proposals!
And if you're motivated, we will always welcome hepling hands onboard :grin: !
Read the contribution guidelines for more :wink:
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mxops-3.0.2.tar.gz.
File metadata
- Download URL: mxops-3.0.2.tar.gz
- Upload date:
- Size: 96.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72f3afeb8a7979c1a76c0d09da016773cfa86354d82bc05ee721f96201852742
|
|
| MD5 |
94d3f3036f9411da33d2157d0a1de35d
|
|
| BLAKE2b-256 |
6a7ee87dd9dbb1cf26a9539ac14e8ce8fee05200fe634a25de14046641961b18
|
File details
Details for the file mxops-3.0.2-py3-none-any.whl.
File metadata
- Download URL: mxops-3.0.2-py3-none-any.whl
- Upload date:
- Size: 96.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e305c35936caa11c555f251a3a3b3d0161c0e44a9fc94166cfafaeb0f6034ff
|
|
| MD5 |
93aab31734959e0c5fbfcdb6032796b2
|
|
| BLAKE2b-256 |
31311b9481133486ee0fa883e49ed35fa2c4a256344cadfd8a79215a2543f7f2
|