From 972206cc2c5de10c72e09a09f0a604affe078fce Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 19 Jun 2024 07:50:55 +0000 Subject: [PATCH] Blockchain changes --- kitchen_counter/Blockchain2/Conversion.py | 163 +++++++++++--------- kitchen_counter/Blockchain2/scriptAudit.py | 159 +++++++++++--------- kitchen_counter/Blockchain2/scriptpad.py | 164 ++++++++++++--------- 3 files changed, 274 insertions(+), 212 deletions(-) diff --git a/kitchen_counter/Blockchain2/Conversion.py b/kitchen_counter/Blockchain2/Conversion.py index 2f8a793..c9a9007 100755 --- a/kitchen_counter/Blockchain2/Conversion.py +++ b/kitchen_counter/Blockchain2/Conversion.py @@ -1,72 +1,91 @@ -from web3 import Web3 -import time - -# test network - -# RPC = 'https://rpc-amoy.polygon.technology/' -# CONTRACT_ADDRESS = '0xB352bBbe946f0b963F1e045Aa25d5606E13d21BF' -# CHAIN_ID = 80002 -# 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": "address", "name": "pubkey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteConversion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadConversionData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getConversion", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct scriptConversionDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" } ]' - -# # mainnet -RPC = 'https://polygon-rpc.com' -CONTRACT_ADDRESS = '0x552453F2C4e8ED860a6AEC7D6Bde143CF86E396a' -CHAIN_ID = 137 -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": "address", "name": "pubkey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteConversion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadConversionData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getConversion", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct scriptConversionDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" } ]' - -# web3 = Web3(Web3.HTTPProvider("https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e")) -# web3 = Web3(Web3.HTTPProvider("https://rpc-mumbai.maticvigil.com/")) -web3 = Web3(Web3.HTTPProvider(RPC)) -CAddress = CONTRACT_ADDRESS -abi = ABI -contractInst = web3.eth.contract(address=CAddress, abi=abi) - -def UploadConversionData(privatekey,pubkey, user_id,project,data): - try: - print("private Key",privatekey) - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.get_transaction_count(acc1) - uploadData = contractInst.functions.UploadConversionData(pubkey,user_id,project,data).build_transaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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) - trancation_fee = transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed - tx_id = transaction_hash.hex() - return tx_id,str(trancation_fee) - except Exception as e: - print({"error":str(e)}) - return e - -def getConversion(private_key,user_id,project): - ACCOUNT = web3.eth.account.from_key(private_key).address - try: - getData = contractInst.functions.getConversion(user_id,project).call({'from':ACCOUNT}) - return True ,getData - except Exception as e: - print("Error calling function:", e) - return False,e - -def scriptGetUserprojectIds(user_id): - try: - getProjectId = contractInst.functions.getProjectId(user_id).call() - return getProjectId - except Exception as e: - return e - -def deleteConversion(privatekey,pubkey,user_id,project): - try: - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.getTransactionCount(acc1) - deleteData = contractInst.functions.deleteConversion(pubkey,user_id,project).buildTransaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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)}) - - +from web3 import Web3 +import time +from web3.exceptions import TimeExhausted + +# test network + +# RPC = 'https://rpc-amoy.polygon.technology/' +# CONTRACT_ADDRESS = '0xB352bBbe946f0b963F1e045Aa25d5606E13d21BF' +# CHAIN_ID = 80002 +# 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": "address", "name": "pubkey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteConversion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadConversionData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getConversion", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct scriptConversionDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" } ]' + +# # mainnet +# RPC = 'https://polygon-rpc.com' +RPC = "https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e" +CONTRACT_ADDRESS = '0x552453F2C4e8ED860a6AEC7D6Bde143CF86E396a' +CHAIN_ID = 137 +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": "address", "name": "pubkey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteConversion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadConversionData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getConversion", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct scriptConversionDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" } ]' + + +web3 = Web3(Web3.HTTPProvider(RPC)) +CAddress = CONTRACT_ADDRESS +abi = ABI +contractInst = web3.eth.contract(address=CAddress, abi=abi) + +def UploadConversionData(privatekey,pubkey, user_id,project,data): + try: + acc1 = web3.eth.account.from_key(privatekey).address + def send_transaction(): + nonce = web3.eth.get_transaction_count(acc1) + gas = 300000 + uploadData = contractInst.functions.UploadConversionData(pubkey,user_id,project,data).build_transaction({ + 'gas': gas ,'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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) + return transaction_hash + max_retries = 3 + retries = 0 + transaction_hash = send_transaction() + + while retries < max_retries: + try: + transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash) + print("Transaction confirmed:") + break + except TimeExhausted: + retries += 1 + print(f"Transaction not confirmed in {120 * retries} seconds, retrying... ({retries}/{max_retries})") + transaction_hash = send_transaction() + else: + print("Failed to confirm the transaction after multiple attempts.") + return TimeoutError + transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash) + trancation_fee = transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed + tx_id = transaction_hash.hex() + return tx_id,str(trancation_fee) + except Exception as e: + print({"error":str(e)}) + return e + +def getConversion(private_key,user_id,project): + ACCOUNT = web3.eth.account.from_key(private_key).address + try: + getData = contractInst.functions.getConversion(user_id,project).call({'from':ACCOUNT}) + return True ,getData + except Exception as e: + print("Error calling function:", e) + return False,e + +def scriptGetUserprojectIds(user_id): + try: + getProjectId = contractInst.functions.getProjectId(user_id).call() + return getProjectId + except Exception as e: + return e + +def deleteConversion(privatekey,pubkey,user_id,project): + try: + acc1 = web3.eth.account.from_key(privatekey).address + nonce = web3.eth.getTransactionCount(acc1) + deleteData = contractInst.functions.deleteConversion(pubkey,user_id,project).buildTransaction({ + 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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)}) + + diff --git a/kitchen_counter/Blockchain2/scriptAudit.py b/kitchen_counter/Blockchain2/scriptAudit.py index 1b5762c..c78e92b 100755 --- a/kitchen_counter/Blockchain2/scriptAudit.py +++ b/kitchen_counter/Blockchain2/scriptAudit.py @@ -1,72 +1,87 @@ -from web3 import Web3 -import time - - - -# RPC = 'https://rpc-amoy.polygon.technology/' -# CONTRACT_ADDRESS = '0xbE91e2294D12fa78Ce64657fD9Ee137cE3e99881' -# CHAIN_ID = 80002 -# 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": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptAuditData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteScriptAudit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptAudit", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptAuditDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' - -# web3 = Web3(Web3.HTTPProvider("https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e")) - -# mainnet -RPC = 'https://polygon-rpc.com' -CONTRACT_ADDRESS = '0x3a5d033CdF38aC4a9fe116CE88EBA2E93260044c' -CHAIN_ID = 137 -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": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptAuditData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteScriptAudit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptAudit", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptAuditDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' - -web3 = Web3(Web3.HTTPProvider(RPC)) -CAddress =CONTRACT_ADDRESS -abi = ABI -contractInst = web3.eth.contract(address=CAddress, abi=abi) - -def UploadScriptAuditData(privatekey,pubkey,user_id,project,data): - try: - print("private Key",privatekey) - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.get_transaction_count(acc1) - uploadData = contractInst.functions.UploadScriptAuditData(pubkey,user_id,project,data).build_transaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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) - trancation_fee = transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed - tx_id = transaction_hash.hex() - return tx_id,str(trancation_fee) - except Exception as e: - # print({"error":str(e)}) - return e - -def getScriptAudit(private_key,user_id,project): - ACCOUNT = web3.eth.account.from_key(private_key).address - try: - getData = contractInst.functions.getScriptAudit(user_id,project).call({'from':ACCOUNT}) - print(getData) - return True ,getData - except Exception as e: - print("Error calling function:", e) - return False,e - -def getUserprojectIds(user_id): - try: - getProjectId = contractInst.functions.getProjectId(user_id).call() - return getProjectId - except Exception as e: - return e - -def deleteScriptAudit(privatekey,user_id,project): - try: - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.getTransactionCount(acc1) - deleteData = contractInst.functions.deleteScriptAudit(user_id,project).buildTransaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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({"PPT_conversion_delete_error":str(e)}) - +from web3 import Web3 +import time +from web3.exceptions import TimeExhausted + +# RPC = 'https://rpc-amoy.polygon.technology/' +# CONTRACT_ADDRESS = '0xbE91e2294D12fa78Ce64657fD9Ee137cE3e99881' +# CHAIN_ID = 80002 +# 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": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptAuditData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteScriptAudit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptAudit", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptAuditDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' + +# mainnet +RPC = 'https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e' +CONTRACT_ADDRESS = '0x3a5d033CdF38aC4a9fe116CE88EBA2E93260044c' +CHAIN_ID = 137 +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": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptAuditData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteScriptAudit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptAudit", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptAuditDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' + +web3 = Web3(Web3.HTTPProvider(RPC)) +CAddress =CONTRACT_ADDRESS +abi = ABI +contractInst = web3.eth.contract(address=CAddress, abi=abi) + +def UploadScriptAuditData(privatekey,pubkey,user_id,project,data): + try: + acc1 = web3.eth.account.from_key(privatekey).address + def send_transaction(): + nonce = web3.eth.get_transaction_count(acc1) + gas = 300000 + uploadData = contractInst.functions.UploadScriptAuditData(pubkey,user_id,project,data).build_transaction({ + 'gas': gas,'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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) + return transaction_hash + max_retries = 3 + retries = 0 + transaction_hash = send_transaction() + + while retries < max_retries: + try: + transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash) + print("Transaction confirmed:") + break + except TimeExhausted: + retries += 1 + print(f"Transaction not confirmed in {120 * retries} seconds, retrying... ({retries}/{max_retries})") + transaction_hash = send_transaction() + else: + print("Failed to confirm the transaction after multiple attempts.") + return TimeoutError + trancation_fee = transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed + tx_id = transaction_hash.hex() + return tx_id,str(trancation_fee) + except Exception as e: + # print({"error":str(e)}) + return e + +def getScriptAudit(private_key,user_id,project): + ACCOUNT = web3.eth.account.from_key(private_key).address + try: + getData = contractInst.functions.getScriptAudit(user_id,project).call({'from':ACCOUNT}) + print(getData) + return True ,getData + except Exception as e: + print("Error calling function:", e) + return False,e + +def getUserprojectIds(user_id): + try: + getProjectId = contractInst.functions.getProjectId(user_id).call() + return getProjectId + except Exception as e: + return e + +def deleteScriptAudit(privatekey,user_id,project): + try: + acc1 = web3.eth.account.from_key(privatekey).address + nonce = web3.eth.getTransactionCount(acc1) + deleteData = contractInst.functions.deleteScriptAudit(user_id,project).buildTransaction({ + 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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({"PPT_conversion_delete_error":str(e)}) + + diff --git a/kitchen_counter/Blockchain2/scriptpad.py b/kitchen_counter/Blockchain2/scriptpad.py index 7474f34..27b3905 100755 --- a/kitchen_counter/Blockchain2/scriptpad.py +++ b/kitchen_counter/Blockchain2/scriptpad.py @@ -1,68 +1,96 @@ -from web3 import Web3 -import time - -# web3 = Web3(Web3.HTTPProvider("https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e")) -RPC = 'https://rpc-amoy.polygon.technology/' -CONTRACT_ADDRESS = '0x46411D9d30a56F5BDD0c30595b2f91701884EBE9' -CHAIN_ID = 80002 -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": "deleteScriptPad", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptPadData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptPad", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptPadDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' -web3 = Web3(Web3.HTTPProvider(RPC)) -# mainnet -# CAddress = '0x3a5d033CdF38aC4a9fe116CE88EBA2E93260044c' -# 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": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptAuditData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "deleteScriptAudit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptAudit", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptAuditDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' -CAddress = CONTRACT_ADDRESS -abi = ABI -contractInst = web3.eth.contract(address=CAddress, abi=abi) - -def UploadScriptPadData(privatekey,pubkey,user_id,project,data): - try: - print("private Key",privatekey) - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.get_transaction_count(acc1) - uploadData = contractInst.functions.UploadScriptPadData(pubkey,user_id,project,data).build_transaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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) - trancation_fee= transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed - tx_id = transaction_hash.hex() - return tx_id,str(trancation_fee) - except Exception as e: - # print({"error":str(e)}) - return e - -def getScriptPad(private_key,user_id,project): - ACCOUNT = web3.eth.account.from_key(private_key).address - try: - getData = contractInst.functions.getScriptPad(user_id,project).call({'from':ACCOUNT}) - print(getData) - return True ,getData - except Exception as e: - print("Error calling function:", e) - return False,e - -def getUserprojectIds(user_id): - try: - getProjectId = contractInst.functions.getProjectId(user_id).call() - return getProjectId - except Exception as e: - return e - -def deleteScriptPad(privatekey,user_id,project): - try: - acc1 = web3.eth.account.from_key(privatekey).address - nonce = web3.eth.getTransactionCount(acc1) - deleteData = contractInst.functions.deleteScriptPad(user_id,project).buildTransaction({ - 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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({"PPT_conversion_delete_error":str(e)}) - -# script = UploadScriptPadData("6f06e1108b833b1918067042e13e60eda262705b80385a02d0330ce0db31d3ad",'0xd7F252B08B19e35344ac44DE7CCdd26D10Cc6e17',1,'1752aa50-a751-4149-84ad-680dcb932972',"fhdsjkdfd") -# print(script) -# getScriptPad("6f06e1108b833b1918067042e13e60eda262705b80385a02d0330ce0db31d3ad",1,'1752aa50-a751-4149-84ad-680dcb932972') +from web3 import Web3 +import time +from web3.exceptions import TimeExhausted + +# testnetwork +# RPC = 'https://rpc-amoy.polygon.technology/' +# CONTRACT_ADDRESS = '0x46411D9d30a56F5BDD0c30595b2f91701884EBE9' +# CHAIN_ID = 80002 +# 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": "deleteScriptPad", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptPadData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptPad", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptPadDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' + +# mainnet + +# RPC = 'https://polygon-rpc.com' +RPC = "https://polygon-mainnet.infura.io/v3/017957497a0d4e9c80750c18a431ac1e" +CONTRACT_ADDRESS = '0xa3eE891d2b0bE5bcc99f14AFF37b42161Cae8E7B' +CHAIN_ID = 137 +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": "deleteScriptPad", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pubKey", "type": "address" }, { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" }, { "internalType": "string", "name": "_data", "type": "string" } ], "name": "UploadScriptPadData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "userId", "type": "uint256" } ], "name": "getProjectId", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "user_id", "type": "uint256" }, { "internalType": "string", "name": "project", "type": "string" } ], "name": "getScriptPad", "outputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "mydata", "type": "string" }, { "internalType": "bool", "name": "Write", "type": "bool" } ], "internalType": "struct ScriptPadDataBase.privateData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" } ]' + +web3 = Web3(Web3.HTTPProvider(RPC)) + +CAddress = CONTRACT_ADDRESS +abi = ABI +contractInst = web3.eth.contract(address=CAddress, abi=abi) + +def UploadScriptPadData(privatekey,pubkey,user_id,project,data): + try: + acc1 = web3.eth.account.from_key(privatekey).address + def send_transaction(): + nonce = web3.eth.get_transaction_count(acc1) + gas = 300000 + uploadData = contractInst.functions.UploadScriptPadData(pubkey,user_id,project,data).build_transaction({ + 'gas': gas , 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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(web3.eth.gas_price) + print("transaction hash",transaction_hash) + return transaction_hash + # Define the number of retries + max_retries = 3 + retries = 0 + transaction_hash = send_transaction() + + while retries < max_retries: + try: + transaction_receipt = web3.eth.wait_for_transaction_receipt(transaction_hash,timeout=60) + print("Transaction confirmed:") + break + except TimeExhausted: + retries += 1 + print(f"Transaction not confirmed in {120 * retries} seconds, retrying... ({retries}/{max_retries})") + transaction_hash = send_transaction() + else: + print("Failed to confirm the transaction after multiple attempts.") + return TimeoutError + trancation_fee= transaction_receipt.effectiveGasPrice*transaction_receipt.gasUsed + tx_id = transaction_hash.hex() + print("tx_id") + return tx_id,str(trancation_fee) + except Exception as e: + # print({"error":str(e)}) + return e + +def getScriptPad(private_key,user_id,project): + ACCOUNT = web3.eth.account.from_key(private_key).address + try: + getData = contractInst.functions.getScriptPad(user_id,project).call({'from':ACCOUNT}) + print(getData) + return True ,getData + except Exception as e: + print("Error calling function:", e) + return False,e + +def getUserprojectIds(user_id): + try: + getProjectId = contractInst.functions.getProjectId(user_id).call() + return getProjectId + except Exception as e: + return e + +def deleteScriptPad(privatekey,user_id,project): + try: + acc1 = web3.eth.account.from_key(privatekey).address + nonce = web3.eth.getTransactionCount(acc1) + deleteData = contractInst.functions.deleteScriptPad(user_id,project).buildTransaction({ + 'gasPrice': web3.eth.gas_price, 'chainId': CHAIN_ID, '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({"PPT_conversion_delete_error":str(e)}) + +# script = UploadScriptPadData("6f06e1108b833b1918067042e13e60eda262705b80385a02d0330ce0db31d3ad",'0xd7F252B08B19e35344ac44DE7CCdd26D10Cc6e17',1,'1752aa50-a751-4149-84ad-680dcb932972',"pravesh11") +# print(script) +# getScriptPad("6f06e1108b833b1918067042e13e60eda262705b80385a02d0330ce0db31d3ad",1,'1752aa50-a751-4149-84ad-680dcb932972')