73 lines
10 KiB
Python
73 lines
10 KiB
Python
|
from web3 import Web3
|
||
|
import time
|
||
|
|
||
|
|
||
|
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" } ]'
|
||
|
|
||
|
# 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))
|
||
|
# /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": "deleteConversion", "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": "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 convesionDataBase.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" } ]'
|
||
|
# mainnnet =
|
||
|
# 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": "UploadConversionData", "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" } ], "name": "deleteConversion", "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" } ]'
|
||
|
# CAddress = '0x552453F2C4e8ED860a6AEC7D6Bde143CF86E396a'
|
||
|
# 0xc5eAce78c06f09fa9a1Ac0a839C6C3d21d3C0af6
|
||
|
CAddress = CONTRACT_ADDRESS
|
||
|
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" } ]'
|
||
|
|
||
|
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)
|
||
|
gas_price = web3.eth.gas_price
|
||
|
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)
|
||
|
gas_used = transaction_receipt['gasUsed']
|
||
|
trancation_fee = gas_used*gas_price
|
||
|
tx_id = transaction_hash.hex()
|
||
|
return tx_id,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)})
|
||
|
|