Esempio n. 1
0
        def fill_content(content: Dict[str, Any]) -> Dict[str, Any]:
            if validation_passes[content['kind']] == 3:
                _gas_limit, _storage_limit, _fee = gas_limit, storage_limit, fee

                if _gas_limit is None:
                    _gas_limit = OperationResult.consumed_gas(content)
                    if content['kind'] in ['origination', 'transaction']:
                        _gas_limit += gas_reserve

                if storage_limit is None:
                    _paid_storage_size_diff = OperationResult.paid_storage_size_diff(content)
                    _burned = OperationResult.burned(content)
                    _storage_limit = _paid_storage_size_diff + _burned
                    if content['kind'] in ['origination', 'transaction']:
                        _storage_limit += burn_reserve

                if _fee is None:
                    _fee = calculate_fee(content, _gas_limit, extra_size)

                current_counter = int(content['counter'])
                content.update(
                    gas_limit=str(_gas_limit),
                    storage_limit=str(_storage_limit),
                    fee=str(_fee),
                    counter=str(current_counter + self.context.get_counter_offset()),
                )

            content.pop('metadata')
            logger.debug("autofilled transaction content: %s" % content)
            return content
Esempio n. 2
0
    def test_calculate_fee(self) -> None:
        # Arrange
        consumed_gas = 94
        extra_size = 7
        reserve = 19
        expected_fee = 190

        # Act
        fee = calculate_fee(self.content, consumed_gas, extra_size, reserve)

        # Assert
        self.assertEqual(expected_fee, fee)
Esempio n. 3
0
        def fill_content(content):
            if validation_passes[content['kind']] == 3:
                consumed_gas = OperationResult.consumed_gas(
                    content) + gas_reserve
                paid_storage_size_diff = OperationResult.paid_storage_size_diff(
                    content)
                fee = calculate_fee(content, consumed_gas, extra_size)
                content.update(gas_limit=str(consumed_gas + gas_reserve),
                               storage_limit=str(paid_storage_size_diff +
                                                 burn_cap(content)),
                               fee=str(fee))

            content.pop('metadata')
            return content