Skip to main content

Pure Python NeoFS SDK and CLI with Neo X EVM Support

Project description

NeoFS Python SDK

A pure Python gRPC client and CLI for the NeoFS distributed storage network, with Neo X EVM wallet support for funding.

PyPI version Python 3.11+ License: Apache 2.0

🚀 What's New in v0.2.0

Neo X EVM Funding Support

Following the Neo team's announcement, NeoFS deposits can now be initiated from Neo X (EVM-compatible wallets like MetaMask). This SDK is the first Python library to support this feature.

from neofs import NeoFSClient

client = NeoFSClient("st1.t5.fs.neo.org:8082")
client.load_wallet("wallet.json", "password")

# Fund NeoFS from your MetaMask/Neo X wallet
result = client.fund_from_evm(
    evm_private_key="0x...",
    amount_gas=10.0,
    network="testnet",
)
print(f"Funded with tx: {result.tx_hash}")

This bridges GAS from Neo X to N3 via the neofs-fund-proxy-evm contracts and credits it to your NeoFS account.

ACL Management

# Get container ACL info
acl = client.get_container_acl(container_id)
print(acl["permissions"]["type"])  # "private", "public-read", etc.

# Create container with custom ACL
cid = client.create_container_with_acl("my-bucket", acl_value=0x1FFFFFFF)

Install

pip install neofs-python-sdk

For EVM funding support (requires web3.py):

pip install neofs-python-sdk[evm]

Or set up from source, see Setup below.

Quick Start

Basic Operations

from neofs import NeoFSClient

client = NeoFSClient(endpoint="st1.t5.fs.neo.org:8082")
client.load_wallet("wallet.json", "your_password")

# Create a container
cid = client.create_container("my-bucket")

# Upload a file
oid = client.put_object(cid, "file.jpg")

# Download a file
client.get_object(cid, oid, "downloaded.jpg")

# List objects
objects = client.list_objects(cid)

# Delete an object
client.delete_object(cid, oid)

Neo X EVM Funding

from neofs import NeoFSClient

# Load your NeoFS wallet (to get the beneficiary address)
client = NeoFSClient(endpoint="st1.t5.fs.neo.org:8082")
client.load_wallet("wallet.json", "password")

# Fund from MetaMask/Neo X
result = client.fund_from_evm(
    evm_private_key="0xYOUR_PRIVATE_KEY",
    amount_gas=10.0,  # GAS to bridge
    network="testnet",  # or "mainnet"
)

print(f"Transaction: {result.tx_hash}")
print(f"Beneficiary: {result.beneficiary}")

ACL Management

# View container permissions
acl = client.get_container_acl(container_id)
print(f"ACL Type: {acl['permissions']['type']}")

# Create container with public-read ACL
cid = client.create_container_with_acl("public-bucket", acl_value=0x0FFFFFFF)

CLI Usage

# Create a container
neofs create-container wallet.json password my_container

# Create with custom ACL
neofs create-container wallet.json password my_container --acl 0x0FFFFFFF

# Upload a file
neofs upload file.jpg container_id wallet.json password

# Download a file
neofs download object_id container_id output.jpg wallet.json password

# Delete an object
neofs delete object_id container_id wallet.json password

# List objects in container
neofs list-objects container_id wallet.json password

# View container ACL
neofs get-acl container_id wallet.json password

# Fund NeoFS from Neo X EVM wallet
neofs fund-from-evm 0xYOUR_KEY 10.0 wallet.json password --network testnet

Architecture

This SDK interacts directly with NeoFS routing nodes via native gRPC streams. It relies on neo-mamba for N3 SECP256R1 cryptographic signing and NEP-6 wallet resolution, avoiding legacy C++ shared bindings.

To ensure parity with current network upgrades, the stubs map dynamically to the v2.21.0 API specification via generate_protos.py.

Neo X EVM Integration

The EVM funding module uses the official neofs-fund-proxy-evm contracts:

  1. Token Bridge: Bridges GAS from Neo X to N3
  2. Message Bridge: Sends executable message to call fundNeoFS() on N3
  3. N3 Proxy: Claims the bridged GAS and forwards to NeoFS contract

Requirements

  • Python 3.11+
  • Git (for cloning upstream protobuf contracts)
  • web3.py (optional, for EVM funding)

Setup

Initialize your environment and compile the bindings:

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .
python generate_protos.py

API Reference

NeoFSClient

Method Description
__init__(endpoint, is_secure) Initialize with NeoFS endpoint
load_wallet(path, password) Load NEP-6 wallet
create_container(name) Create a new container
create_container_with_acl(name, acl_value) Create container with custom ACL
put_object(container_id, file_path) Upload a file
get_object(container_id, object_id, out_path) Download a file
delete_object(container_id, object_id) Delete an object
list_objects(container_id) List objects in container
get_container_acl(container_id) Get container ACL info
fund_from_evm(private_key, amount_gas, network) Fund from EVM wallet

EVMFundClient

Method Description
__init__(network, proxy_address, rpc_url) Initialize EVM funding client
fund_neofs(private_key, beneficiary, amount_gas) Fund NeoFS from EVM
get_funding_status(request_id) Check funding status

Testing

pip install pytest
pytest tests/

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neofs_python_sdk-0.2.0.tar.gz (61.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neofs_python_sdk-0.2.0-py3-none-any.whl (94.5 kB view details)

Uploaded Python 3

File details

Details for the file neofs_python_sdk-0.2.0.tar.gz.

File metadata

  • Download URL: neofs_python_sdk-0.2.0.tar.gz
  • Upload date:
  • Size: 61.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for neofs_python_sdk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a334162f1770c2cb60309f0100cf4ee7bbf34a34f42a876a99a89fdcf3da04d4
MD5 212471f4f01b97b0e934c0b46dedf3c4
BLAKE2b-256 730580b80dc2a1bcec78382e7182aad0b66b7cf3263c479ac26887f640f5c47e

See more details on using hashes here.

File details

Details for the file neofs_python_sdk-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for neofs_python_sdk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17fdb192020b4b7a941cf3408c4eae630f66b0f4972d865e0358cf2d0b9f4952
MD5 0df85a906dea57dd287b2159461e7870
BLAKE2b-256 4641404cac3503c6aa39e2a0927010b28c45334872718b6cbfadd542e9f97953

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page