Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ctrl-Felix/mospy
Extendable python library for the cosmos ecosystem.
https://github.com/ctrl-Felix/mospy
blockchain cosmos evmos mospy osmosis
Last synced: 3 months ago
JSON representation
Extendable python library for the cosmos ecosystem.
- Host: GitHub
- URL: https://github.com/ctrl-Felix/mospy
- Owner: ctrl-Felix
- Created: 2022-07-22T17:02:05.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-02-15T19:09:15.000Z (12 months ago)
- Last Synced: 2024-03-11T10:21:17.930Z (11 months ago)
- Topics: blockchain, cosmos, evmos, mospy, osmosis
- Language: Python
- Homepage: https://mospy.ctrl-felix.de/
- Size: 898 KB
- Stars: 27
- Watchers: 2
- Forks: 14
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-cosmos - mospy - A Python library to create and sign transactions for Cosmos SDK based coins. (Client Libraries / Python)
README
# MosPy
MosPy is a fork of the cosmospy library and aims to be a versatile transaction signing library for the whole cosmos ecosystem.
It depends [cosmospy-protobuf](https://github.com/ctrl-Felix/cosmospy-protobuf) for the protos. Through this library you also can add your own transaction types and sign them through Mospy.## Documentation
A documentation with according examples can be found at https://mospy.ctrl-felix.de
## Get Started
You can find a tutorial series on medium: https://medium.com/@ctrl-felix/mospy-tutorial-1-the-basics-95ec757047dc
## Installation
Mospy is available through (pypi)[https://pypi.org/project/mospy-wallet]
`python -m pip install mospy-wallet`
_Note: The package name in python is mospy even if it is called mospy-wallet on pypi as mospy already existed_
## Quickstart
More examples on: https://mospy.ctrl-felix.de/examples/
```python
import httpx # optional
from mospy import Account, Transactionaccount = Account(
seed_phrase="law grab theory better athlete submit awkward hawk state wedding wave monkey audit blame fury wood tag rent furnace exotic jeans drift destroy style",
address_index=12
)tx = Transaction(
account=account,
gas=1000,
)
tx.set_fee(
amount=100,
denom="uatom"
)
# Add a transfer message to the transaction (multiple messages can be added)
tx.add_msg(
tx_type='transfer',
sender=account,
receipient="cosmos1tkv9rquxr88r7snrg42kxdj9gsnfxxg028kuh9",
amount=1000,
denom="uatom"
)# Sign and encode transaction to submit it to the network manually
# REST endpoint (RPC or API)
tx_bytes = tx.get_tx_bytes_as_string()# Submit the transaction through the Tendermint RPC
rpc_url = "https://rpc.cosmos.network/"
pushable_tx = json.dumps(
{
"jsonrpc": "2.0",
"id": 1,
"method": "broadcast_tx_sync", # Available methods: broadcast_tx_sync, broadcast_tx_async, broadcast_tx_commit
"params": {
"tx": tx_bytes
}
}
)
r = httpx.post(rpc_url, data=pushable_tx)# Submit the transaction through the Cosmos REST API
rpc_api = "https://api.cosmos.network/cosmos/tx/v1beta1/txs"
pushable_tx = json.dumps(
{
"tx_bytes": tx_bytes,
"mode": "BROADCAST_MODE_SYNC" # Available modes: BROADCAST_MODE_SYNC, BROADCAST_MODE_ASYNC, BROADCAST_MODE_BLOCK
}
)
r = httpx.post(rpc_api, data=pushable_tx)
```
## Different transaction typesMospy is created to support every possible external transaction type.
To make it easier some transaction types are built in and can be added directly to a transaction object.
But it's not difficult to add your own transaction types! More about transaction types can be found in the docs.