def build_computation(self,
                          message: Message,
                          transaction: BaseOrSpoofTransaction) -> BaseComputation:
        """Apply the message to the VM."""
        transaction_context = self.vm_state.get_transaction_context(transaction)
        if message.is_create:
            is_collision = self.vm_state.has_code_or_nonce(
                message.storage_address
            )

            if is_collision:
                # The address of the newly created contract has *somehow* collided
                # with an existing contract address.
                computation = self.vm_state.get_computation(message, transaction_context)
                computation._error = ContractCreationCollision(
                    "Address collision while creating contract: {0}".format(
                        encode_hex(message.storage_address),
                    )
                )
                self.vm_state.logger.debug2(
                    "Address collision while creating contract: %s",
                    encode_hex(message.storage_address),
                )
            else:
                computation = self.vm_state.get_computation(
                    message,
                    transaction_context,
                ).apply_create_message()
        else:
            computation = self.vm_state.get_computation(
                message,
                transaction_context).apply_message()

        return computation
def build_computation ( self , message : Message , transaction : BaseOrSpoofTransaction ) -> BaseComputation : transaction_context = self . vm_state . get_transaction_context ( transaction ) if message . is_create : is_collision = self . vm_state . has_code_or_nonce ( message . storage_address ) if is_collision : computation = self . vm_state . get_computation ( message , transaction_context ) computation . _error = ContractCreationCollision ( "Address collision while creating contract: {0}" . format ( encode_hex ( message . storage_address ) , ) ) self . vm_state . logger . debug2 ( "Address collision while creating contract: %s" , encode_hex ( message . storage_address ) , ) else : computation = self . vm_state . get_computation ( message , transaction_context , ) . apply_create_message ( ) else : computation = self . vm_state . get_computation ( message , transaction_context ) . apply_message ( ) return computation
Apply the message to the VM.