def submit_events(): sql = "select id from event where start_time < NOW() and prepare_time < NOW() and prepare_time > 0 and submit_time = 0" c = libmysql.db.cursor() c.execute( sql ) rows = c.fetchall() for row in rows: event = Event() event.load(row[0]) govobj = GovernanceObject() print event.get_id() govobj.load(event.get_id()) hash = govobj.get_field("object_fee_tx") print "# SUBMIT PREPARED EVENTS FOR DASH NETWORK" print print " -- cmd : ", govobj.get_submit_command() print print " -- executing event ... getting fee_tx hash" if misc.is_hash(hash): tx = dashd.CTransaction() if tx.load(hash): print " -- confirmations: ", tx.get_confirmations() if tx.get_confirmations() >= CONFIRMATIONS_REQUIRED: event.set_submitted() print " -- executing event ... getting fee_tx hash" result = dashd.rpc_command(govobj.get_submit_command()) if misc.is_hash(result): print " -- got result", result govobj.update_field("object_hash", result) event.save() govobj.save() libmysql.db.commit() return 1 else: print " -- got error", result else: print " -- waiting for confirmation" return 0
def do_test(): parent = GovernanceObject() parent.init() start_epoch = datetime.datetime.strptime(START_DATE, "%Y-%m-%d").strftime('%s') end_epoch = datetime.datetime.strptime(END_DATE, "%Y-%m-%d").strftime('%s') # Step 1 - Create superblock superblock_name = "sb" + str(random.randint(1000000, 9999999)) while GovernanceObjectMananger.object_with_name_exists(superblock_name): superblock_name = "sb" + str(random.randint(1000000, 9999999)) fee_tx = CTransaction() sbObj = GovernanceObject() sbObj.create_new(parent, superblock_name, govtypes.trigger, govtypes.FIRST_REVISION, fee_tx) last_id = sbObj.save() blockCount = int(rpc_command("getblockcount")) event_block_height = "%d" % (blockCount + crontab.CONFIRMATIONS_REQUIRED + 5) if last_id is None: raise (Exception("do_test: superblock creation failed")) # ADD OUR PROPOSAL AS A SUB-OBJECT WITHIN GOVERNANCE OBJECT c = Superblock() c.set_field("governance_object_id", last_id) c.set_field("type", govtypes.trigger) c.set_field("subtype", "superblock") c.set_field("superblock_name", superblock_name) c.set_field("event_block_height", event_block_height) c.set_field("payment_addresses", PAYMENT_ADDRESS1) c.set_field("payment_amounts", PAYMENT_AMOUNT1) # APPEND TO GOVERNANCE OBJECT sbObj.add_subclass("trigger", c) sbObj.save() # CREATE EVENT TO TALK TO DASHD / PREPARE / SUBMIT OBJECT event = Event() event.create_new(last_id) event.save() libmysql.db.commit() # Step 2 - Prepare/submit events print "Before do_events" do_events() print "After do_events" # Step 3 - Vote up the superblock sbObj.load(sbObj.governance_object['id']) print "sbObj.governance_object = %s" % (sbObj.governance_object) print "Getting objectHash" objectHash = sbObj.get_field("object_hash").strip() print "preparing to vote: objectHash = %s, length = %d" % (objectHash, len(objectHash)) if len(objectHash) == 64: vote(objectHash) # Step 4 - Create proposal proposal_name = "tprop-" + str(random.randint(1000000, 9999999)) while GovernanceObjectMananger.object_with_name_exists(proposal_name): proposal_name = "test-proposal-" + str(random.randint( 1000000, 9999999)) quoted_proposal_name = "'%s'" % (proposal_name) fee_tx = CTransaction() newObj = GovernanceObject() newObj.create_new(parent, proposal_name, govtypes.proposal, govtypes.FIRST_REVISION, fee_tx) last_id = newObj.save() if last_id is None: raise (Exception("do_test: proposal creation failed")) c = Proposal() c.set_field("governance_object_id", last_id) c.set_field("type", govtypes.proposal) c.set_field("proposal_name", quoted_proposal_name) c.set_field("description_url", DESCRIPTION_URL) c.set_field("start_epoch", start_epoch) c.set_field("end_epoch", end_epoch) c.set_field("payment_address", PAYMENT_ADDRESS2) c.set_field("payment_amount", PAYMENT_AMOUNT2) # APPEND TO GOVERNANCE OBJECT newObj.add_subclass("proposal", c) newObj.save() # CREATE EVENT TO TALK TO DASHD / PREPARE / SUBMIT OBJECT event = Event() event.create_new(last_id) event.save() libmysql.db.commit() # Step 5 - Prepare/submit events do_events()