Skip to content

Repository files navigation

Python Library for VIZ

Tests StatusDocumentation Status

Usage examples

Award someone

fromvizimportClientnode="wss://node.viz.cx/ws"viz=Client(node=node, keys=["5...your_private_regular_key..."])
initiator="your_account"receiver="id"percent=10.5# 10.5%viz.award(receiver, percent, "with love", None, initiator)

Award someone with fixed reward

fromvizimportClientnode="wss://node.viz.cx/ws"viz=Client(node=node, keys=["5...your_private_regular_key..."])
initiator="your_account"receiver="id"reward_amount=3.5# "3.50 VIZ"max_energy=30# 30%viz.fixed_award(receiver, reward_amount, max_energy, "with fixed reward", None, initiator)

Send a custom operation

fromvizimportClientnode="wss://node.viz.cx/ws"viz=Client(node=node, keys=["5...your_private_regular_key..."])
account="your_account"required_regular_auths= [account]
protocol="color.place"custom_json= {"x": 35, "y": 70, "color": "#e50000"}
viz.custom(protocol, custom_json, None, required_regular_auths)

Prediction market operations (HF14 / Onix)

All 23 broadcastable pm_* operations are available as serializers in vizbase.operations. Build the operation and sign it with finalizeOp (the same low-level path the built-in helpers use), passing the authority the op requires — active for most PM ops, regular for pm_dispute_vote:

fromvizimportClientfromvizbaseimportoperationsnode="wss://node.viz.cx/ws"viz=Client(node=node, keys=["5...your_private_active_key..."])
account="your_account"# Place a bet: binary market -> side 0/1, outcome_index -1; multi -> side -1, outcome_index 0..N-1bet=operations.Pm_place_bet(
account=account,
market_id=42,
side=1,
outcome_index=-1,
amount="1.500 VIZ",
min_tokens=0, # slippage floor (0 = none)mode=0, # 0 instant, 1 batch
)
viz.finalizeOp(bet, account, "active")

Chain governance uses the versioned variant: versioned_chain_properties_update serializes variant 3 (chain_properties_hf9), 4 (chain_properties_hf13) or 5 (chain_properties_pm, the HF14 PM params) automatically from the fields you pass.

Get data from custom protocol

fromvizimportClientfromviz.accountimportAccountfromviz.blockimportBlockfromviz.instanceimportset_shared_blockchain_instanceimportjsonviz=Client("wss://node.viz.cx/ws")
set_shared_blockchain_instance(viz)
account_name="id"protocol="V"account=Account(account_name, protocol=protocol)
counter_inside_protocol=account["custom_sequence"]
last_used_in_block=account["custom_sequence_block_num"]
block=Block(last_used_in_block)
fortxinblock["transactions"]:
forop_type, op_dataintx["operations"]:
ifop_type!="custom":
continueifop_data.get("id") !=protocol:
continueifaccount_namenotinop_data.get("required_regular_auths", []):
continueraw_json=op_data.get("json")
try:
json_from_protocol=json.loads(raw_json) ifraw_jsonelseNoneexceptjson.JSONDecodeError:
json_from_protocol=Noneprint(json_from_protocol)

Any direct RPC call

fromvizimportClientviz=Client("wss://node.viz.cx/ws")
viz.rpc.get_dynamic_global_properties()

Installation

Current published version could be installed via

pip install viz-python-lib

Manual installation:

Install poetry

cd viz-python-lib/
poetry install

Development

Dependencies

Linux dependencies

sudo apt-get install libffi-dev libssl-dev python3-dev

Windows dependencies

Install regular version of OpenSSL (not Light) suitable for your core processor.

MacOS dependencies

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries. This means that you will need to install and export some OpenSSL settings yourself, before you can install viz-python-lib:

brew install openssl

and then use the following commands:

export CFLAGS="-I$(brew --prefix openssl)/include"export LDFLAGS="-L$(brew --prefix openssl)/lib"

About

VIZ python library

Topics

Resources

Stars

6 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages