コード例 #1
0
def CreateGift(PINcode, value, time):
    (Caddress, abiPH, bytePH) = dit.contract_info("Payment_Handler")
    if Caddress == None:
        return {'status': -2}
    person = dit.get_adress(Key)
    try:
        contract_by_address = web3.eth.contract(address=Caddress,
                                                abi=abiPH,
                                                bytecode=bytePH)
    except:
        return {'status': -3}

    tx_wo_sign = contract_by_address.functions.GiftCreate(
        time).buildTransaction({
            'from':
            person.address,
            'value':
            value,
            'nonce':
            web3.eth.getTransactionCount(person.address),
            'gasPrice':
            dit.get_gas_price()
        })

    try:
        signed_tx = person.signTransaction(tx_wo_sign)
        txId = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
    except:
        {'status': -4}
    TX = web3.eth.waitForTransactionReceipt(txId)
    return TX
コード例 #2
0
def ApproveRequest(person, addres):
    (Caddress, abiKYC, byteKYC) = dit.contract_info('KYC_Registrar')

    if Caddress == None:
        return {'status': -2}
    try:
        contract_by_address =  web3.eth.contract(address=Caddress, abi=abiKYC, bytecode=byteKYC)
    except:
        return {'status': -3}


    statusA = contract_by_address.functions.GetPersonInfoAR(addres).call()
    statusD = contract_by_address.functions.GetPersonInfoDR(addres).call()

    if not (statusA or statusD):
        return {'status': -1}

    tx_wo_sign = contract_by_address.functions.Confirm(addres).buildTransaction({
        'from': person.address,
        'nonce': web3.eth.getTransactionCount(person.address),
        'gas': 8000000,
        'gasPrice': dit.get_gas_price()
    })

    signed_tx = person.signTransaction(tx_wo_sign)
    txId = web3.eth.sendRawTransaction(signed_tx.rawTransaction)

    TX = web3.eth.waitForTransactionReceipt(txId)
    return TX
コード例 #3
0
def AddNumberRequest(PINcode, Key, PhoneNum):
    (Caddress, abiKYC, byteKYC) = dit.contract_info("KYC_Registrar")
    if Caddress == None:
        return {'status': -2}
    person = dit.get_adress(Key)
    try:
        contract_by_address = web3.eth.contract(address=Caddress,
                                                abi=abiKYC,
                                                bytecode=byteKYC)
        status = contract_by_address.functions.GetPersonInfoAR(
            person.address).call()
    except:
        return {'status': -3}

    if status:
        return {'status': -1}

    tx_wo_sign = contract_by_address.functions.RequestAddNumber(
        PhoneNum).buildTransaction({
            'from':
            person.address,
            'nonce':
            web3.eth.getTransactionCount(person.address),
            'gasPrice':
            dit.get_gas_price()
        })
    try:
        signed_tx = person.signTransaction(tx_wo_sign)
        txId = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
    except:
        return {'status': -4}
    TX = web3.eth.waitForTransactionReceipt(txId)
    return TX
コード例 #4
0
def PrintBalance(privateKey):
    adress = dit.get_adress(privateKey)
    balance = [0, 0]
    balance[0], balance[1] = dit.balance_all(
        web3.eth.getBalance(adress.address))
    if balance[0] == '':
        balance[0] = 0
    print("Your balance is {} {}".format(balance[0], balance[1]))
コード例 #5
0
def sendFunds(pinCode, phoneNum, value):
    keyFrom = (GenerateKey(pinCode))
    person = dit.get_adress(keyFrom)
    if (web3.eth.getBalance(person.address) < value):
        print("No funds to send the payment")
        return False
    if (not checkNumber(phoneNum)):
        print("Incorrect phone number")
        return False
    to = GetAddressWithPhone(phoneNum)
    if (len(to) == 0 or to == "0x0000000000000000000000000000000000000000"):
        print("No account with the phone number", phoneNum)
        return False
    dit.send_to(person, to, value, print_info=True)
コード例 #6
0
def ChangeOwner(person, new_owner):
    (Caddress, abi, byte) = dit.contract_info("KYC_Registrar")
    contract_by_address = web3.eth.contract(address = Caddress, abi=abi, bytecode=byte)
    new_address = web3.toChecksumAddress(new_owner[2:])
    if(GetOwner() != person.address):
        return {'status': -1}

    else:
        tx_wo_sign = contract_by_address.functions.RedactOwner(new_address).buildTransaction({
    		'from': person.address,
    		'nonce': web3.eth.getTransactionCount(person.address),
    		'gas': 8000000,
    		'gasPrice': dit.get_gas_price()
        })
        signed_tx = senderAddress.signTransaction(tx_wo_sign)

        txId = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
        TX = web3.eth.waitForTransactionReceipt(txId)
        return TX
コード例 #7
0
def GetListAdds():
    (Caddress, abiKYC, byteKYC) = dit.contract_info('KYC_Registrar')

    if Caddress == None:
        return {'status': -2}
    try:
        contract_by_address =  web3.eth.contract(address=Caddress, abi=abiKYC, bytecode=byteKYC)
    except:
        return {'status': -3}
    adds = contract_by_address.events.RegistrationRequest().createFilter(fromBlock='latest').get_new_entries()

    return adds
コード例 #8
0
def CancelRec(Key):
    res = ""
    (Caddress, abiKYC, byteKYC) = dit.contract_info("KYC_Registrar")
    if Caddress == None:
        return ({'status': -2}, res)
    person = GetAdress(Key)
    try:
        contract_by_address = web3.eth.contract(address=Caddress,
                                                abi=abiKYC,
                                                bytecode=byteKYC)
        status1 = contract_by_address.functions.GetPersonInfoAR(
            person.address).call()
        status2 = contract_by_address.functions.GetPersonInfoDR(
            person.address).call()
    except:
        return ({'status': -3}, res)

    if not (status1 or status2):
        return ({'status': -1}, res)
    if status1:
        res = "Registration"
    else:
        res = "Unregistration"

    tx_wo_sign = contract_by_address.functions.Cancel().buildTransaction({
        'from':
        person.address,
        'nonce':
        web3.eth.getTransactionCount(person.address),
        'gasPrice':
        dit.get_gas_price()
    })
    try:
        signed_tx = person.signTransaction(tx_wo_sign)
        txId = web3.eth.sendRawTransaction(signed_tx.rawTransaction)
    except:
        return ({'status': -4}, res)
    TX = web3.eth.waitForTransactionReceipt(txId)

    return (TX, res)
コード例 #9
0
def AddresByNumber(PhoneNum):
    (Caddress, abiKYC, byteKYC) = dit.contract_info('KYC_Registrar')
    if Caddress == None:
        return {'status': -2}
    try:
        contract_by_address =  web3.eth.contract(address=Caddress, abi=abiKYC, bytecode=byteKYC)
    except:
        return {'status': -3}

    TX = {'status': 1, 'result': ''}
    TX['result'] = contract_by_address.functions.GetAddress(PhoneNum).call()
    if TX['result'] == '0x0000000000000000000000000000000000000000':
        TX['status'] = -1
    return TX
コード例 #10
0
    except:
        return {'status': -3}
    adds = contract_by_address.events.RegistrationRequest().createFilter(fromBlock='latest').get_new_entries()

    return adds

args = (sys.argv)[1:]
sizeM = len(args)

with open('network.json') as file:
    infor = json.load(file)
    privateKey = infor["privKey"]
    rpc_url = infor["rpcUrl"]

web3 = Web3(HTTPProvider(rpc_url))
person = dit.get_adress(privateKey)

if args[0] == '--confirm':
    addres = args[1]
    TX = ApproveRequest(person, addres)

    if TX['status'] == -3:
        print("Seems that the contract address is not the registrar contract")
    if TX['status'] == -2:
        print("No contract address")
    if TX['status'] == -1:
        print("No requests")
    if TX['status'] == 0:
        print("Failed but included in", TX['transactionHash'].hex())
    if TX['status'] == 1:
        print("Confirmed by", TX['transactionHash'].hex())
コード例 #11
0
def GetAddressWithPhone(phoneNum):
    (Caddress, abiKYC, byteKYC) = dit.contract_info("KYC_Registrar")
    contract_by_address = web3.eth.contract(address=Caddress,
                                            abi=abiKYC,
                                            bytecode=byteKYC)
    return contract_by_address.functions.GetAddress(phoneNum).call()
コード例 #12
0
def GetOwner():
    (Caddress, abi, byte) = dit.contract_info("KYC_Registrar")
    contract_by_address = web3.eth.contract(address = Caddress, abi=abi, bytecode=byte)
    return contract_by_address.functions.GetOwner().call()
コード例 #13
0
#!/usr/bin/env python
from web3 import Web3, HTTPProvider
import json
import sys
import requests
from eth_account import Account
import DI_Transactions as dit

args = (sys.argv)[1:]

with open('network.json') as file:
    infor = json.load(file)
    privateKey = infor["privKey"]
    rpc_url = infor["rpcUrl"]

adres = dit.get_adress(privateKey)

web3 = Web3(HTTPProvider(rpc_url))

def GetOwner():
    (Caddress, abi, byte) = dit.contract_info("KYC_Registrar")
    contract_by_address = web3.eth.contract(address = Caddress, abi=abi, bytecode=byte)
    return contract_by_address.functions.GetOwner().call()

def ChangeOwner(person, new_owner):
    (Caddress, abi, byte) = dit.contract_info("KYC_Registrar")
    contract_by_address = web3.eth.contract(address = Caddress, abi=abi, bytecode=byte)
    new_address = web3.toChecksumAddress(new_owner[2:])
    if(GetOwner() != person.address):
        return {'status': -1}