예제 #1
0
    def prepareproposal(self,
                        proposal_name,
                        proposal_url,
                        payments_count,
                        block_start,
                        address,
                        amount,
                        broadcast=False):
        """Create a budget proposal transaction."""
        proposal = self.masternode_manager.get_proposal(proposal_name)
        amount = int(amount * COIN)
        if not proposal:
            proposal = BudgetProposal(proposal_name=proposal_name,
                                      proposal_url=proposal_url,
                                      start_block=block_start,
                                      payment_amount=amount,
                                      address=address)
            proposal.set_payments_count(payments_count)
            self.masternode_manager.add_proposal(proposal)

        tx = self.masternode_manager.create_proposal_tx(
            proposal_name, self.password)

        if broadcast:
            r, h = self.wallet.sendtx(tx)
            return h
        return str(tx)
def parse_proposals_subscription_result(results):
    """Parse the proposals subscription response."""
    proposals = []
    for k, result in results.items():
        kwargs = {
            'proposal_name': result['Name'],
            'proposal_url': result['URL'],
            'start_block': int(result['BlockStart']),
            'end_block': int(result['BlockEnd']),
            'payment_amount': result['MonthlyPayment'],
            'address': result['PaymentAddress']
        }

        fee_txid_key = 'FeeTXHash' if result.get('FeeTXHash') else 'FeeHash'
        kwargs['fee_txid'] = result[fee_txid_key]
        yes_count_key = 'YesCount' if result.get('YesCount') else 'Yeas'
        kwargs['yes_count'] = result[yes_count_key]
        no_count_key = 'NoCount' if result.get('NoCount') else 'Nays'
        kwargs['no_count'] = result[no_count_key]

        payment_amount = Decimal(str(kwargs['payment_amount']))
        kwargs['payment_amount'] = pow(10, 8) * payment_amount
        proposals.append(BudgetProposal.from_dict(kwargs))

    print_error('Received updated budget proposal information (%d proposals)' %
                len(proposals))
    return proposals
예제 #3
0
 def load(self):
     """Load masternodes from wallet storage."""
     masternodes = self.wallet.storage.get('masternodes', {})
     self.masternodes = [MasternodeAnnounce.from_dict(d) for d in masternodes.values()]
     proposals = self.wallet.storage.get('budget_proposals', {})
     self.proposals = [BudgetProposal.from_dict(d) for d in proposals.values()]
     self.budget_votes = [BudgetVote.from_dict(d) for d in self.wallet.storage.get('budget_votes', [])]