https://github.com/kevinheavey/pyonear
Python binding to the NEAR Rust API crates.
https://github.com/kevinheavey/pyonear
blockchain cryptocurrency near-protocol pyo3 python rust
Last synced: 3 months ago
JSON representation
Python binding to the NEAR Rust API crates.
- Host: GitHub
- URL: https://github.com/kevinheavey/pyonear
- Owner: kevinheavey
- License: apache-2.0
- Created: 2022-09-13T16:46:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-07-09T20:57:19.000Z (almost 2 years ago)
- Last Synced: 2025-01-13T21:02:41.665Z (4 months ago)
- Topics: blockchain, cryptocurrency, near-protocol, pyo3, python, rust
- Language: Rust
- Homepage: https://kevinheavey.github.io/pyonear
- Size: 2.88 MB
- Stars: 10
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
---
[](https://github.com/kevinheavey/pyonear/actions/workflows/build.yml)
[](https://badge.fury.io/py/pyonear)
[](https://github.com/kevinheavey/pyonear/blob/maim/LICENSE)
[](https://github.com/psf/black)# Pyonear
`pyonear` is a Python binding to the NEAR Rust API crates. It provides
fast and robust wrappers for building, signing and (de)serializing transactions.
The wrapped types come from the [near-primitives](https://crates.io/crates/near-primitives),
[near-crypto](https://crates.io/crates/near-crypto) and
[near-vm-errors](https://crates.io/crates/near-vm-errors) crates.[Read the documentation](https://kevinheavey.github.io/pyonear)
## Installation
```
pip install pyonear
```## Example usage
```python
>>> from pyonear.crypto import InMemorySigner, KeyType
>>> from pyonear.account_id import AccountId
>>> from pyonear.crypto_hash import CryptoHash
>>> from pyonear.transaction import Transaction, TransferAction
>>> signer = InMemorySigner.from_random(AccountId("alice.near"), KeyType.ED25519)
>>> signer_id = AccountId("alice.near")
>>> signer = InMemorySigner.from_random(signer_id, KeyType.ED25519)
>>> public_key = signer.public_key
>>> nonce = 0
>>> receiver_id = AccountId("bob.near")
>>> block_hash = CryptoHash.default() # replace with a real blockhash
>>> actions = [TransferAction(1_000_000)]
>>> transaction = Transaction(signer_id, public_key, nonce, receiver_id, block_hash, actions).sign(signer)
>>> transaction.to_base64()
'CgAAAGFsaWNlLm5lYXIA++M56uPzUi8ezkHqJBLjc7ZCzJk88zoIpF5XkjUM13kAAAAAAAAAAAgAAABib2IubmVhcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAANAQg8AAAAAAAAAAAAAAAAAALK42W7t/vpUmDAgtChTUWEVvSE3cQZWRla8spN6KfNv9fWn16klROeblzH480b0a+NSL16YfnvWLnd2C9KLTQk='
```## Development
Pre-requisites: Rust >= 1.65, Python >= 3.7, Poetry >= 1.1.14
### Steps
1. `poetry install` (one time only)
2. `poetry shell`
3. `maturin develop`
4. `pytest`
5. `make lint`