Zecwallet-Python is a simple wrapper around the Zecwallet Command Line LightClient written in Python

Overview

Zecwallet-Python

A wrapper around Zecwallet Command Line LightClient, written in Python

Table of Contents

About

Zecwallet-Python is a simple wrapper around the Zecwallet Command Line LightClient written in Python, allowing Python programs to easily interact with a fully-capable, lightweight Zcash wallet. Using this package with Zecwallet, one can easily send and receive (shielded) transactions, encrypt and decrypt messages, fetch the current, market value of Zcash, and so much more. This package makes all of the Zecwallet functionality easily available in Python, and uses no dependencies outside of Zecwallet, and the Python Standard Library. Common use cases for this package include cryptocurrency trading bots, online payment processing for Zcash (including support for shielded transactions), and encrypted communication systems.

Please note that this project is independent from Zecwallet, and has not been audited for security and reliability. Use at your own risk.

Installation

To use Zecwallet-Python, you will need to install Zecwallet Command Line LightClient first. You can do this by downloading their latest release, unzipping it, and then making note of the filepath to the zecwallet-cli executable on your system.

Note: The latest version of Zecwallet to be tested for full compatibility with Zecwallet-Python is v1.7.7

Example installation for most Linux distributions:

wget https://github.com/adityapk00/zecwallet-light-cli/releases/download/v1.7.7/linux-zecwallet-cli-v1.7.7.zip -O /tmp/zecwallet.zip
unzip /tmp/zecwallet.zip -d /home/ubuntu/ZcashWallet

Next, you will need to install Zecwallet-Python, which can by done using pip:

pip3 install zecwallet

Alternatively, you may copy the wallet.py file from our GitHub repository, and import that locally into your project.

Usage

To interact with your Zcash wallet in Python, you must first import the Wallet class, then initialize it, providing the full filepath to the zecwallet-cli executable and your wallet decryption key. It is not required nor recommended to provide the wallet decryption key unless you need to take advantage of functionality that requires the key.

from zecwallet.wallet import Wallet
myWallet = Wallet('/path/to/zecwallet-cli' , 'MyDecryptionKey')

Once you've instantiated your wallet, you'll have access to all of the following functions. These functions accept (sometimes optional) arguments as indicated below, and return the same datatypes returned by the Zecwallet CLI (usually a dictionary or a list).

Note that, as a wrapper, the descriptions, functionality, and returned results are nearly identical to those provided by Zecwallet.
 |  addresses()
 |      List current addresses in the wallet
 |  
 |  balance()
 |      Show the current ZEC balance in the wallet
 |      
 |      Transparent and Shielded balances, along with the addresses they belong to are displayed
 |  
 |  clear()
 |      Clear the wallet state, rolling back the wallet to an empty state.
 |      
 |      This command will clear all notes, utxos and transactions from the wallet, setting up the wallet to be synced from scratch.
 |  
 |  communicate(command)
 |      Send a custom command directly to zecwallet
 |  
 |  decrypt()
 |      Completely remove wallet encryption, storing the wallet in plaintext on disk
 |      Note 1: This will decrypt the seed and the sapling and transparent private keys and store them on disk.
 |      Note 2: If you've forgotten the password, the only way to recover the wallet is to restore
 |      from the seed phrase.
 |  
 |  decryptMessage(encryptedMessageBase64)
 |      Attempt to decrypt a message with all the view keys in the wallet.
 |  
 |  defaultFee(blockHeight='')
 |      Returns the default fee in zats for outgoing transactions
 |  
 |  encrypt(WALLET_ENCRYPTION_KEY)
 |      Encrypt the wallet with a password
 |      Note 1: This will encrypt the seed and the sapling and transparent private keys.
 |      Use 'decrypt' to permanatly remove the encryption
 |      Note 2: If you forget the password, the only way to recover the wallet is to restore
 |      from the seed phrase.
 |  
 |  encryptMessage(address, memo)
 |      Encrypt a memo to be sent to a z-address offline
 |      
 |      NOTE: This command only returns the encrypted payload. It does not broadcast it. You are expected to send the encrypted payload to the recipient offline
 |  
 |  encryptionStatus()
 |      Check if the wallet is encrypted and if it is locked
 |  
 |  export()
 |      Export private key for an individual wallet addresses.
 |      Note: To backup the whole wallet, use the 'seed' command insted
 |  
 |  getOption(optionName)
 |      Get a wallet option
 |  
 |  height()
 |      Get the latest block height that the wallet is at.
 |  
 |  importKey(spendingOrViewingKey, birthday, noRescan=False)
 |      Import an external spending or viewing key into the wallet
 |      
 |      Birthday is the earliest block number that has transactions belonging to the imported key. Rescanning will start from this block. If not sure, you can specify '0', which will start rescanning from the first sapling block.
 |      Note that you can import only the full spending (private) key or the full viewing key.
 |  
 |  info()
 |      Get info about the lightwalletd we're connected to
 |  
 |  lastTXID()
 |      Show the latest TxId in the wallet
 |  
 |  list(allMemos=False)
 |      List all incoming and outgoing transactions from this wallet
 |      
 |      If you include the 'allmemos' argument, all memos are returned in their raw hex format
 |  
 |  newShieldedAddress()
 |      Create a new shielded address in this wallet
 |  
 |  newTransparentAddress()
 |      Create a new transparent address in this wallet
 |  
 |  notes(all=False)
 |      Show all sapling notes and utxos in this wallet
 |      
 |      If you supply the "all = True" argument, all previously spent sapling notes and spent utxos are also included
 |  
 |  quit()
 |      Save the wallet to disk and quit
 |      
 |      Destroys the wallet instance
 |  
 |  rescan()
 |      Rescan the wallet, rescanning all blocks for new transactions
 |      
 |      This command will download all blocks since the intial block again from the light client server
 |      and attempt to scan each block for transactions belonging to the wallet.
 |  
 |  save()
 |      Save the wallet to disk
 |      
 |      The wallet is saved to disk. The wallet is periodically saved to disk (and also saved upon exit)
 |      but you can use this command to explicitly save it to disk
 |  
 |  seed()
 |      Show the wallet's seed phrase
 |      
 |      Your wallet is entirely recoverable from the seed phrase. Please save it carefully and don't share it with anyone
 |  
 |  send(destinationAddress, amountInZatoshis, memo='')
 |      Send ZEC to a given address(es)
 |      
 |      NOTE: The fee required to send this transaction is additionally deducted from your balance.
 |  
 |  sendProgress()
 |      Get the progress of any send transactions that are currently computing
 |  
 |  setOption(optionName, optionValue)
 |      Set a wallet option
 |      
 |      List of available options:
 |      download_memos : none | wallet | all
 |  
 |  shield(optionalAddress='')
 |      Shield all your transparent funds
 |      
 |      NOTE: The fee required to send this transaction is additionally deducted from your balance.
 |  
 |  sync()
 |      Sync the light client with the server
 |  
 |  syncStatus()
 |      Get the sync status of the wallet
 |  
 |  zecPrice()
 |      Get the latest ZEC price in the wallet's currency (USD)

Examples

>>> from zecwallet.wallet import Wallet
>>> myWallet = Wallet('/home/ubuntu/ZcashWallet/zecwallet-cli' , 'decryptionKey')
>>> myWallet.zecPrice()
{'zec_price': 93.11905232470494, 'fetched_at': 1654321098, 'currency': 'USD'}
>>> myWallet.newShieldedAddress()
['zs1tnk62y6sn4mwrwyxrhjxjth6lzlsaggmnkEXAMPLEwsftk760yxrsme44kp997eps0w6z4g7vd9']
>>> myWallet.save()
{'result': 'success'}
>>> del myWallet
You might also like...
A command line application, written in Python, for interacting with Spotify.
A command line application, written in Python, for interacting with Spotify.

spotify-py-cli A command line application, written in Python, for interacting with Spotify. The primary purpose behind developing this app was to gain

Color preview command-line tool written in python
Color preview command-line tool written in python

Color preview command-line tool written in python

A collection of command-line interface games written in python
A collection of command-line interface games written in python

Command Line Interface Python Games Collection of some starter python game projects for beginners How to play these games Clone this repository git cl

Animefetch is an anime command-line system information tool written in python
Animefetch is an anime command-line system information tool written in python

Animefetch - v0.0.3 An anime command-line system information tool written in python. Description Animefetch is an anime command-line system informatio

An anime command-line system information tool written in python.
An anime command-line system information tool written in python.

Animefetch - v0.0.3 An anime command-line system information tool written in python. Description Animefetch is an anime command-line system informatio

split-manga-pages: a command line utility written in Python that converts your double-page layout manga to single-page layout.

split-manga-pages split-manga-pages is a command line utility written in Python that converts your double-page layout manga (or any images in double p

A simple command-line tracert implementation in Python 3 using ICMP packets
A simple command-line tracert implementation in Python 3 using ICMP packets

Traceroute A simple command-line tracert implementation in Python 3 using ICMP packets Details Traceroute is a networking tool designed for tracing th

A very simple and lightweight ToDo app using python that can be  used from the command line
A very simple and lightweight ToDo app using python that can be used from the command line

A very simple and lightweight ToDo app using python that can be used from the command line

Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)
Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)

Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)

Releases(v1.5.1)
Owner
Priveasy
The Official, Priveasy GitHub Account.
Priveasy
Customisable pharmacokinetic model accessible via bash CLI allowing for variable dose calculations as well as intravenous and subcutaneous administration calculations

Pharmacokinetic Modelling Group Project A PharmacoKinetic (PK) modelling function for analysis of injected solute dynamics over time, developed by Gro

1 Oct 24, 2021
A CLI messenger for the Signum community.

A CLI messenger for the Signum community. Built for people who like using terminal for their work and want to communicate with other users in the Signum community.

Jush 5 Mar 18, 2022
xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt.

xonsh xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt. The language is a superset of Python 3.6+ with additio

xonsh 6.7k Jan 08, 2023
A supercharged AWS command line interface (CLI).

SAWS Motivation AWS CLI Although the AWS CLI is a great resource to manage your AWS-powered services, it's tough to remember usage of: 70+ top-level c

Donne Martin 5.1k Jan 05, 2023
Commandline script to interact with volkswagencarnet library

volkswagencarnet-client command line script to interact with volkswagencarnet library Table of Contents General Info Setup Usage Example Acknowledgeme

3 Jan 19, 2022
A selfbot made with DPY, doesn't have much commands but there's some useful commands to use.

Phantom Selfbot A selfbot made in DPY, made by Zenith. How to use Add your token in token = 'YOUR-MOMS-TOKEN-HERE' Change the prefix in prefix = If

[Ͼ⁴] Ƶephyr 2 Dec 02, 2021
PdpCLI is a pandas DataFrame processing CLI tool which enables you to build a pandas pipeline from a configuration file.

PdpCLI Quick Links Introduction Installation Tutorial Basic Usage Data Reader / Writer Plugins Introduction PdpCLI is a pandas DataFrame processing CL

Yasuhiro Yamaguchi 15 Jan 07, 2022
Voidlx is a terminal cli apps launcher made in python

Voidlx is a terminal cli apps launcher made in python

2 Nov 13, 2021
Fylm is a wonderful automated command line app for organizing your film media.

Overview Fylm is a wonderful automated command line app for organizing your film media. You can pronounce it Film or File 'em, whichever you like! It

Brandon Shelley 30 Dec 05, 2022
Double Pendulum visualised with fetching system information in Python.

Show off your terminal, in style. A nice relaxing double pendulum simulation using ASCII, able to simulate multiple pendulums at once, and provide tra

Nekurone 62 Dec 14, 2022
A command line tool to hide and reveal information inside images (works for both PNGs and JPGs)

ImgReRite A command line tool to hide and reveal information inside images (work

Jigyasu 10 Jul 27, 2022
🌈 Beautify your command line interfaces.

Basics Install: pip install iridi Usage: import iridi # Create gradient text # iridi.print(message, colors, options) # Ask for input with gradient

Conrad Crawford 39 Oct 20, 2022
EODAG is a command line tool and a plugin-oriented Python framework for searching, aggregating results and downloading remote sensed images while offering a unified API for data access regardless of the data provider

EODAG (Earth Observation Data Access Gateway) is a command line tool and a plugin-oriented Python framework for searching, aggregating results and downloading remote sensed images while offering a un

CS GROUP 205 Jan 03, 2023
This is a simple Termo application in command line style

my-termo This is a simple Termo application in command line style. This app run a Linux crontab task every day to get a new word. Type termo in your t

Gustavo Soares 1 Feb 14, 2022
A dec-bin converter uses 2's complement.

2's Complement Dec-Bin Converter A dec-bin converter uses 2's complement. Visit my Medium Post. What is 2's complement? Two's complement is the most c

Khaw Chi Hun (Jacky) 9 Mar 01, 2022
A tool to manage the study of courses at the university.

todo-cli A tool to manage the study of courses at the university

Quentin 6 Aug 01, 2022
Python Processing Tool for Vasp Ipnut/Output

PivotPy A Python Processing Tool for Vasp Input/Output. A CLI is available in Powershell, see Vasp2Visual. stylea{text-decoration: none !important;c

Abdul Saboor 5 Aug 16, 2022
CLI tool to fix linked references for dates.

Fix Logseq dates This is a CLI tool to fix the date references following a change in date format since the current version (0.4.4) of Logseq does not

Isaac Dadzie 5 May 18, 2022
Convert markdown to HTML using the GitHub API and some additional tweaks with Python.

Convert markdown to HTML using the GitHub API and some additional tweaks with Python. Comes with full formula support and image compression.

phseiff 70 Dec 23, 2022
Wordle breaker: A CLI tool to help you solve Wordle

Wordle Breaker A CLI tool to help you solve Wordle I decided to code a solution

Alex 4 Apr 27, 2022