Created
April 19, 2019 13:57
-
-
Save nnamon/6c0536fc77b0a09a2f0ed9a1ae87040d to your computer and use it in GitHub Desktop.
Transfer by Percentage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from pyzil.zilliqa import chain | |
from pyzil.account import Account | |
from pyzil.zilliqa.units import Qa | |
import multiprocessing | |
from itertools import repeat | |
import argparse | |
PROCESS_SIZE = 80 | |
chain.set_active_chain(chain.MainNet) | |
def main(): | |
parser = argparse.ArgumentParser(description='Check the balance of multiple Zilliqa addresses.') | |
parser.add_argument('--privkeys', required=True, | |
help='Specify the file containing a list of private keys to send from.') | |
parser.add_argument('--receipient', required=True, help='The receiving address to send to.') | |
parser.add_argument('--percentage', required=True, help='The percentage to send.', type=float) | |
args = parser.parse_args() | |
mass_transfer(args.privkeys, args.receipient, args.percentage) | |
def mass_transfer(filename, receipient, percentage): | |
entries = open(filename).read().strip().split("\n") | |
pool = multiprocessing.Pool(PROCESS_SIZE) | |
results = pool.map(send, zip(entries, repeat(receipient), repeat(percentage))) | |
for privkey, result in zip(entries, results): | |
print(privkey, result) | |
def send(args): | |
privkey, receipient, percentage = args | |
account = Account(private_key=privkey) | |
min_gas = Qa(chain.active_chain.api.GetMinimumGasPrice()) | |
balance = Qa(account.get_balance_qa() - min_gas) | |
if balance <= 0: | |
return "Balance is zero." | |
amount = Qa(percentage * balance) | |
try: | |
result = account.transfer(receipient, amount) | |
return result | |
except ValueError: | |
return "Insufficient balance." | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment