iop-python


Nameiop-python JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-09-23 00:52:27
maintainerNone
docs_urlNone
authorEbuka Offor
requires_python>=3.8
licenseNone
keywords blockchain hydralegeder cryptography bip39 did
VCS
bugtrack_url
requirements maturin
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # **Hydra-Python-API** 
![Rust](./core/wHyd.jpg)


A Python API for interacting with the Hydra-Ledger blockchain, built using **Rust** and **WASM** through **Maturin**.

## **Project Structure**

```bash
hydra-python-api
├── Cargo.lock
├── Cargo.toml
├── pyproject.toml
├── src
│   ├── api.rs
│   ├── lib.rs
│   ├── types.rs
│   └── main.rs
├── scripts
│   └── index.py
├── core
├── requirements.txt
├── README.md
└── Dockerfile
```

## **Features**
- **Fast and Safe:** Leveraging Rust's low-level control for optimal performance and memory safety to prevent vulnerabilities.
- **Transaction Management:** Easily create and sign transactions on the Hydra-Ledger blockchain.
- **Seamless Integration:** Designed for easy integration into Python-based blockchain projects with minimal setup.
- **Error Handling:** Graceful management of transaction failures with Python exceptions propagated from the Rust layer.

---

## **Building From Source**

### Prerequisites
- **Rust**
- **Maturin**
- **Python 3.8+**

### Steps to Build

1. Enter the project base directory and activate the virtual environment:
   ```bash
   source env/bin/activate
   ```
2. Install the required Python packages:
   ```bash
   pip install -r requirements.txt
   ```
3. Build the Python wheel for the Rust code:
   ```bash
   maturin develop
   ```

---

## **Installation**

Alternatively, install the package directly from `pip`:

```bash
pip install iop-python
```

---

## **Usage**

This API provides a Python wrapper over several Rust functions that interact with the IOP SDK to manage operations on the Hydra-Ledger blockchain.

### **Initializing the SDK**

```python
import iop_python as sdk
iop = sdk.IopPython()
```

### **Examples of Available Methods**

#### **1. `get_hyd_vault`**  
Initializes a Hydra vault and returns account information as a JSON string. This information includes an encrypted seed and derived public key

```python
phrase = "blind market ability shoot topple..."
password = "horse-staple-battery"
network = "devnet"
account = 0
hyd_vault = iop.get_hyd_vault(phrase, password, network, account)
```

#### **2. `get_morpheus_vault`**  
Initializes a Morpheus vault and returns admin information as a JSON string.

```python
phrase = "blind market ability shoot topple..."
password = "horse-staple-battery"
morpheus_vault = iop.get_morpheus_vault(phrase, password)
```

#### **3. `generate_nonce`**  
Generates a random nonce and returns it as a string.

```python
nonce = iop.generate_nonce()
print(nonce)
>>> "uVIc9J4UjKx8tRs6HUEDQElksBCtF9VnHb439boVmB9cw"
```

#### **4. `generate_phrase`**  
Generates a random mnemonic phrase and returns it as a string.

```python
phrase = iop.generate_phrase()
print(phrase)
>>> "blind market ability shoot topple..."
```

#### **5. `generate_did_by_morpheus`**  
Generates a Decentralized Identifier (DID) using a Morpheus vault.

```python
password = "horse-staple-battery"
idx = 0
morpheus_vault = iop.get_morpheus_vault(phrase, password)
did = iop.generate_did_by_morpheus(morpheus_vault, password, idx)
print(did)
>>> did:morpheus:ezbeWGSY2dqcUBqT8K7R14xr
```

#### **6. `sign_witness_statement`**  
Signs a witness statement using a Hydra vault.

```python
network = "devnet"
account = 0
idx = 0
vault = iop.get_hyd_vault(phrase, password, network, account)

statement = {
    "name": "Buki Offor",
    "street": "Brick City Estate",
    "dob": "01/03/1980",
    "city": "Abuja",
    "country": "Nigeria",
    "zipcode": "987554",
}

signed_statement = iop.sign_witness_statement(vault, password, statement, idx)
print(json.loads(signed_statement))
```

#### **7. `generate_transaction`**  
Builds a transaction to transfer tokens using a Hydra vault.

```python
receiver = "taQb8gfnetDt6KtRH3n11M3APMzrWiBhhg"
amount = "100"
nonce = 1
account = 0
idx = 0
network = "testnet"
fee = 10000
comment = "sending money"

tx_data = iop.generate_transaction(vault, receiver, amount, nonce, password, account, idx, network, comment, fee)
```

#### **8. `verify_signed_statement`**  
Verifies the signature of a signed witness statement.

```python
signed_statement = {
    "signature": "00987890098776556667788976676787655",
    "claim": {
        "subject": "did:morpheus:ezbeWGSY2dqcUBqT8K7R14xr",
        "content": {}
    }
}
result = iop.verify_signed_statement(signed_statement)
print(result)
>>> True
```

#### **9. `validate_statement_with_did`**  
Validates a signed witness statement using a DID document.

#### **10. `sign_did_statement`**  
Signs a data payload using a Morpheus vault, returning the signed data and corresponding public key.

---

# **Exceptions**
You can catch exceptions and log helpful messages during debugging.
```python
import iop_python as sdk
iop = sdk.IopPython()

try:
    phrase = iop.generate_phrase()
    vault = iop.get_hyd_vault(phrase, "password",'mainnet',0)
    address = iop.get_wallet_address(vault,9,0,'mainnet')
    print(address)
except Exception as err:
    if type(err).__name__ == 'PyIopError':
        print(err.args[0].message)
    else:
        print(err)
```



These functions are intended to be used as Python module functions and can be easily integrated into your Hydra-Ledger blockchain projects.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "iop-python",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Buki <ebuka2264@yahoo.com>,  Odurukwe Stella <odurukwestella5@gmail.com>",
    "keywords": "blockchain, hydralegeder, cryptography, bip39, did",
    "author": "Ebuka Offor",
    "author_email": "ebuka2264@yahoo.com",
    "download_url": "https://files.pythonhosted.org/packages/08/82/45b5106eda54b1b32417fd45f40d502ce8bc1b09a435f5e8df0afecf12ed/iop_python-0.2.0.tar.gz",
    "platform": null,
    "description": "# **Hydra-Python-API** \n![Rust](./core/wHyd.jpg)\n\n\nA Python API for interacting with the Hydra-Ledger blockchain, built using **Rust** and **WASM** through **Maturin**.\n\n## **Project Structure**\n\n```bash\nhydra-python-api\n\u251c\u2500\u2500 Cargo.lock\n\u251c\u2500\u2500 Cargo.toml\n\u251c\u2500\u2500 pyproject.toml\n\u251c\u2500\u2500 src\n\u2502   \u251c\u2500\u2500 api.rs\n\u2502   \u251c\u2500\u2500 lib.rs\n\u2502   \u251c\u2500\u2500 types.rs\n\u2502   \u2514\u2500\u2500 main.rs\n\u251c\u2500\u2500 scripts\n\u2502   \u2514\u2500\u2500 index.py\n\u251c\u2500\u2500 core\n\u251c\u2500\u2500 requirements.txt\n\u251c\u2500\u2500 README.md\n\u2514\u2500\u2500 Dockerfile\n```\n\n## **Features**\n- **Fast and Safe:** Leveraging Rust's low-level control for optimal performance and memory safety to prevent vulnerabilities.\n- **Transaction Management:** Easily create and sign transactions on the Hydra-Ledger blockchain.\n- **Seamless Integration:** Designed for easy integration into Python-based blockchain projects with minimal setup.\n- **Error Handling:** Graceful management of transaction failures with Python exceptions propagated from the Rust layer.\n\n---\n\n## **Building From Source**\n\n### Prerequisites\n- **Rust**\n- **Maturin**\n- **Python 3.8+**\n\n### Steps to Build\n\n1. Enter the project base directory and activate the virtual environment:\n   ```bash\n   source env/bin/activate\n   ```\n2. Install the required Python packages:\n   ```bash\n   pip install -r requirements.txt\n   ```\n3. Build the Python wheel for the Rust code:\n   ```bash\n   maturin develop\n   ```\n\n---\n\n## **Installation**\n\nAlternatively, install the package directly from `pip`:\n\n```bash\npip install iop-python\n```\n\n---\n\n## **Usage**\n\nThis API provides a Python wrapper over several Rust functions that interact with the IOP SDK to manage operations on the Hydra-Ledger blockchain.\n\n### **Initializing the SDK**\n\n```python\nimport iop_python as sdk\niop = sdk.IopPython()\n```\n\n### **Examples of Available Methods**\n\n#### **1. `get_hyd_vault`**  \nInitializes a Hydra vault and returns account information as a JSON string. This information includes an encrypted seed and derived public key\n\n```python\nphrase = \"blind market ability shoot topple...\"\npassword = \"horse-staple-battery\"\nnetwork = \"devnet\"\naccount = 0\nhyd_vault = iop.get_hyd_vault(phrase, password, network, account)\n```\n\n#### **2. `get_morpheus_vault`**  \nInitializes a Morpheus vault and returns admin information as a JSON string.\n\n```python\nphrase = \"blind market ability shoot topple...\"\npassword = \"horse-staple-battery\"\nmorpheus_vault = iop.get_morpheus_vault(phrase, password)\n```\n\n#### **3. `generate_nonce`**  \nGenerates a random nonce and returns it as a string.\n\n```python\nnonce = iop.generate_nonce()\nprint(nonce)\n>>> \"uVIc9J4UjKx8tRs6HUEDQElksBCtF9VnHb439boVmB9cw\"\n```\n\n#### **4. `generate_phrase`**  \nGenerates a random mnemonic phrase and returns it as a string.\n\n```python\nphrase = iop.generate_phrase()\nprint(phrase)\n>>> \"blind market ability shoot topple...\"\n```\n\n#### **5. `generate_did_by_morpheus`**  \nGenerates a Decentralized Identifier (DID) using a Morpheus vault.\n\n```python\npassword = \"horse-staple-battery\"\nidx = 0\nmorpheus_vault = iop.get_morpheus_vault(phrase, password)\ndid = iop.generate_did_by_morpheus(morpheus_vault, password, idx)\nprint(did)\n>>> did:morpheus:ezbeWGSY2dqcUBqT8K7R14xr\n```\n\n#### **6. `sign_witness_statement`**  \nSigns a witness statement using a Hydra vault.\n\n```python\nnetwork = \"devnet\"\naccount = 0\nidx = 0\nvault = iop.get_hyd_vault(phrase, password, network, account)\n\nstatement = {\n    \"name\": \"Buki Offor\",\n    \"street\": \"Brick City Estate\",\n    \"dob\": \"01/03/1980\",\n    \"city\": \"Abuja\",\n    \"country\": \"Nigeria\",\n    \"zipcode\": \"987554\",\n}\n\nsigned_statement = iop.sign_witness_statement(vault, password, statement, idx)\nprint(json.loads(signed_statement))\n```\n\n#### **7. `generate_transaction`**  \nBuilds a transaction to transfer tokens using a Hydra vault.\n\n```python\nreceiver = \"taQb8gfnetDt6KtRH3n11M3APMzrWiBhhg\"\namount = \"100\"\nnonce = 1\naccount = 0\nidx = 0\nnetwork = \"testnet\"\nfee = 10000\ncomment = \"sending money\"\n\ntx_data = iop.generate_transaction(vault, receiver, amount, nonce, password, account, idx, network, comment, fee)\n```\n\n#### **8. `verify_signed_statement`**  \nVerifies the signature of a signed witness statement.\n\n```python\nsigned_statement = {\n    \"signature\": \"00987890098776556667788976676787655\",\n    \"claim\": {\n        \"subject\": \"did:morpheus:ezbeWGSY2dqcUBqT8K7R14xr\",\n        \"content\": {}\n    }\n}\nresult = iop.verify_signed_statement(signed_statement)\nprint(result)\n>>> True\n```\n\n#### **9. `validate_statement_with_did`**  \nValidates a signed witness statement using a DID document.\n\n#### **10. `sign_did_statement`**  \nSigns a data payload using a Morpheus vault, returning the signed data and corresponding public key.\n\n---\n\n# **Exceptions**\nYou can catch exceptions and log helpful messages during debugging.\n```python\nimport iop_python as sdk\niop = sdk.IopPython()\n\ntry:\n    phrase = iop.generate_phrase()\n    vault = iop.get_hyd_vault(phrase, \"password\",'mainnet',0)\n    address = iop.get_wallet_address(vault,9,0,'mainnet')\n    print(address)\nexcept Exception as err:\n    if type(err).__name__ == 'PyIopError':\n        print(err.args[0].message)\n    else:\n        print(err)\n```\n\n\n\nThese functions are intended to be used as Python module functions and can be easily integrated into your Hydra-Ledger blockchain projects.\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.2.0",
    "project_urls": {
        "Homepage": "https://github.com/BukiOffor/hydra-python-api",
        "Issues": "https://github.com/BukiOffor/hydra-python-api/issues"
    },
    "split_keywords": [
        "blockchain",
        " hydralegeder",
        " cryptography",
        " bip39",
        " did"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "38decef6f14b2d1a6e3688b6f0eb5eb39780efcd069c938dfaaf393e8854cdf6",
                "md5": "f12af394a54704d66328177f4e1ac2da",
                "sha256": "48cb56f532d28c64d9f58abeb4edf5183e179c9956e7601b05b431ee896bd803"
            },
            "downloads": -1,
            "filename": "iop_python-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f12af394a54704d66328177f4e1ac2da",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 2067779,
            "upload_time": "2024-09-23T00:52:24",
            "upload_time_iso_8601": "2024-09-23T00:52:24.536075Z",
            "url": "https://files.pythonhosted.org/packages/38/de/cef6f14b2d1a6e3688b6f0eb5eb39780efcd069c938dfaaf393e8854cdf6/iop_python-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "088245b5106eda54b1b32417fd45f40d502ce8bc1b09a435f5e8df0afecf12ed",
                "md5": "7da064cb2edf7b4e4a9fd6368b71936e",
                "sha256": "ce23088fe6a3cdf2de4d568a486c7828cae49bc71a2e1fbc4a36e07c73725659"
            },
            "downloads": -1,
            "filename": "iop_python-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7da064cb2edf7b4e4a9fd6368b71936e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 22155,
            "upload_time": "2024-09-23T00:52:27",
            "upload_time_iso_8601": "2024-09-23T00:52:27.880073Z",
            "url": "https://files.pythonhosted.org/packages/08/82/45b5106eda54b1b32417fd45f40d502ce8bc1b09a435f5e8df0afecf12ed/iop_python-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-23 00:52:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "BukiOffor",
    "github_project": "hydra-python-api",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "maturin",
            "specs": []
        }
    ],
    "lcname": "iop-python"
}
        
Elapsed time: 1.88967s