56 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
								 | 
							
								from web3 import Web3
							 | 
						||
| 
								 | 
							
								import time
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								web3 = Web3(Web3.HTTPProvider("https://rpc-mumbai.maticvigil.com/"))
							 | 
						||
| 
								 | 
							
								CAddress = '0x174b78F71b289d106980cAFCE0Fc2f4384F5D200'
							 | 
						||
| 
								 | 
							
								abi ='[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"user_id","type":"uint256"},{"indexed":false,"internalType":"string","name":"project","type":"string"},{"indexed":false,"internalType":"string","name":"data","type":"string"}],"name":"conversion","type":"event"},{"inputs":[{"internalType":"uint256","name":"user_id","type":"uint256"},{"internalType":"string","name":"project","type":"string"}],"name":"deleteBookConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"user_id","type":"uint256"},{"internalType":"string","name":"project","type":"string"},{"internalType":"string","name":"_data","type":"string"}],"name":"UploadBookConversionData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"user_id","type":"uint256"},{"internalType":"string","name":"project","type":"string"}],"name":"getBookConversion","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"mydata","type":"string"},{"internalType":"bool","name":"Write","type":"bool"}],"internalType":"struct bookConvesionDataBase.privateData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"userId","type":"uint256"}],"name":"getBookProjectId","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"}]'
							 | 
						||
| 
								 | 
							
								contractInst = web3.eth.contract(address=CAddress, abi=abi)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def UploadBookConversionData(privatekey,user_id,project,data): 
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        print("private Key",privatekey)
							 | 
						||
| 
								 | 
							
								        acc1 = web3.eth.account.from_key(privatekey).address
							 | 
						||
| 
								 | 
							
								        nonce = web3.eth.getTransactionCount(acc1)
							 | 
						||
| 
								 | 
							
								        uploadData = contractInst.functions.UploadBookConversionData(user_id,project,data).buildTransaction({
							 | 
						||
| 
								 | 
							
								        'gasPrice': web3.eth.gas_price, 'chainId': 80001, 'from': acc1, 'nonce': nonce})
							 | 
						||
| 
								 | 
							
								        signed_transaction = web3.eth.account.sign_transaction(uploadData, private_key=privatekey)
							 | 
						||
| 
								 | 
							
								        transaction_hash = web3.eth.send_raw_transaction(signed_transaction.rawTransaction)
							 | 
						||
| 
								 | 
							
								        print("transaction hash",transaction_hash)
							 | 
						||
| 
								 | 
							
								        transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash)
							 | 
						||
| 
								 | 
							
								        tx_id = transaction_hash.hex()
							 | 
						||
| 
								 | 
							
								        return tx_id
							 | 
						||
| 
								 | 
							
								    except Exception as e:
							 | 
						||
| 
								 | 
							
								        # print({"error":str(e)})
							 | 
						||
| 
								 | 
							
								        return e
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def getBookConversion(private_key,user_id,project):
							 | 
						||
| 
								 | 
							
								    ACCOUNT = web3.eth.account.from_key(private_key).address
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        getData = contractInst.functions.getBookConversion(user_id,project).call({'from':ACCOUNT})
							 | 
						||
| 
								 | 
							
								        return True ,getData
							 | 
						||
| 
								 | 
							
								    except Exception as e:
							 | 
						||
| 
								 | 
							
								        print("Error calling function:", e)
							 | 
						||
| 
								 | 
							
								        return False,e
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								def getBookprojectIds(user_id):
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        getProjectId = contractInst.functions.getBookProjectId(user_id).call()
							 | 
						||
| 
								 | 
							
								        return getProjectId
							 | 
						||
| 
								 | 
							
								    except Exception as e:
							 | 
						||
| 
								 | 
							
								        return e  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def deleteBookConversion(privatekey,user_id,project): 
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        acc1 = web3.eth.account.from_key(privatekey).address
							 | 
						||
| 
								 | 
							
								        nonce = web3.eth.getTransactionCount(acc1)
							 | 
						||
| 
								 | 
							
								        deleteData = contractInst.functions.deleteBookConversion(user_id,project).buildTransaction({
							 | 
						||
| 
								 | 
							
								        'gasPrice': web3.eth.gas_price, 'chainId': 80001, 'from': acc1, 'nonce': nonce})
							 | 
						||
| 
								 | 
							
								        signed_transaction = web3.eth.account.sign_transaction(deleteData, private_key=privatekey)
							 | 
						||
| 
								 | 
							
								        transaction_hash = web3.eth.send_raw_transaction(signed_transaction.rawTransaction)
							 | 
						||
| 
								 | 
							
								        transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash)
							 | 
						||
| 
								 | 
							
								        tx_id = transaction_hash.hex()
							 | 
						||
| 
								 | 
							
								        return tx_id
							 | 
						||
| 
								 | 
							
								    except Exception as e:
							 | 
						||
| 
								 | 
							
								        print({"conversion_delete_error":str(e)})
							 | 
						||
| 
								 | 
							
								
							 |