Adding transaction hash in participant records

This commit is contained in:
Vivek Teega 2019-05-26 14:35:49 +05:30
parent 4d4d8f3747
commit dba6f5d048
2 changed files with 19 additions and 6 deletions

View File

@ -64,6 +64,7 @@ class ContractParticipants(ContractBase):
participantAddress = Column('participantAddress', String) participantAddress = Column('participantAddress', String)
tokenAmount = Column('tokenAmount', Float) tokenAmount = Column('tokenAmount', Float)
userChoice = Column('userChoice', String) userChoice = Column('userChoice', String)
transactionHash = Column('transactionHash', String)
class ActiveContracts(SystemBase): class ActiveContracts(SystemBase):
__tablename__ = "activecontracts" __tablename__ = "activecontracts"
@ -72,6 +73,7 @@ class ActiveContracts(SystemBase):
contractName = Column('contractName', String) contractName = Column('contractName', String)
contractAddress = Column('contractAddress', String) contractAddress = Column('contractAddress', String)
status = Column('status', String) status = Column('status', String)
transactionHash = Column('transactionHash', String)
class SystemData(SystemBase): class SystemData(SystemBase):
__tablename__ = "systemData" __tablename__ = "systemData"

View File

@ -447,6 +447,16 @@ def startWorking(transaction_data, parsed_data, blockinfo):
print('Token amount being transferred is not part of the contract structure\nThis transaction will be discarded') print('Token amount being transferred is not part of the contract structure\nThis transaction will be discarded')
return return
# Check if the transaction hash already exists in the contract db (Safety check)
engine = create_engine('sqlite:///smartContracts/{}-{}.db'.format(parsed_data['contractName'], outputlist[0]),echo=True)
connection = engine.connect()
participantAdd_txhash = connection.execute('select participantAddress, transactionHash from contractparticipants').fetchall()
participantAdd_txhash_T = list(zip(*participantAdd_txhash))
if len(participantAdd_txhash) != 0 and transaction_data['txid'] in list(participantAdd_txhash_T[1]):
print('Transaction already exists in the db. This is unusual, please check your code')
return
# Check if maximum subscription amount has reached # Check if maximum subscription amount has reached
engine = create_engine('sqlite:///smartContracts/{}-{}.db'.format(parsed_data['contractName'], outputlist[0]), echo=True) engine = create_engine('sqlite:///smartContracts/{}-{}.db'.format(parsed_data['contractName'], outputlist[0]), echo=True)
@ -470,7 +480,7 @@ def startWorking(transaction_data, parsed_data, blockinfo):
returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0], outputlist[0]) returnval = transferToken(parsed_data['tokenIdentification'], parsed_data['tokenAmount'], inputlist[0], outputlist[0])
if returnval is not None: if returnval is not None:
# Store participant details in the smart contract's db # Store participant details in the smart contract's db
session.add(ContractParticipants(participantAddress=inputadd, tokenAmount=parsed_data['tokenAmount'], userChoice=parsed_data['userChoice'])) session.add(ContractParticipants(participantAddress=inputadd, tokenAmount=parsed_data['tokenAmount'], userChoice=parsed_data['userChoice'], transactionHash=transaction_data['txid'] ))
session.commit() session.commit()
session.close() session.close()
@ -479,7 +489,8 @@ def startWorking(transaction_data, parsed_data, blockinfo):
SystemBase.metadata.create_all(bind=engine) SystemBase.metadata.create_all(bind=engine)
session = sessionmaker(bind=engine)() session = sessionmaker(bind=engine)()
session.add(ContractParticipantMapping(participantAddress=inputadd, tokenAmount=parsed_data['tokenAmount'], session.add(ContractParticipantMapping(participantAddress=inputadd, tokenAmount=parsed_data['tokenAmount'],
contractName = parsed_data['contractName'], contractAddress = outputlist[0])) contractName = parsed_data['contractName'], contractAddress = outputlist[0], contractName = parsed_data['contractName'], contractAddress = outputlist[0], transactionHash=transaction_data['txid']))
))
session.commit() session.commit()
return return
@ -494,7 +505,7 @@ def startWorking(transaction_data, parsed_data, blockinfo):
# Store participant details in the smart contract's db # Store participant details in the smart contract's db
session.add(ContractParticipants(participantAddress=inputadd, session.add(ContractParticipants(participantAddress=inputadd,
tokenAmount=maximumsubscriptionamount-amountDeposited, tokenAmount=maximumsubscriptionamount-amountDeposited,
userChoice=parsed_data['userChoice'])) userChoice=parsed_data['userChoice'], transactionHash=transaction_data['txid']))
session.commit() session.commit()
session.close() session.close()
@ -504,7 +515,7 @@ def startWorking(transaction_data, parsed_data, blockinfo):
session = sessionmaker(bind=engine)() session = sessionmaker(bind=engine)()
session.add(ContractParticipantMapping(participantAddress=inputadd, session.add(ContractParticipantMapping(participantAddress=inputadd,
tokenAmount=maximumsubscriptionamount-amountDeposited, tokenAmount=maximumsubscriptionamount-amountDeposited,
contractName=parsed_data['contractName'], contractAddress = outputlist[0])) contractName=parsed_data['contractName'], contractAddress = outputlist[0], transactionHash=transaction_data['txid']))
session.commit() session.commit()
session.close() session.close()
return return
@ -521,7 +532,7 @@ def startWorking(transaction_data, parsed_data, blockinfo):
# Store participant details in the smart contract's db # Store participant details in the smart contract's db
session.add(ContractParticipants(participantAddress=inputadd, session.add(ContractParticipants(participantAddress=inputadd,
tokenAmount=parsed_data['tokenAmount'], tokenAmount=parsed_data['tokenAmount'],
userChoice=parsed_data['userChoice'])) userChoice=parsed_data['userChoice'], transactionHash=transaction_data['txid']))
session.commit() session.commit()
session.close() session.close()
@ -532,7 +543,7 @@ def startWorking(transaction_data, parsed_data, blockinfo):
session.add(ContractParticipantMapping(participantAddress=inputadd, session.add(ContractParticipantMapping(participantAddress=inputadd,
tokenAmount=parsed_data['tokenAmount'], tokenAmount=parsed_data['tokenAmount'],
contractName=parsed_data['contractName'], contractName=parsed_data['contractName'],
contractAddress=outputlist[0])) contractAddress=outputlist[0], transactionHash=transaction_data['txid']))
session.commit() session.commit()
return return