Пример #1
0
    def _structure_to_kwargs(cls, structure):
        """ Prepare decoded structure data to instance kwargs. """

        kwargs = super()._structure_to_kwargs(structure)

        # Convert data values to verbose.
        # Data will be passed as additional kwarg
        kwargs['data'].update({
            'name':
            kwargs['data']['name'].decode(),
            'symbol':
            MinterHelper.decode_coin_name(kwargs['data']['symbol']),
            'initial_amount':
            MinterHelper.to_bip(
                int.from_bytes(kwargs['data']['initial_amount'], 'big')),
            'initial_reserve':
            MinterHelper.to_bip(
                int.from_bytes(kwargs['data']['initial_reserve'], 'big')),
            'crr':
            int.from_bytes(kwargs['data']['crr'], 'big'),
            'max_supply':
            MinterHelper.to_bip(
                int.from_bytes(kwargs['data']['max_supply'], 'big'))
        })

        # Populate data key values as kwargs
        kwargs.update(kwargs['data'])

        return kwargs
Пример #2
0
    def _structure_to_kwargs(cls, structure):
        """ Prepare decoded structure data to instance kwargs. """

        kwargs = super()._structure_to_kwargs(structure)

        # Convert data values to verbose.
        # Data will be passed as additional kwarg
        kwargs['data'].update({
            'address':
            MinterHelper.prefix_add(kwargs['data']['address'].hex(),
                                    PREFIX_ADDR),
            'pub_key':
            MinterHelper.prefix_add(kwargs['data']['pub_key'].hex(),
                                    PREFIX_PUBKEY),
            'commission':
            int.from_bytes(kwargs['data']['commission'], 'big'),
            'coin':
            MinterHelper.decode_coin_name(kwargs['data']['coin']),
            'stake':
            MinterHelper.to_bip(int.from_bytes(kwargs['data']['stake'], 'big'))
        })

        # Populate data key values as kwargs
        kwargs.update(kwargs['data'])

        return kwargs
Пример #3
0
    def from_raw(cls, rawcheck):
        """
        Create check instance from raw check
        Args:
            rawcheck (str)
        Returns:
            MinterCheck
        """

        # Remove check prefix and RLP decode it
        rawcheck = MinterHelper.prefix_remove(rawcheck)
        rawcheck = bytes.fromhex(rawcheck)
        decoded = rlp.decode(rawcheck)

        # Create MinterCheck instance
        kwargs = {
            'nonce': int(decoded[0].decode()),
            'chain_id': int.from_bytes(decoded[1], 'big'),
            'due_block': int.from_bytes(decoded[2], 'big'),
            'coin': MinterHelper.decode_coin_name(decoded[3]),
            'value': MinterHelper.to_bip(int.from_bytes(decoded[4], 'big')),
            'gas_coin': MinterHelper.decode_coin_name(decoded[5]),
            'lock': decoded[6].hex(),
            'signature': {
                'v': int.from_bytes(decoded[7], 'big'),
                'r': decoded[8].hex(),
                's': decoded[9].hex()
            }
        }
        check = MinterCheck(**kwargs)

        # Recover owner address
        msg_hash = cls.__hash(data=[
            int(str(check.nonce).encode().hex(), 16), check.chain_id,
            check.due_block,
            MinterHelper.encode_coin_name(check.coin),
            MinterHelper.to_pip(check.value),
            MinterHelper.encode_coin_name(check.gas_coin),
            bytes.fromhex(check.lock)
        ])
        public_key = ECDSA.recover(msg_hash, tuple(check.signature.values()))
        public_key = MinterHelper.prefix_add(public_key, PREFIX_PUBKEY)

        check.owner = MinterWallet.get_address_from_public_key(public_key)

        return check
Пример #4
0
    def _structure_to_kwargs(cls, structure):
        """
        Works with already populated structure and prepare **kwargs for
        creating new instance of tx.
        """

        structure.update(
            {'gas_coin': MinterHelper.decode_coin_name(structure['gas_coin'])})

        return structure
Пример #5
0
    def _structure_to_kwargs(cls, structure):
        """ Prepare decoded structure data to instance kwargs. """

        kwargs = super()._structure_to_kwargs(structure)

        # Convert data values to verbose.
        # Data will be passed as additional kwarg
        kwargs['data'].update({
            'coin_to_sell':
            MinterHelper.decode_coin_name(kwargs['data']['coin_to_sell']),
            'coin_to_buy':
            MinterHelper.decode_coin_name(kwargs['data']['coin_to_buy']),
            'min_value_to_buy':
            MinterHelper.to_bip(
                int.from_bytes(kwargs['data']['min_value_to_buy'], 'big'))
        })

        # Populate data key values as kwargs
        kwargs.update(kwargs['data'])

        return kwargs
Пример #6
0
    def _structure_to_kwargs(cls, structure):
        """ Prepare decoded structure data to instance kwargs. """

        kwargs = super()._structure_to_kwargs(structure)

        # Convert data values to verbose.
        # Data will be passed as additional kwarg
        for index, item in enumerate(kwargs['data']['txs']):
            kwargs['data']['txs'][index] = {
                'coin': MinterHelper.decode_coin_name(item[0]),
                'to': MinterHelper.prefix_add(item[1].hex(), PREFIX_ADDR),
                'value': MinterHelper.to_pip(int.from_bytes(item[2], 'big'))
            }

        # Populate data key values as kwargs
        kwargs.update(kwargs['data'])

        return kwargs