コード例 #1
0
    def build_payment_tx(self, options):
        tx = Transaction(self, None)
        if not options:
            tx.tx_json['obj'] = Exception('invalid options type')
            return tx
        if options.__contains__('source'):
            src = options['source']
        elif options.__contains__('from'):
            src = options['from']
        elif options.__contains__('account'):
            src = options['account']

        if options.__contains__('destination'):
            dst = options['destination']
        elif options.__contains__('to'):
            dst = options['to']
        amount = options['amount']

        if not Wallet.is_valid_address(src):
            tx.tx_json['src'] = Exception('invalid source address')
            return tx
        if not Wallet.is_valid_address(dst):
            tx.tx_json['dst'] = Exception('invalid destination address')
            return tx

        if not utils.is_valid_amount(amount):
            tx.tx_json['amount'] = Exception('invalid amount')
            return tx

        tx.tx_json['TransactionType'] = 'Payment'
        tx.tx_json['Account'] = src
        tx.tx_json['Amount'] = to_amount(amount)
        tx.tx_json['Destination'] = dst
        return tx
コード例 #2
0
 def build_relation_tx(self, options):
     tx = Transaction(self, None)
     if not options:
         tx.tx_json['obj'] = Exception('invalid options type')
         return tx
     if not options['type'] in RelationTypes:
         tx.tx_json['type'] = Exception('invalid relation type')
         return tx
     if options['type'] == 'trust':
         return self.__build_trust_set(options, tx)
     elif options['type'] == 'authorize' or \
             options['type'] == 'freeze' or options['type'] == 'unfreeze':
         return self.__build_relation_set(options, tx)
     tx.tx_json['msg'] = Exception('build relation set should not go here')
     return tx
コード例 #3
0
 def build_account_set_tx(self, options):
     tx = Transaction(self, None)
     if not options:
         tx.tx_json['obj'] = ValueError('invalid options type')
         return tx
     if not options['type'] in AccountSetTypes:
         tx.tx_json['type'] = ValueError('invalid account set type')
         return tx
     if options['type'] == 'property':
         return self.__build_account_set(options, tx)
     elif options['type'] == 'delegate':
         return self.__build_delegate_key_set(options, tx)
     elif options['type'] == 'signer':
         return self.__build_signer_set()  # not implement yet
     tx.tx_json['msg'] = Warning('build account set should not go here')
     return tx
コード例 #4
0
 def build_offer_cancel_tx(self, options):
     tx = Transaction(self, None)
     if not options:
         tx.tx_json.obj = Exception('invalid options type')
         return tx
     if options.__contains__('source'):
         src = options['source']
     elif options.__contains__('from'):
         src = options['from']
     elif options.__contains__('account'):
         src = options['account']
     sequence = options['sequence']
     if not Wallet.is_valid_address(src):
         tx.tx_json['src'] = Exception('invalid source address')
         return tx
     if not int(sequence) and not float(sequence):
         tx.tx_json['sequence'] = Exception('invalid sequence param')
         return tx
     tx.tx_json['TransactionType'] = 'OfferCancel'
     tx.tx_json['Account'] = src
     tx.tx_json['OfferSequence'] = int(sequence)
     return tx
コード例 #5
0
    def build_offer_create_tx(self, options):
        tx = Transaction(self, None)
        if not options:
            tx.tx_json['obj'] = TypeError('invalid options type')
            return tx

        offer_type = options['type']
        if options.__contains__('source'):
            src = options['source']
        elif options.__contains__('from'):
            src = options['from']
        elif options.__contains__('account'):
            src = options['account']

        if options.__contains__('taker_gets'):
            taker_gets = options['taker_gets']
        elif options.__contains__('pays'):
            taker_gets = options['pays']

        if options.__contains__('taker_pays'):
            taker_pays = options['taker_pays']
        elif options.__contains__('gets'):
            taker_pays = options['gets']

        if not Wallet.is_valid_address(src):
            tx.tx_json['src'] = Exception('invalid source address')
            return tx
        if not isinstance(offer_type, str) or not offer_type in OfferTypes:
            tx.tx_json['offer_type'] = TypeError('invalid offer type')
            return tx

        if isinstance(taker_gets,
                      str) and not int(taker_gets) and not float(taker_gets):
            tx.tx_json['taker_gets2'] = Exception('invalid to pays amount')
            return tx
        if not taker_gets and not utils.is_valid_amount(taker_gets):
            tx.tx_json['taker_gets2'] = Exception(
                'invalid to pays amount object')
            return tx
        if isinstance(
                taker_pays,
                str) and not int(taker_pays) and not not float(taker_pays):
            tx.tx_json['taker_pays2'] = Exception('invalid to gets amount')
            return tx
        if not taker_pays and not utils.is_valid_amount(taker_pays):
            tx.tx_json['taker_pays2'] = Exception(
                'invalid to gets amount object')
            return tx

        tx.tx_json['TransactionType'] = 'OfferCreate'
        if offer_type is 'Sell':
            tx.set_flags(offer_type)
        tx.tx_json['Account'] = src
        tx.tx_json['TakerPays'] = to_amount(taker_pays)
        tx.tx_json['TakerGets'] = to_amount(taker_gets)
        return tx
コード例 #6
0
    def call_contract_tx(self, options):
        """
        创建执行合约对象
         * @param options
         *    account, required
         *    destination, required
         *    foo, required
         * @returns {Transaction}
        """
        tx = Transaction(self, None)
        if not options:
            tx.tx_json['obj'] = Exception('invalid options type')
            return tx

        account = options['account']
        des = options['destination']
        foo = options['foo']
        if options.__contains__('params'):
            params = options['params']

        if not Wallet.is_valid_address(account):
            tx.tx_json['account'] = Exception('invalid account')
            return tx
        if not Wallet.is_valid_address(des):
            tx.tx_json['des'] = Exception('invalid destination')
            return tx

        if not isinstance(foo, str):
            tx.tx_json['foo'] = Exception('foo must be string')
            return tx

        if 'params' in vars():
            if not isinstance(params, list):
                tx.tx_json['params'] = Exception('invalid params')
                return tx

        tx.tx_json['TransactionType'] = 'ConfigContract'
        tx.tx_json['Account'] = account
        tx.tx_json['Method'] = 1
        tx.tx_json['Destination'] = des
        tx.tx_json['ContractMethod'] = str_to_hex(foo)
        tx.tx_json['Args'] = []
        for i in params:
            if not isinstance(i, str):
                tx.tx_json['params'] = Exception('params must be string')
                return tx
            obj = dict()
            obj['Arg'] = {'Parameter': str_to_hex(i)}
            tx.tx_json['Args'].append(obj)

        return tx
コード例 #7
0
    def deploy_contract_tx(self, options):
        """
        创建部署合约对象
         * @param options
         *    account, required
         *    amount, required
         *    payload, required
         * @returns {Transaction}
        """
        tx = Transaction(self, None)
        if not options:
            tx.tx_json['obj'] = Exception('invalid options type')
            return tx

        account = options['account']
        amount = options['amount']
        payload = options['payload']
        if options.__contains__('params'):
            params = options['params']

        if not Wallet.is_valid_address(account):
            tx.tx_json['account'] = Exception('invalid account')
            return tx

        if math.isnan(amount):
            tx.tx_json['amount'] = Exception('invalid amount')
            return tx

        if not isinstance(payload, str):
            tx.tx_json['payload'] = Exception('invalid payload: type error.')
            return tx

        if 'params' in vars():
            if not isinstance(params, list):
                tx.tx_json['params'] = Exception('invalid params')
                return tx

        tx.tx_json['TransactionType'] = 'ConfigContract'
        tx.tx_json['Account'] = account
        tx.tx_json['Amount'] = amount * 1000000
        tx.tx_json['Method'] = 0
        tx.tx_json['Payload'] = payload
        tx.tx_json['Args'] = []

        if 'params' in vars():
            for i in params:
                obj = dict()
                obj['Arg'] = {'Parameter': str_to_hex(i)}
                tx.tx_json['Args'].append(obj)
        # print(tx.tx_json['Args'])

        return tx